Wie konvertiere ich TXT nach PDF?

45

Ich möchte .txtDateien in konvertieren .pdf. Ich benutze das:

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

Dies führt jedoch zu einem "Fehler" - wenn die Textdatei eine sehr lange Zeile enthält, wird sie nicht umgebrochen.

Eingabetext

Screenshot der Eingabedatei

PDF ausgeben

Screenshot der Ausgabe-PDF

-

Außerdem wäre es auch großartig, wenn das Ausgabe-PDF anstelle von Textbildern Text enthalten könnte.

Ich habe viele, viele TXT-Dateien. Also nicht von Hand machen. Ich brauche eine automatische Lösung wie die oben erwähnte.

LanceBaynes
quelle
1
Sie sollten for ONELINE in *anstelle von verwenden ls | while read ONELINE. Lesen Sie dies .
Ich habe nicht genug Repräsentanten, um zu antworten, aber ich möchte nur hinzufügen, dass der Kate-Editor in KDE-Kubuntu Sie auf einem PDF- "Drucker" drucken können, mit dem Sie den Dateinamen auswählen und eine PDF-Datei erstellen können.
Kathreadler

Antworten:

21

Eine Methode besteht darin, CUPS und den PDF-Pseudodrucker zu verwenden, um den Text in eine PDF-Datei zu "drucken".

Eine andere Möglichkeit ist die Verwendung von enscript zum Codieren in Postscript und die anschließende Konvertierung von Postscript in PDF mithilfe der ps2pdf-Datei aus dem Ghostscript-Paket.

Keith
quelle
2
Dank .: pastebin.com/raw.php?i=XQnRjtnR
LanceBaynes
3
Hat niemand UTF-8-Unterstützung für Enscript?
LanceBaynes
2
@LanceBaynes Cedilla oder gnome-u2ps oder u2ps .
Gilles 'SO- hör auf böse zu sein'
34

Pandoc kann das. Es konzentriert sich mehr auf das Konvertieren von markierten Texten in verschiedene Formate, sollte aber keine Probleme mit einfachem Klartext haben.

pandoc input.txt -o output.pdf
Übelsuppe
quelle
3
Sieht gut aus, aber die enorme Menge an Haskell-Abhängigkeiten, die Pandoc will, hat mich verängstigt: /
lkraav
1
@Ikraav Ja, es ist viel zu viel für diesen Zweck, aber wenn Sie Markdown oder HTML (oder eines der anderen Markups, die es als Eingabe akzeptieren kann) haben, wäre Pandoc der richtige Weg. PDF erfordert sogar noch mehr Abhängigkeiten - intern verwendet pandoc LaTeX für die Konvertierung in PDF, daher müssen Sie dieses Zeug auch installieren -, aber die Qualität ist sehr gut (ich verwende es hauptsächlich für die Konvertierung von Textabschriften in PDF und EPUB) ).
Evilsoup
pandoc (1.16.0.2) ersetzt meine Zeilenumbrüche durch Tabulatoren.
Sparhawk
17

LibreOffice / OpenOffice sowie die meisten anderen Textverarbeitungsprogramme (Abiword) können dies recht einfach.

Es gibt ein kleines Hilfsprogramm unoconv, das die LibreOffice-Codebasis verwendet, um Dateiformatkonvertierungen in der Befehlszeile durchzuführen. Es kann eine beliebige Kombination von Formaten lesen und schreiben , dass Libreoffice kann und macht es sehr einfach Dinge wie zu tun , docum pdfauf der Kommandozeile Konvertierungen. Einfach txtzu pdfwäre leicht für sie.

Caleb
quelle
Interessant. Wusste nicht unoconvund wusste nicht einmal, dass OO APIs hat.
Faheem Mitha
Erzeugt qualitativ hochwertige Ergebnisse, aber für mich (ich verwende Version 0.5-1 (Debian Wheezy)) muss ich zuerst einen unoconv --listener &Befehl ausführen .
Digger
12

Sie können Text mit Vim in eine PostScript-Datei drucken und dann in eine PDF-Datei konvertieren, sofern Vim mit dieser +postscriptFunktion kompiliert wurde .

Dazu verwenden Sie den :hardcopy > {filename}Befehl. Zum Beispiel können Sie öffnen example.txtund ausführen

:hardcopy > example.ps

Dadurch wird eine Datei erstellt, example.psdie den gesamten Text in enthält example.txt. Die Kopfzeile jeder Seite in der PostScript-Datei enthält den ursprünglichen Dateinamen und die Seitennummer.

Anschließend können Sie die PostScript-Datei mit dem folgenden Befehl in eine PDF-Datei konvertieren

ps2pdf example.ps

was schaffen wird example.pdf.

Sie können dasselbe direkt von einem Terminal aus tun (ohne mit Vim zu interagieren), indem Sie den folgenden Befehl verwenden

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

Dies wird example.txtin Vim geöffnet und führt den an die -cOption übergebenen Befehl aus. In diesem Fall handelt es sich um einen hardcopyBefehl, auf den ein quit ( q) -Befehl folgt . Dann wird ausgeführt ps2pdf, um die endgültige Datei zu erstellen.

Weitere Optionen finden Sie in den Hilfedateien mit :help :hardcopy.

Gonçalo Ribeiro
quelle
:hardcopyerzeugt eine PostScript-Datei, egal ob ich .pdf oder .ps-Erweiterungen hinzufüge. Ich habe :hardcpy > example.pdfund mit less example.pdfin Shell konnte ich sehen, dass der Datei-Header war %!PS-Adobe-3.0.
Taro
@taro, du hast recht. Zu der Zeit, als ich das schrieb, bemerkte ich das nicht. Ich habe meine Antwort aktualisiert. Der endgültige Befehl könnte verbessert werden, aber ich kann das jetzt noch nicht schreiben. Könnte es später machen.
Gonçalo Ribeiro
10

Verwenden Sie einfach das kostenlose und OpenSource-fähige text2pdf . Unter dem Link können Sie den Quellcode oder die vorkompilierte Binärdatei für Windows, Solaris, DOS herunterladen.

Ich kann es problemlos in AIX OS verwenden. Sehr einfach zu kompilieren, speichern Sie einfach die Datei text2pdf.c und Makefile im selben Verzeichnis und Typ make. (hier setze ich die Variable CC = gcc unter AIX, unter Linux wird dies kein Problem sein)

$ ./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
quelle
3
Gibt es eine utf8-fähige Gabel dafür?
Wolfgang Fahl
7

Es gibt auch einen UTF-8 in PostScript Konverter paps.

tunit
quelle
3
Es funktioniert und mit TrueType-Schriftarten, es sollte jedoch beachtet werden, dass ein Dokument mit Bitmaps als Ergebnis erstellt wird, anstatt die Schriftarten nativ zu verwenden. (Ich denke, das liegt an Postscript?)
njsg
Konnte nicht auf Cygwin32 auf meinem Windoze kompilieren ...
Texnezio
5

Verwenden Sie enscript, um eine .ps-Datei zu erstellen, und dann ps2pdf (oder ps2pdfwr), um in .pdf zu konvertieren

Das folgende Skript erstellt eine PDF-Datei mit einem linken und einem rechten Rand von 10 Pkt. Und verwendet eine Courier-Schriftart, die 7,3 Pkt. Breit und 10 Pkt. Hoch ist, sodass ein 132-Farben-Ausdruck auf eine 8 1/2 x 11-Seite passt. Verwenden Sie enscript, um Ihre Seite, Schriftarten usw. einzurichten.

$ enscript -B --margins=10:10: -o outputfile.ps -f [email protected]/10 inputfile
$ ps2pdfwr outputfile.ps newfile.pdf
$ rm outputfile.ps
Dan Walker
quelle
5
Zu beachten ist, dass enscript utf-8 nicht unterstützt.
Maxschlepzig
3

LibreOffice funktioniert dafür. Verwendungszweck:

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

Der Ausgang wird aufgerufen file.pdf.

jbrock
quelle
Gibt es eine Möglichkeit, die Schriftgröße in der resultierenden PDF-Datei zu ändern?
Evg
@Evg Ich kenne keine Möglichkeit, dies mit dieser Methode von LibreOffice zu tun.
Jbrock