Ich verwende pdftotext
, um eine ASCII-Version eines PDF-Dokuments (erstellt mit LaTeX) zu erstellen, da Mitarbeiter ein einfaches Dokument in MS Word bevorzugen.
Die Klartextversion, die ich sehe, sieht gut aus, aber bei näherer Betrachtung scheint das f-Zeichen häufig falsch konvertiert zu sein, je nachdem, welche Zeichen folgen. Zum Beispiel scheinen fi und fl oft ein spezielles Zeichen zu werden, das ich hier einzufügen versuche: fi und fl.
Was ist der beste Weg, um die Ausgabe von pdftotext zu bereinigen? Ich denke, es sed
könnte das richtige Werkzeug sein, aber ich bin mir nicht sicher, wie ich diese Sonderzeichen erkennen soll.
pdftotext
von Poppler, nicht wahrpdftotex
?ebook-convert
von Calibre ( calibre-ebook.com ) in Betracht, anstattpdftotext
. Es ermöglicht die Ausgabe von einfachem Text (und einer Vielzahl anderer Formate) und verwaltet Ligaturen für Sie.siunitx
undglossaries
, und daher scheint es die beste Lösung zu sein, über das PDF zu gehen. Ich wünschte, es gäbe einen besseren Weg.Antworten:
Standardmäßig werden
pdftotext
Unicode-Daten (UTF-8) ausgegeben. Wenn Ihr Terminal oder Texteditor UTF-8 nicht unterstützt, werden Ligaturen wie "fi" und "fl" (die in Unicode als ein einzelnes Zeichen dargestellt werden können) seltsam angezeigt, wie Sie bemerkt haben.Die einfache Lösung besteht darin, anzugeben
pdftotext
, dass ASCII anstelle von Unicode ausgegeben werden soll:Dies sollte zu einer sauberen ASCII-Ausgabe führen, sodass Sie diese anschließend nicht mehr manuell bereinigen müssen.
quelle
ebook-convert
obigen Vorschlag am besten. Ihr Rat könnte das Standardverhalten von verbessernpdfottext
, aber ich denke, mein Terminal unterstützt UTF-8 undebook-convert
scheint mit hochgestellten Texten und anderen Dingen besser umzugehen.Angenommen, Sie arbeiten auf einem Unix-basierten System, könnten Sie dies auf der Ausgabe von pdftotext ausführen:
Das sollte die Ligaturen durch die einzelnen Buchstaben ersetzen, in die sie zerfallen. (Siehe meine Kommentare oben, was Ligaturen damit zu tun haben.)
Ich habe das an einer Textdatei getestet, die mit einem
pdftotext
von LaTeX generierten PDF erstellt wurde. Und es hat gut funktioniert. Wenn das LaTeX jedoch eine nicht standardmäßige Codierung oder Schriftart mit zusätzlichen Ligaturen verwendet, ist möglicherweise mehr zu tun.Sie sollten wahrscheinlich sicherstellen, dass die in Ihrem Terminal verwendete Schriftart Zeichen für die Ligaturen der f-Serie enthält. DejaVu Sans Mono ist eine gute Wahl.
quelle
sed -e 's/\\xEF\\xAC\\x80/ff/g' -e 's/\\xEF\\xAC\\x81/fi/g' -e 's/\\xEF\\xAC\\x82/fl/g' -e 's/\\xEF\\xAC\\x83/ffi/g' -e 's/\\xEF\\xAC\\x84/ffl/g' -e 's/\\xEF\\xAC\\x85/ft/g' -e 's/\\xEF\\xAC\\x86/st/g'
.