Bagaimana cara mengubah TXT ke PDF?

45

Saya ingin mengonversi .txtfile menjadi .pdf. Saya menggunakan ini:

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

Tapi ini menghasilkan satu "kesalahan" - jika ada baris yang sangat panjang di file teks, itu tidak bisa dibungkus.

Masukkan teks

Cuplikan layar file input

Keluarkan PDF

Cuplikan layar dari output PDF

-

Selain itu, akan lebih bagus jika output PDF dapat berisi teks, bukan gambar teks.

Saya punya banyak-banyak-banyak file TXT. Jadi, tidak ingin melakukannya dengan tangan. Saya memerlukan solusi otomatis, seperti yang saya sebutkan di atas.

LanceBaynes
sumber
1
Anda harus menggunakan for ONELINE in *bukan ls | while read ONELINE. Baca ini .
Saya tidak punya cukup tenaga untuk menjawab, tetapi saya hanya ingin menambahkan bahwa editor Kate di KDE kubuntu Anda dapat mencetak ke "printer" PDF yang memungkinkan Anda memilih nama file dan menghasilkan .pdf.
mathreadler

Jawaban:

21

Salah satu metode adalah dengan menggunakan CUPS dan PDF psuedo-printer untuk "mencetak" teks ke file PDF.

Lain adalah menggunakan enskrip untuk menyandikan ke postscript dan kemudian mengkonversi dari postscript ke PDF menggunakan file ps2pdf dari paket ghostscript.

Keith
sumber
2
terima kasih .: pastebin.com/raw.php?i=XQnRjtnR
LanceBaynes
3
apakah ada yang punya dukungan UTF-8 untuk enskrip?
LanceBaynes
2
@ LanceBaynes Cedilla , atau gnome-u2ps , atau u2ps .
Gilles 'SANGAT berhenti menjadi jahat'
34

pandoc dapat melakukan ini. Ini lebih fokus pada konversi teks yang ditandai menjadi berbagai format, tetapi seharusnya tidak ada masalah dengan plaintext sederhana.

pandoc input.txt -o output.pdf
Evilsoup
sumber
3
Terlihat bagus, tapi sejumlah besar pandoc dependensi haskell ingin membuatku takut: /
lkraav
1
@ Ikraav ya, itu cara yang berlebihan untuk tujuan ini, tetapi jika Anda memiliki penurunan harga atau HTML (atau salah satu markup lain yang dapat diterima sebagai masukan) pandoc akan menjadi cara untuk pergi. PDF sebenarnya membutuhkan lebih banyak dependensi - secara internal, pandoc menggunakan LaTeX untuk mengkonversi ke PDF, jadi Anda perlu menginstal hal-hal itu juga - tetapi kualitasnya sangat baik (saya menggunakannya untuk mengonversi teks yang di-markdown ke PDF dan EPUB, terutama ).
evilsoup
pandoc (1.16.0.2) menggantikan baris baru saya dengan tab.
Sparhawk
17

LibreOffice / OpenOffice serta sebagian besar pengolah kata lainnya (Abiword) dapat melakukan ini dengan mudah.

Ada sedikit utilitas yang disebut unoconvyang menggunakan basis kode LibreOffice untuk melakukan konversi format file pada baris perintah. Hal ini dapat membaca dan menulis setiap kombinasi dari format yang LibreOffice bisa dan membuatnya sangat mudah untuk melakukan hal-hal seperti docuntuk pdfkonversi pada baris perintah. Sederhana txtuntuk pdfmenjadi mudah untuk itu.

Caleb
sumber
Menarik. Tidak tahu tentang unoconvdan bahkan tidak tahu OO memiliki API.
Faheem Mitha
Menghasilkan hasil berkualitas tinggi, tetapi, bagi saya (saya menggunakan versi 0.5-1 (Debian Wheezy)), saya harus terlebih dahulu menjalankan unoconv --listener &perintah.
Digger
12

Anda dapat mencetak teks ke file PostScript menggunakan Vim dan kemudian mengonversinya menjadi PDF, selama Vim dikompilasi dengan +postscriptfitur tersebut.

Untuk ini, Anda menggunakan :hardcopy > {filename}perintah. Misalnya Anda dapat membuka example.txtdan menjalankan

:hardcopy > example.ps

yang akan menghasilkan file yang example.psberisi semua teks dalam example.txt. Header setiap halaman dalam file PostScript akan berisi nama file asli dan nomor halaman.

Kemudian Anda dapat mengubah file PostScript menjadi PDF dengan menggunakan perintah berikut

ps2pdf example.ps

yang akan dibuat example.pdf.

Anda dapat melakukan hal yang sama langsung dari terminal (tanpa berinteraksi dengan Vim) dengan menggunakan perintah berikut

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

Ini terbuka example.txtdi Vim dan mengeksekusi perintah yang diteruskan ke -copsi, yang dalam hal ini adalah hardcopyperintah yang diikuti oleh perintah quit ( q). Kemudian dijalankan ps2pdfuntuk menghasilkan file terakhir.

Untuk opsi lebih lanjut lihat file bantuan dengan :help :hardcopy.

Gonçalo Ribeiro
sumber
:hardcopymenghasilkan file PostScript tidak peduli saya menambahkan ekstensi .pdf atau .ps. Saya lakukan :hardcpy > example.pdfdan dengan less example.pdfdi shell saya bisa melihat bahwa header file itu %!PS-Adobe-3.0.
talas
@taro, Anda benar. Pada saat saya menulis ini, saya tidak memperhatikannya. Saya memperbarui jawaban saya. Perintah terakhir dapat ditingkatkan, tetapi saya tidak dapat menulisnya sekarang. Mungkin nanti.
Gonçalo Ribeiro
10

Cukup gunakan text2pdf , yang gratis dan opensource. Di tautan Anda dapat mengunduh sumber atau biner yang telah dikompilasi sebelumnya untuk windows, solaris, dos.

Saya dapat menggunakannya ke AIX OS tanpa masalah. Sangat mudah untuk dikompilasi, cukup simpan text2pdf.c dan Makefile ke dalam direktori dan jenis yang sama make. (di sini saya mengatur variabel CC = gcc pada AIX, di linux ini tidak akan menjadi masalah)

$ ./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
ceinmart
sumber
3
adakah garpu utf8 yang mampu melakukan ini?
Wolfgang Fahl
7

Ada juga konverter UTF-8 ke PostScript yang disebut paps.

tunit
sumber
3
Ini berfungsi, dan dengan font TrueType, tetapi harus dicatat bahwa itu menghasilkan dokumen dengan bitmap sebagai hasilnya, alih-alih menggunakan font secara asli. (Saya kira itu karena Postscript?)
njsg
Tidak dapat mengompilasinya di Cygwin32 di Windoze saya ...
texnezio
5

Gunakan enkrip untuk membuat file .ps, lalu ps2pdf (atau ps2pdfwr) untuk mengonversi menjadi .pdf

Script berikut membuat file .pdf dengan margin 10 pt kiri dan kanan, dan menggunakan font kurir yang lebar 7,3 pts dan tinggi 10 pts, sehingga cetakan 132 col cocok untuk halaman 8 1/2 X 11. Gunakan enscript untuk mengatur halaman Anda, font, dll.

$ enscript -B --margins=10:10: -o outputfile.ps -f [email protected]/10 inputfile
$ ps2pdfwr outputfile.ps newfile.pdf
$ rm outputfile.ps
Dan Walker
sumber
5
Satu hal yang perlu diperhatikan: enskrip tidak mendukung utf-8.
maxschlepzig
3

LibreOffice berfungsi untuk ini. Pemakaian:

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

Output akan dipanggil file.pdf.

jbrock
sumber
Apakah ada cara untuk mengubah ukuran font dalam PDF yang dihasilkan?
Evg
@ Evg Saya tidak tahu cara untuk melakukannya dengan metode ini menggunakan LibreOffice.
jbrock