papierformat eine pdf datei mittel python ermitteln

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
soma
User
Beiträge: 7
Registriert: Montag 23. Januar 2006, 08:42

papierformat eine pdf datei mittel python ermitteln

Beitragvon soma » Montag 13. März 2006, 09:45

Sicherlich ist das Thema hier ein wenig unpassend, ich versuche es jedoch trotzdem.
ich habe mehrere Pdf-dateien eines Projekts in einem Ordner
Nun habe ich mir ein kleines Pyscript geschrieben welches alle PDFdateien
ein ordners druckt.
Dies geschieht jedoch nur auf einem vordefiniertem Format, also A4 oder A3, etc.
Nun möchte das ganze so erweitern das mein Programm die Formate der PDFs erkennt und sie dann auf die spezifischen Drucker verteilt.
Also die Frage: wie ermittele ich die Pdf-Papierformate einer PDFdatei mittels
PYthon?
BlackJack

Beitragvon BlackJack » Mittwoch 15. März 2006, 06:40

Das ginge zum Beispiel mit pyPdf.

Code: Alles auswählen

from pyPdf import PdfFileReader

paper_sizes = { (842, 1190): 'A3',
                (595, 842): 'A4',
                (420, 595): 'A5',
                (729, 1032): 'B4',
                (516, 729): 'B5',
                (612, 792): 'Letter',
                (612, 1008): 'Legal' }


def main():
    pdf_file = open('valen_candyhearts.pdf')
    reader = PdfFileReader(pdf_file)
    box = reader.getPage(0).mediaBox
    pdf_file.close()

    size = (box[2] - box[0], box[3] - box[1])
    print size, paper_sizes[size]


if __name__ == '__main__':
    main()
soma
User
Beiträge: 7
Registriert: Montag 23. Januar 2006, 08:42

Beitragvon soma » Freitag 17. März 2006, 08:31

mmmhh Tja also irgendwie ist das ne komische Library...
PYPDF
bekomme immer folgende Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
 papersize.py", line 26, in ?
    main()
 papersize.py", line 15, in main
    reader = PdfFileReader(pdf_file)
  File "C:\Py\Lib\site-packages\pyPdf\pdf.py", line 209, in __init__
    self.read(stream)
  File "C:\Py\Lib\site-packages\pyPdf\pdf.py", line 319, in read
    assert line[:5] == "%%EOF"
AssertionError


ich hab mir die Klasse angeschaut und finde keine Fehler.
woran kann das denn liegen?
BlackJack

Beitragvon BlackJack » Freitag 17. März 2006, 10:30

Hm, ich habe in meinem Beispiel die PDF-Datei nicht als Binärdatei geöffnet. Das sollte man wohl besser machen.

Ansonsten ist entweder das PDF "kaputt" oder ein Fehler in pyPdf. Wenn es mit dem Binärmodus auch nicht klappt, dann solltest Du den Fehler dem Autor von pyPdf melden.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]