2009-08-14 5 views
0

Seit langem versuche ich HTML-Seiten mit großen Tabellen nach PHP zu konvertieren. Diese sind mit CSS gestylt und können mehrere Seiten lang sein.HTML-Tabellen zu PDF in PHP - weder DOMPDF noch html2ps/pdf funktionieren

Ich versuchte zuerst DOMPDF. Es funktioniert gut, bis ein Dokument mehr als eine Seite ist. Keine der Fixes, die ich gefunden habe, funktionieren. Entweder es wird falsch oder irgendein Element, das sogar teilweise auf der zweiten Seite wäre, wird über den Inhalt von Seite 1 geworfen. Ich habe sowohl die neueste Version als auch die SVN-Kopie ausprobiert, die ich heute ausgecheckt habe.

Ich habe auch versucht html2ps/pdf, und es gibt mir "Erlaubnis verweigert" Fehler beim Schreiben in das Cache-Verzeichnis, obwohl das Verzeichnis vollständig beschreibbar ist. Das Testskript für Systemanforderungen wird bestanden. Der Server läuft PHP 5 unter IIS (nicht meine Wahl heh).

Kann man sich entweder davon überzeugen zu arbeiten, oder gibt es eine Bibliothek, die das kann?

Fehler aus der Demo/Test-Scripts:

Warning: file_put_contents(C:\Inetpub\wwwroot\JM\pdf\html2ps\cache/7d888258e9745b3716532ea81342daaf.css.compiled) [function.file-put-contents]: failed to open stream: Permission denied in C:\Inetpub\wwwroot\JM\pdf\html2ps\css.cache.class.php on line 33

Warning: fopen(C:\Inetpub\wwwroot\JM\pdf\html2ps\cache/unicode.lb.classes.dat) [function.fopen]: failed to open stream: Permission denied in C:\Inetpub\wwwroot\JM\pdf\html2ps\inline.content.builder.php on line 991

Warning: flock() expects parameter 1 to be resource, boolean given in C:\Inetpub\wwwroot\JM\pdf\html2ps\inline.content.builder.php on line 992

Warning: fwrite(): supplied argument is not a valid stream resource in C:\Inetpub\wwwroot\JM\pdf\html2ps\inline.content.builder.php on line 1011 (diese Fehler mehr tausend Mal wiederholt)

Warning: fopen(C:\Inetpub\wwwroot\JM\pdf\html2ps\cache/times.z) [function.fopen]: failed to open stream: Permission denied in C:\Inetpub\wwwroot\JM\pdf\html2ps\pdf.fpdf.makefont.php on line 318

Can't write to file C:\Inetpub\wwwroot\JM\pdf\html2ps\cache/times.z

Antwort

0

Ein ähnliches Problem mit html2pdf unter IIS hat here diskutiert.

Die Lösung war ziemlich einfach, aber seltsam. Wenn Ihnen das nicht weiterhilft, helfen mir eine vollständige Fehlermeldung und/oder ein bisschen Code, Ihnen zu helfen.

+0

Das scheint sich auf eine ältere Version zu beziehen. Die Version, die ich habe, benutzt dieses Verzeichnis nicht; Es hat das Cache-Verzeichnis an der gleichen Stelle wie seine anderen (neben Klassen, Demo, etc). Selbst die Demo-/Testskripts schlagen mit irgendeiner URL fehl. Ich muss meinen Beitrag mit den Fehlern aktualisieren, da es für einen Kommentar zu lang ist. –

+0

Wenn noch Dateien im Cache-Verzeichnis vorhanden sind, haben Sie versucht, es zu leeren? html2pdf behandelt "Reste" nicht sehr gut. – flokra

+0

Nur die readme.txt, die damit geliefert wurde. Entfernen das hat nicht geholfen. Ist es möglich, dass das Verzeichnis nicht schreibbar ist, obwohl mein FTP-Client dies behauptet (Attribut 666)? –

0

Ich empfehle persönlich Befehlszeilen-Anwendungen anstelle von PHP-Bibliotheken.

Gründe:

  1. PHP-Bibliotheken benötigen mehr Zeit und Speicher (Cache) für den Konvertierungsprozess.

  2. Sie benötigen nur gut formatierte HTML-Seiten, andernfalls Fehler oder Warnungen.

  3. Keine Unterstützung für externe Stylesheets.

Command Line Tool:

Wenn Sie Ihr Skript auf einem Linux-Server laufen dann schlage ich Kommandozeilen-Tools.

Gründe:

  1. Sie sind extrem schnell im Vergleich zu PHP-Bibliotheken.

  2. Unterstützung CSS.

  3. Akzeptieren Sie nicht gut formatierte HTML.

Welche Zeilentool Befehl zu benutzen?

  1. wkhtmltopdf
  2. HtmlToPdf
  3. html2pdf

Weitere Informationen zu Converting HTML to PDF (not PDF to HTML) using PHP beziehen.

Verwandte Themen