Eine korrekte PDF-Datei wurde von einem Skript erstellt (dessen Ausgabe leider nicht direkt in stdout geschrieben werden kann). Angenommen, der Dateiname lautet 'myfile.pdf'.Wie drucke ich eine PDF-Datei mit Python auf Standout?
Ich möchte den exakten PDF-Inhalt auf stdout drucken. (Keine Verarbeitung dazwischen).
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
with open('myfile.pdf', mode='rb') as pdf_file:
for line in pdf_file:
print(str(line))
ich den 'rb'
Modus dies im Textmodus verwenden, führt zu einem UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 10: invalid continuation byte
, da dem Lesen:
Um dies zu testen, habe ich diesen kurzen read_pdf.py
Skript geschrieben. Es sieht also nicht so aus, als gäbe es keine andere Alternative (wenn der Textmodus nicht funktioniert, dann der Binärmodus).
Nun ist das Problem natürlich, dass die Ausgabe besteht aus b'blablabla'
Zeilen, die nicht als PDF-Datei verwendet werden können. Um zu überprüfen, es, leite ich read_pdf.py
in eine Datei und versuchen, es zu öffnen, mit einem PDF-Viewer und natürlich funktioniert es nicht:
$ ./read_pdf.py > test_output.pdf
$ evince test_output.pdf
Syntax Error: Couldn't find trailer dictionary
Syntax Error: Couldn't read xref table
Syntax Error: Couldn't find trailer dictionary
Syntax Error: Couldn't read xref table
Also, was ist der richtige Weg, es zu tun? Ich habe keine pdf dedizierte Bibliothek überprüft, weil es nicht notwendig aussieht, ich würde gerne in der Lage sein, korrekte Inhalte zu lesen und zu drucken, ohne dafür eine PDF-Bibliothek zu importieren.
chardet.detect(pdf_file.read())
konnte nicht helfen (es zurückgegeben {'encoding': None, 'confidence': 0.0}
).
EDIT: * Ich suche eine Lösung für python3 und für ein Linux/Unix-System, nicht Windows. * Ich muss wissen, wie dies in Python zu tun, weil es tatsächlich Teil eines größeren Projekts vollständig in Python geschrieben
A Warum kannst du nicht einfach 'cat some.pdf'? – armandino
Mögliche Duplikat: http://StackOverflow.com/Questions/2374427/Python-2-x-Write-Binary-Output-To-Stdout –
@ Armandino, weil es tatsächlich Teil eines größeren Projekts vollständig in Python geschrieben – zezollo