powerbook_blog

klein, praktisch, unverdaulich seit 2004

PHP: HTML To PDF Conversion ( HTML_ToPDF html2ps )

| 6 Kommentare

Heute morgen steht der Chef in meinem Büro. Er hätte da eine Liste mit 1500 Links. Ob es möglich wäre, all diese Seiten in jeweils ein PDF zu schreiben. Sonst müsste das die Kollegin manuell erledigen. M A N U E L L ! Ich bin ein Menschenfreund, also habe ich ihm gesagt, dass ich mal gucke, was ich da so finde.

Meine erste Idee zielte ganz klar in Richtung PHP. Irgendein halbfertiges Script finden und auf meine Bedürfnisse wandeln. HTML_ToPDF kommt da so als kleine, knuffe PHP-Klasse darher. Im Prinzip ist die Klasse aber nur ein kleiner Aufsatz, der das PERL-Script html2ps iVm ps2pdf bedient.

Nun funktioniert das zwar tendenziell, aber eher schlecht als recht. Und das liegt hauptsächlich am CSS-Handling der PHP-Klasse. Die ist nämlich eher nachlässig geschrieben. Wer sich damit beschäftigen muss, der sollte sogleich sein Augenmerk auf die Funktion _getCSSFromFile lenken. Sofern inline-CSS verwendet wird, ignoriert das Script per link eingebundene CSS-Dateien und selbst von denen wird nur die erste gefundene verwendet.

Dies ist ja nicht so wirklich tragisch, das kann man schnell beheben. Auch, dass man dem Script beibringt, nur das CSS zu verwenden, was dem Ausgabemedium print entspricht, ist eher einfach. Aber danch scheitert es dann doch irgendwo recht bitter. html2ps soll zwar angeblich CSS verstehen, aber ich bin mir da nicht so sicher.

Hat jemand eine andere nette Idee? ich dachte ich lasse den Automator auf Safari los, aber irgendwie scheint das Ding ja doch recht beschränkt. Und bevor ich jetzt wieder so ein dusseliges AppleScript schreibe, lass ich es dann doch lieber die Kollegin manuell machen …

6 Kommentare

  1. Wir benutzen FPDF (fpdf.org), machen damit aber auch keine HTML2PDF-Sachen. Aber das ist doch auch nicht wirklich nötig, oder?

  2. Ne. Nötig nicht, aber praktisch zT schon. Aber das ist vielleicht auch so eine Seltsamkeit unserer Branche hier. Ich sage nur Strukturierter Datenaustausch … Strukturiert? Daten? Austausch?

    Weiha.

  3. WGET mit einem Level Tiefe + alle markieren und Drucken als PDF?

  4. Wie wärs mit: Per PHP Liste stinknormal als HTML ausgeben und dann unter Mac OS X einfach Drucken -> als PDF speichern?
    Wozu ne wackelige Klasse benutzen wenns mit Bordmitteln und der GUI geht?

  5. Nimm dir das Applescript von http://www.randomsequence.com/articles/save-current-safari-window-as-pdf/ und erweiter es ein wenig, etwa so:
    http://unorganized.net/tmp/pdfprint.applescript

    Du musst evtl. noch ein wenig die „delays“ aendern, falls die Seiten langsam laden. Speichert alle PDFs mit prefix ‚pdfprint ‚ in den Dokumente-Ordner.

    Und fuer mehr als die zwei eingebauten URLs hab ich’s nicht ausprobiert, es kann also fuerchterlich kaputt gehen *g*

  6. Uhm. Ich glaube ich habe mich mal wieder völlig schlecht ausgedrückt. Ich habe eine Liste von 1500 URLS. Als Excel, aber ist ja egal. Und ich brauche zu jeder dieser URLs die passende HTML-Seite als PDF. Und als Kür sollte das CSS „print“ genutzt werden.

    @Eike: fein. Danke! Probiere ich mal.

Schreib einen Kommentar

Pflichtfelder sind mit * markiert.