วิธีแปลง TXT เป็น PDF


45

ฉันต้องการแปลงไฟล์ไปยัง.txt .pdfฉันใช้สิ่งนี้:

ls | while read ONELINE; do convert -density 400 "$ONELINE" "$(echo "$ONELINE" | sed 's/.txt/.pdf/g')"; done

แต่นี่จะทำให้เกิด "ข้อผิดพลาด" หนึ่งรายการ - หากมีบรรทัดยาวมากในไฟล์ข้อความก็จะไม่ถูกพันทับ

ป้อนข้อความ

สกรีนช็อตของไฟล์อินพุต

เอาท์พุท PDF

สกรีนช็อตของ PDF เอาต์พุต

-

นอกจากนี้จะเป็นการดีถ้า PDF ที่ออกมานั้นมีข้อความแทนที่จะเป็นรูปภาพของข้อความ

ฉันมีไฟล์ TXT จำนวนมาก ดังนั้นไม่ต้องการทำด้วยมือ ฉันต้องการโซลูชันอัตโนมัติเช่นเดียวกับที่กล่าวไว้ข้างต้น


1
คุณควรใช้แทนfor ONELINE in * ls | while read ONELINEอ่านนี้

ฉันมีตัวแทนไม่เพียงพอที่จะตอบคำถาม แต่ฉันแค่ต้องการเพิ่มตัวแก้ไข Kate ใน KDE kubuntu คุณสามารถพิมพ์ลงใน "เครื่องพิมพ์" PDF ซึ่งให้คุณเลือกชื่อไฟล์และสร้างเป็น. pdf
คณิตศาสตร์ที่

คำตอบ:


21

วิธีหนึ่งคือการใช้ CUPS และ PDF psuedo-printer เพื่อ "พิมพ์" ข้อความไปยังไฟล์ PDF

อีกวิธีหนึ่งคือใช้enscriptเพื่อเข้ารหัสเป็น postscript จากนั้นแปลงจาก postscript เป็น PDF โดยใช้ไฟล์ ps2pdf จากแพ็คเกจ ghostscript



3
ไม่มีใครได้รับการสนับสนุน UTF-8 สำหรับ enscript หรือไม่
LanceBaynes

2
@LanceBaynes cedillaหรือgnome-u2psหรือu2ps
Gilles 'หยุดชั่วร้าย'

34

pandocสามารถทำได้ มันเน้นที่การแปลงข้อความที่ทำเครื่องหมายเป็นรูปแบบต่าง ๆ แต่ควรไม่มีปัญหากับข้อความธรรมดา

pandoc input.txt -o output.pdf

3
ดูดี แต่จำนวนมหาศาลของการพึ่งพา haskell pandoc ต้องการทำให้ฉันกลัว: /
lkraav

1
@Ikraav ใช่มันเกินความจริงแล้วสำหรับจุดประสงค์นี้ แต่ถ้าคุณมี markdown หรือ HTML (หรือมาร์กอัปอื่น ๆ ก็สามารถยอมรับได้เป็นอินพุต) pandoc จะเป็นวิธีที่จะไป PDF ต้องการการพึ่งพามากขึ้น - ภายใน, pandoc ใช้ LaTeX เพื่อแปลงเป็น PDF ดังนั้นคุณต้องติดตั้งสิ่งนั้นด้วย - แต่คุณภาพดีมาก (ฉันใช้มันเพื่อแปลงข้อความ markdown'd เป็น PDF และ EPUB เป็นหลัก )
evilsoup

pandoc (1.16.0.2) แทนที่บรรทัดใหม่ของฉันด้วยแท็บ
Sparhawk

17

LibreOffice / OpenOffice รวมถึงโปรแกรมประมวลผลคำอื่น ๆ (Abiword) สามารถทำสิ่งนี้ได้อย่างง่ายดาย

มียูทิลิตี้เล็กน้อยที่เรียกunoconvว่าใช้รหัสฐาน LibreOffice เพื่อทำการแปลงรูปแบบไฟล์ในบรรทัดคำสั่ง มันสามารถอ่านและเขียนการรวมกันของรูปแบบใด ๆ ที่ LibreOffice สามารถทำได้และทำให้ง่ายต่อการทำสิ่งต่าง ๆ เช่นdocการpdfแปลงในบรรทัดคำสั่ง ง่ายtxtที่pdfจะง่ายสำหรับมัน


น่าสนใจ ไม่ทราบเกี่ยวกับunoconvและไม่รู้ด้วยซ้ำว่า OO มี API
Faheem Mitha

สร้างผลลัพธ์คุณภาพสูง แต่สำหรับฉัน (ฉันใช้เวอร์ชัน 0.5-1 (Debian Wheezy)) ฉันต้องเรียกใช้unoconv --listener &คำสั่งก่อน
ผู้ขุด

12

คุณสามารถพิมพ์ข้อความเป็นไฟล์ PostScript โดยใช้ Vim แล้วแปลงเป็น PDF ได้ตราบใดที่ Vim ได้รับการคอมไพล์ด้วย+postscriptฟีเจอร์

สำหรับสิ่งนี้คุณใช้:hardcopy > {filename}คำสั่ง ตัวอย่างเช่นคุณสามารถเปิดexample.txtและดำเนินการ

:hardcopy > example.ps

ซึ่งจะผลิตไฟล์ที่มีข้อความทั้งหมดในexample.ps example.txtส่วนหัวของแต่ละหน้าในไฟล์ PostScript จะมีชื่อไฟล์ดั้งเดิมและหมายเลขหน้า

จากนั้นคุณสามารถแปลงไฟล์ PostScript เป็น PDF โดยใช้คำสั่งต่อไปนี้

ps2pdf example.ps

example.pdfซึ่งจะสร้าง

คุณสามารถทำสิ่งเดียวกันได้โดยตรงจากเทอร์มินัล (โดยไม่ต้องโต้ตอบกับ Vim) โดยใช้คำสั่งต่อไปนี้

vim example.txt -c "hardcopy > example.ps | q"; ps2pdf example.ps

สิ่งนี้เปิดexample.txtใน Vim และดำเนินการคำสั่งที่ส่งไปยัง-cตัวเลือกซึ่งในกรณีนี้คือhardcopyคำสั่งตามด้วยคำสั่ง quit ( q) จากนั้นมันจะเรียกใช้งานps2pdfเพื่อสร้างไฟล์สุดท้าย

:help :hardcopyสำหรับตัวเลือกเพิ่มเติมดูไฟล์ความช่วยเหลือด้วย


:hardcopyสร้างไฟล์ PostScript ไม่ว่าฉันจะเพิ่มนามสกุล. pdf หรือ. ps ฉันไม่ได้:hardcpy > example.pdfและในเปลือกฉันจะได้เห็นว่าส่วนหัวของไฟล์นั้นless example.pdf %!PS-Adobe-3.0
เผือก

@ ทาโรคุณถูกต้อง ในขณะที่ฉันเขียนสิ่งนี้ฉันไม่ได้สังเกตว่า ฉันปรับปรุงคำตอบของฉัน คำสั่งสุดท้ายสามารถปรับปรุงได้ แต่ฉันไม่สามารถเขียนได้ในขณะนี้ อาจทำในภายหลัง
Gonçalo Ribeiro

10

เพียงแค่ใช้text2pdfซึ่งฟรีและ opensource ที่ลิงค์คุณสามารถดาวน์โหลดซอร์สหรือไบนารีที่รวบรวมไว้ล่วงหน้าสำหรับ windows, solaris, dos

ฉันสามารถใช้กับระบบปฏิบัติการ AIX ได้โดยไม่มีปัญหา ง่ายมากในการรวบรวมเพียงบันทึก text2pdf.c และ Makefile ลงในไดเรกทอรีและประเภทmakeเดียวกัน (ที่นี่ฉันตั้งตัวแปร CC = gcc บน AIX บน linux สิ่งนี้จะไม่เป็นปัญหา)

$ ./text2pdf  -h

text2pdf [options] [filename]

  text2pdf makes a 7-bit clean PDF file (version 1.1) from any input file.
  It reads from standard input or a named file, and writes the PDF file
  to standard output.

  There are various options as follows:

  -h            show this message
  -f<font>      use PostScript <font> (must be in standard 14, default: Courier)
  -I            use ISOLatin1Encoding
  -s<size>      use font at given pointsize (default 10)
  -v<dist>      use given line spacing (default 12 points)
  -l<lines>     lines per page (default 60, determined automatically
                if unspecified)
  -c<chars>     maximum characters per line (default 80)
  -t<spaces>    spaces per tab character (default 8)
  -F            ignore formfeed characters (^L)
  -A4           use A4 paper (default Letter)
  -A3           use A3 paper (default Letter)
  -x<width>     independent paper width in points
  -y<height>    independent paper height in points
  -2            format in 2 columns
  -L            landscape mode

  Note that where one variable is implied by two options, the second option
  takes precedence for that variable. (e.g. -A4 -y500)
  In landscape mode, page width and height are simply swapped over before
  formatting, no matter how or when they were defined.

text2pdf v1.1 (c) Phil Smith, 1996
$ ./text2pdf  -f"Courier" -s6 -c216 -v6 -L -A4 ./rep3.txt >rep3.pdf

3
มีส้อมที่มีความสามารถ utf8 ของสิ่งนี้หรือไม่?
Wolfgang Fahl

7

นอกจากนี้ยังมี UTF-8 เพื่อแปลง PostScript papsเรียกว่า


3
มันใช้งานได้และด้วยแบบอักษร TrueType แต่ควรสังเกตว่ามันสร้างเอกสารที่มีบิตแมปเป็นผลลัพธ์แทนที่จะใช้แบบอักษรโดยกำเนิด (ฉันเดาว่านั่นเป็นเพราะ Postscript?)
njsg

ไม่สามารถรวบรวมบน Cygwin32 บน Windoze ของฉัน ...
texnezio

5

ใช้ enscript เพื่อสร้างไฟล์. ps จากนั้น ps2pdf (หรือ ps2pdfwr) เพื่อแปลงเป็น. pdf

สคริปต์ต่อไปนี้สร้างไฟล์. pdf ที่มีระยะขอบซ้ายและขวา 10 pt และใช้ฟอนต์ courier ที่มีความกว้าง 7.3 pts และ 10 pts สูงดังนั้นการพิมพ์ 132 col เหมาะกับหน้า 8 1/2 X 11 ใช้ enscript เพื่อตั้งค่าหน้าแบบอักษรของคุณ ฯลฯ

$ enscript -B --margins=10:10: -o outputfile.ps -f Courier@7.3/10 inputfile
$ ps2pdfwr outputfile.ps newfile.pdf
$ rm outputfile.ps

5
สิ่งที่ควรทราบ: enscript ไม่รองรับ utf-8
maxschlepzig

2

LibreOffice ใช้งานได้กับสิ่งนี้ การใช้งาน:

libreoffice --convert-to "pdf" file.txt

file.pdfเอาท์พุทจะถูกเรียกว่า


มีวิธีการเปลี่ยนขนาดตัวอักษรใน PDF ที่เป็นผลลัพธ์หรือไม่?
Evg

@Evg ฉันไม่ทราบวิธีการใช้ LibreOffice
jbrock
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.