TXT nasıl PDF'ye dönüştürülür?


45

.txtDosyaları dönüştürmek istiyorum .pdf. Bunu kullanıyorum:

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

Ancak bu bir "hata" üretir - metin dosyasında çok uzun bir satır varsa, kaydırılmaz.

Giriş metni

Giriş dosyasının ekran görüntüsü

PDF çıktısı

Çıktı PDF’nin ekran görüntüsü

-

Ayrıca, çıktı PDF'nin metin görüntüleri yerine metin içeriyor olması da harika olurdu.

Çok-çok-TXT dosyam var. Yani el ile yapmak istemiyorum. Yukarıda bahsettiğim gibi otomatik bir çözüme ihtiyacım var.


1
Bunun for ONELINE in *yerine kullanmalısın ls | while read ONELINE. Bunu oku .

Cevap verecek kadar cevabım yok, ama sadece KDE kubuntu'daki Kate editörünün PDF "yazıcısına" yazdırabildiğini eklemek istiyorum.
mathreadler 8:18

Yanıtlar:


21

Bir yöntem, metni bir PDF dosyasına "yazdırmak" için CUPS ve PDF psuedo-printer kullanmaktır.

Bir diğeri ise, script'e kodlamak için enscript kullanmak ve ardından ghostscript paketinden ps2pdf dosyasını kullanarak postscript'ten PDF'ye dönüştürmektir.



3
Hiç kimse enscript için UTF-8 desteğine sahip değil mi?
LanceBaynes


34

pandoc bunu yapabilir. İşaretlenmiş metni çeşitli biçimlere dönüştürmeye daha fazla odaklanır, ancak basit düz metinle hiçbir sorunu olmamalıdır.

pandoc input.txt -o output.pdf

3
Güzel görünüyor, ama büyük miktarda hasel bağımlılıkları pandok beni korkutmak istiyor: /
lkraav

1
@Ikraav evet, bu amaç için çok aşırı bir öneme sahip, ancak markdown veya HTML (ya da diğer işaretlemelerden herhangi biri girdi olarak kabul edebilir) varsa, pandoc gitmenin yolu olacaktır. PDF aslında daha fazla bağımlılık gerektirir - dahili olarak, pandoc, LaTeX'i PDF'ye dönüştürmek için kullanır, bu yüzden bunları da yüklemeniz gerekir - ancak kalitesi çok iyidir (öncelikle işaretleme metnini PDF ve EPUB'a dönüştürmek için kullanıyorum) ).
evilsoup

pandoc (1.16.0.2), yeni satırlarımı sekmelerle değiştiriyor.
Sparhawk,

17

LibreOffice / OpenOffice ve diğer birçok kelime işlemcisi (Abiword) bunu kolayca yapabilir.

unoconvKomut satırında dosya formatı dönüştürmelerini yapmak için LibreOffice kod tabanını kullanan küçük bir yardımcı program vardır . O okumak ve o LibreOffice can biçimlerinden herhangi kombinasyonunu yazabilir ve çok kolay gibi şeyler yapmak kılar dociçin pdfkomut satırında dönüşüm. Basit txtiçin pdfbunun için kolay olacaktır.


İlginç. OO'nun unoconvAPI'leri olduğunu bilmiyor ve bilmiyorduk bile.
Faheem Mitha

Yüksek kalitede sonuçlar verir, ancak benim için (sürüm 0.5-1 (Debian Wheezy) kullanıyorum), önce bir unoconv --listener &komut çalıştırmam gerekiyor .
Kazıcı

12

Vim'i kullanarak bir PostScript dosyasına metin yazdırabilir ve ardından Vim +postscriptözelliği ile derlendiği sürece onu PDF'ye dönüştürebilirsiniz .

Bunun için :hardcopy > {filename}komutu kullanın. Örneğin açıp example.txtçalıştırabilirsiniz

:hardcopy > example.ps

example.pstüm metni içeren bir dosya oluşturacaktır example.txt. PostScript dosyasındaki her sayfanın başlığı orijinal dosya adını ve sayfa numarasını içerecektir.

Ardından, aşağıdaki komutu kullanarak PostScript dosyasını PDF'ye dönüştürebilirsiniz.

ps2pdf example.ps

hangi yaratacak example.pdf.

Aşağıdaki komutu kullanarak doğrudan bir terminalden (Vim ile etkileşime girmeden) yapabilirsiniz.

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

Bu example.txtVim'de açılır ve -cbu durumda hardcopybir quit ( q) komutu tarafından takip edilen bir komut olan seçeneğe iletilen komutu yürütür . Ardından ps2pdfson dosyayı üretmek için çalışır.

Daha fazla seçenek için yardım dosyalarına bakın :help :hardcopy.


:hardcopyne olursa olsun ben .pdf veya .ps uzantıları eklemek bir PostScript dosyası üretir. Yaptım :hardcpy > example.pdfve less example.pdfkabuğumla dosya başlığının olduğunu görebildim %!PS-Adobe-3.0.
taro

@ taro, haklısın. Bunu yazdığım sırada bunu farketmedim. Cevabımı güncelledim. Son komut geliştirilebilir, ancak şu anda bunu yazamam. Daha sonra yapabilir.
Gonçalo Ribeiro

10

Ücretsiz ve açık kaynak kodlu text2pdf dosyasını kullanın . Bağlantıda pencereleri, solaris, dos kaynağını veya önceden derlenmiş ikili dosyasını indirebilirsiniz.

Sorunsuz bir şekilde AIX işletim sistemine kullanabiliyorum. Derlemesi çok basit, sadece text2pdf.c ve Makefile dosyalarını aynı dizine kaydedin ve yazın make. (burada AIX üzerinde CC = gcc değişkenini ayarlıyorum, linux'da bu bir sorun olmayacak)

$ ./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 yetenekli bir çatal var mı?
Wolfgang Fahl

7

Ayrıca bir PostScript dönüştürücü denilen bir UTF-8 vardır paps.


3
Çalışır ve TrueType yazı tipleriyle çalışır, ancak yazı tiplerini yerel kullanmak yerine bitmapli bir sonuç ürettiği belirtilmelidir. (Sanırım bunun nedeni Postscript?)
njsg

Benim Windoze benim Cygwin32 üzerinde derlenemedi ...
texnezio

5

Bir .ps dosyası oluşturmak için enscript'i, ardından .pdf'ye dönüştürmek için ps2pdf (veya ps2pdfwr) kullanın.

Aşağıdaki komut dosyası, 10 punto sol ve sağ kenar boşluklu bir .pdf dosyası oluşturur ve 7,3 punto genişliğinde ve 10 punto yüksekliğinde bir kurye fontu kullanır, bu nedenle bir 8,2 X 11 sayfaya 132 sütun yazdırması sığar. Sayfanızı, yazı tiplerinizi vb. Ayarlamak için enscript kullanın.

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

5
Unutulmaması gereken bir şey: enscript utf-8'i desteklemiyor.
maxschlepzig

2

LibreOffice bunun için çalışıyor. Kullanımı:

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

Çıkış çağrılacak file.pdf.


Çıkan PDF'de yazı tipi boyutunu değiştirmenin bir yolu var mı?
Evg,

@Evg LibreOffice kullanmanın bu yöntemi ile bunu yapmanın bir yolunu bilmiyorum.
jbrock
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.