HTML + CSS in PDF konvertieren [geschlossen]

1628

Ich habe ein HTML-Dokument (nicht XHTML), das in Firefox 3 und IE 7 gut gerendert wird. Es verwendet ziemlich einfaches CSS, um es zu formatieren, und es wird in HTML gut gerendert.

Ich bin jetzt nach einer Möglichkeit, es in PDF zu konvertieren. Ich habe versucht:

  • DOMPDF : Es gab große Probleme mit Tabellen. Ich habe meine großen verschachtelten Tabellen herausgerechnet und es hat geholfen (bevor es nur bis zu 128 MB Speicher verbrauchte und dann starb - das ist meine Speicherbeschränkung in php.ini), aber es macht ein komplettes Durcheinander von Tabellen und scheint nicht zu bekommen Bilder. Die Tabellen waren nur grundlegende Dinge mit einigen Rahmenstilen, um an verschiedenen Stellen einige Linien hinzuzufügen.
  • HTML2PDF und HTML2PS : Ich hatte damit tatsächlich mehr Glück. Es wurden einige der Bilder gerendert (alle Bilder sind Google Chart-URLs) und die Tabellenformatierung war viel besser, aber es schien ein Komplexitätsproblem zu geben, das ich noch nicht herausgefunden habe und das immer wieder mit unbekannten node_type () -Fehlern starb. Ich bin mir nicht sicher, wohin ich von hier aus gehen soll. und
  • Htmldoc : Dies scheint in einfachem HTML gut zu funktionieren, hat aber fast keine Unterstützung für CSS, so dass Sie alles in HTML tun müssen (ich wusste nicht, dass es noch 2001 in Htmldoc-Land war ...), also ist es für mich nutzlos.

Ich habe eine Windows-App namens Html2Pdf Pilot ausprobiert, die eigentlich ziemlich gute Arbeit geleistet hat, aber ich brauche etwas, das mindestens unter Linux und idealerweise bei Bedarf über PHP auf dem Webserver ausgeführt wird.

Was fehlt mir oder wie kann ich dieses Problem beheben?

Cletus
quelle
9
Html2Pdf verwendet tatsächlich eine eingebettete Instanz des IE, um die Seite zu rendern, und konvertiert diese dann in PDF - wahrscheinlich über den Druckmechanismus des IE.
Joel Mueller
55
Da es sich um eine Frage aus dem Jahr 2008 handelt, ist dompdf jetzt viel ausgereifter. ;-)
Hendra Uzia
5
dompdf unterstützt nun CSS 2.1 und kann behandeln @import, @mediaund @screenRegeln, und externe Stylesheets laden. Es wird auch mit allem geliefert, was für das Funktionieren erforderlich ist, obwohl Sie einige Dinge installieren können, um eine bessere Leistung als die Standardbibliotheken zu erzielen. code.google.com/p/dompdf
totalNotLizards
6
Update 2015: Nachdem wir viele Optionen untersucht hatten, entschieden wir uns für wkhtmltopdf. Es ist ein nettes Dienstprogramm, das wir mit CSS zu kämpfen haben, weil wir eine externe CSS-Datei haben. Dann haben wir den Trick angewendet, einen Dummy-Link von CSS auf unser HTML-Element zu setzen, das wir wollen konvertiere und setze den richtigen Weg es funktioniert wie MAGIC !!!
Anshul Nigam
10
Ich glaube, bald findet jeder Chrome / Chromium Headless chrome --headless --print-to-pdf="path/to/pdf" https://your_url als das reichhaltigste, schnellste und einfachste HTML-Tool zur PDF-Generierung crbug.com/603559, da es die meisten HTML-Funktionen unterstützt, auf die sich Entwickler verlassen, und sich nicht wie die meisten anderen an komplexen Skripten orientiert Bibliotheken und Tools tun.
Ebrahim Byagowi

Antworten:

551

Wichtig: Bitte beachten Sie, dass diese Antwort im Jahr 2009 verfasst wurde und möglicherweise 2019 nicht die kostengünstigste Lösung ist. Online-Alternativen sind heute besser als damals.

Hier sind einige Online-Dienste, die Sie verwenden können:


Schauen Sie sich PrinceXML an .

Es ist definitiv der beste HTML / CSS-PDF-Konverter, obwohl es nicht kostenlos ist (aber hey, Ihre Programmierung ist möglicherweise auch nicht kostenlos. Wenn Sie also 10 Stunden Arbeit sparen, sind Sie frei zu Hause (da Sie es auch müssen) Berücksichtigen Sie, dass Sie für alternative Lösungen einen dedizierten Server mit der richtigen Software einrichten müssen.

Oh ja, habe ich erwähnt, dass dies die erste (und wahrscheinlich einzige) HTML2PDF-Lösung ist, die ACID2 vollständig unterstützt ?

PrinceXML-Beispiele

SchizoDuckie
quelle
16
Meine Firma hat einen Webdienst geschrieben, der sich um Prince dreht. Deutlich günstigere Vorabkosten und nutzbar, ohne dass etwas installiert werden muss: docraptor.com
Joel Meador
6
Ich habe auch DocRaptor verwendet. Eine großartige Möglichkeit, die Vorteile von Prince zu nutzen, ohne die teure Lizenz bezahlen zu müssen. Herzlichen Glückwunsch zu einem großartigen Produkt, Joel.
Nate365
22
Viel zu teuer. WKHTMLTOPDF (siehe andere Antwort) ist kostenlos, erledigt den Job und verwendet ein Webkit, das fantastisch ist.
Thomallen
1
Es gibt Saas-Service von gleicher oder besserer Qualität zu einem Bruchteil des Preises - siehe htm2pdf.co.uk
user1914292
5
Wenn Sie Befehlszeilenzugriff haben und NICHT $ 3500 bezahlen möchten, ist PhantomJS mit diesem Skript möglicherweise eine Lösung - github.com/ariya/phantomjs/blob/master/examples/rasterize.js - dies ist der kostenlose und einfache Weg!
Chjortlund
666

Schau es dir an wkhtmltopdf. Es ist Open Source, basiert auf Webkit und ist kostenlos.

Wir schrieben ein kleines Tutorial hier .

EDIT (2017):

Wenn ich heute etwas bauen würde, würde ich diesen Weg nicht mehr gehen.
Würde aber stattdessen http://pdfkit.org/ verwenden.
Wahrscheinlich werden alle Knoten-Abhängigkeiten entfernt, um im Browser ausgeführt zu werden.

Mikrofon
quelle
10
Dieser arbeitet unter der besten Prämisse IMO. Boostrap-Konvertierung von einem vorhandenen Renderer, anstatt einen von Grund auf neu zu schreiben - keine triviale Aufgabe. Darüber hinaus ist Webkit in C ++ geschrieben und daher viel schneller und weniger ressourcenintensiv als die PHP-basierte Implementierung.
Koobz
3
Wir hatten große Probleme damit, Schriftarten ordnungsgemäß auf CentOS-Servern zu rendern. Nach buchstäblich wochenlangem Herumspielen scheint die einzige Option darin zu bestehen, CentOS nicht zu verwenden.
Abhi Beckert
1
WARNUNG! Wenn Sie wkhtmltopdf verwenden (zumindest auf meinem System XAMPP unter Windows 7 64-Bit), werden in allen Fällen, in denen ich es versucht habe, .gif-Bilder nicht in der PDF-Datei angezeigt. Ich habe eine Reihe von Problemumgehungen ausprobiert, die an verschiedenen Stellen vorgeschlagen wurden, z. B. "Breite" und "Höhe", und das Schreiben der URIs gemäß verschiedenen Konventionen. Nichts, was ich jemals versucht habe, hat dazu geführt, dass die .gifs angezeigt wurden (insbesondere nicht einmal der Vorschlag "width" und "height", den ich sowohl mit Inline-Stilen als auch mit den archaischen, rohen HTML-Attributen "width" und "height" ausprobiert habe). Das Austauschen der Bilder in JPG funktionierte jedoch beim ersten Versuch.
Dan Nissenbaum
6
Diese Abstraktion ist ziemlich nett, obwohl mikehaertl.github.io/phpwkhtmltopdf
saada
1
Die kommerziellen Dienste waren für uns allzu teuer, daher haben wir WKHTMLTOPDF als kostenlosen Cloud-Dienst html2pdfrocket.com implementiert, den jeder nutzen kann, und ihn dann selbst für unsere Kunden verwendet. Wir haben es so gemacht, damit unsere Kunden keine Exe auf ihren Servern usw. installieren mussten und plattformübergreifend arbeiten. Ich bewerte WKHTMLTOPDF auf jeden Fall, wenn Sie Ihren eigenen Service aufbauen.
Eagle779
150

Nach einigen Nachforschungen und allgemeinem Haarziehen scheint die Lösung HTML2PDF zu sein . DOMPDF hat schreckliche Arbeit mit Tabellen, Rahmen und sogar mäßig komplexem Layout geleistet, und htmldoc scheint einigermaßen robust zu sein, ist jedoch fast völlig CSS-ignorant, und ich möchte nicht nur für dieses Programm wieder HTML-Layout ohne CSS erstellen .

HTML2PDF sah am vielversprechendsten aus, aber ich hatte immer wieder diesen seltsamen Fehler bezüglich Nullreferenzargumenten für node_type. Ich habe endlich die Lösung dafür gefunden. Grundsätzlich funktionierte PHP 5.1.x gut mit Regex-Ersetzungen (preg_replace_ *) für Zeichenfolgen beliebiger Größe. PHP 5.2.1 führte eine php.ini-Konfigurationsanweisung namens pcre.backtrack_limit ein . Dieser Konfigurationsparameter begrenzt die Zeichenfolgenlänge, für die der Abgleich durchgeführt wird. Warum dies eingeführt wurde, weiß ich nicht. Der Standardwert wurde als 100.000 gewählt. Warum so ein niedriger Wert? Wieder keine Ahnung.

Hierfür wurde ein Fehler gegen PHP 5.2.1 ausgelöst , der fast zwei Jahre später noch offen ist .

Das Schreckliche daran ist, dass das Ersetzen nur stillschweigend fehlschlägt , wenn das Limit überschritten wird . Zumindest wenn ein Fehler ausgelöst und protokolliert wurde, haben Sie einen Hinweis darauf, was passiert ist, warum und was geändert werden muss, um ihn zu beheben. Aber nein.

Ich habe also eine 70k HTML-Datei, die ich in PDF umwandeln kann. Es erfordert die folgenden php.ini-Einstellungen:

  • pcre.backtrack_limit = 2000000; # wahrscheinlich mehr als ich brauche, aber das ist OK
  • memory_limit = 1024M; # ja, ein Gigabyte ; und
  • max_execution_time = 600; # ja, 10 Minuten .

Jetzt hat der kluge Leser vielleicht bemerkt, dass meine HTML-Datei kleiner als 100.000 ist. Der einzige Grund, warum ich dieses Problem feststellen kann, ist, dass html2pdf als Teil des Prozesses eine Konvertierung in xhtml durchführt. Vielleicht hat mich das übernommen (obwohl fast 50% Aufblähen seltsam erscheint). Wie auch immer, das oben genannte hat funktioniert.

Jetzt ist html2pdf ein Ressourcenfresser. Meine 70k-Datei benötigt ungefähr 5 Minuten und mindestens 500-600 MB RAM, um eine 35-seitige PDF-Datei zu erstellen. Leider (bei weitem) nicht schnell genug für einen Echtzeit-Download, und aufgrund der Speichernutzung liegt die Speicherauslastung in der Größenordnung von 1000 zu 1 (600 MB RAM für eine 70-KB-Datei), was absolut lächerlich ist.

Leider ist das das Beste, was ich mir ausgedacht habe.

Cletus
quelle
1
@cletus kannst du mir bitte etwas über die stabile Version von HTML2PDF erzählen? Das obige
Ripa Saha
Für die neueste Version siehe github.com/spipu/html2pdf
Luke Wenke
1
Grimmiger Tippfehler wird grimmiger: Die Speichernutzung liegt in der Größenordnung von 10.000 zu 1 lol
MickLH
Funktioniert genauso schlecht wie mPDF ... schneller, aber nicht präzise ... und das Konvertieren von TTF-Schriftarten ist unglaublich schmerzhaft ... sie haben sogar eine unabhängige Bibliothek "tc-lib-pdf-font" nur zum Generieren von Schriftarten
Martin Zvarík
125

Warum probierst du nicht mPDF Version 2.0 aus ? Ich habe es zum Erstellen eines PDF-Dokuments verwendet. Es funktioniert gut.

Inzwischen ist mPDF auf Version 5.7 und wird im Gegensatz zu HTML2PS / HTML2PDF aktiv gepflegt

Beachten Sie jedoch, dass die Dokumentation sehr schwer zu handhaben sein kann. Schauen Sie sich zum Beispiel diese Seite an: https://mpdf.github.io/ .

Mit dieser Bibliothek können sehr grundlegende Aufgaben rund um HTML bis PDF ausgeführt werden. Komplexere Aufgaben erfordern jedoch einige Zeit, um die Dokumentation zu lesen und zu "verstehen".

Karthick
quelle
1
Ich habe ein paar der hier vorgeschlagenen ausprobiert. Bisher wurde dieses hochgeladen und ohne Probleme sofort bearbeitet, und die Dokumente sind im Vergleich zu den anderen wirklich erstaunlich. Gebrauchsanweisung ist klar geschrieben.
Smith Smithy
mPDF gibt mir einige ernsthafte Probleme beim POSTEN von HTML-Tags mit Bildhintergrund oder Tags aus der Datenbank:mPDF error: IMAGE Error (http://www.example.com/folder/image.jpg): Error parsing image file - image type not recognised, and not supported by GD imagecreate
Stefan
Version 6.0 funktioniert wie erwartet: Fügen Sie es hinzu (oder laden Sie es in ein Framework), instanziieren Sie es, füllen Sie es mit Ihren Inhalten, geben Sie es auf die eine oder andere Weise aus ... Das war's!
Toesslab
Nun, MPDF funktioniert gut, stimmt! Der Code und die Dokumentation sind jedoch inkonsistent - es ist wirklich schwierig, eine komplexere Aufgabe zu erfüllen, z. B. einen Brief bezüglich der Din-Norm zu erstellen.
Qullbrune
Behauptet, dass es viel langsamer als html2fpdf ist. Aber für grundlegende Inhalte dachte ich, dass es schnell genug war (Rechnungen, Berichte usw.). Das große Plus für mPDF ist, dass es kaum PHP-Erweiterungsanforderungen gibt (funktioniert
Joao
70

1) Verwenden Sie MPDF !

a) extrahieren in yourfolder

b) Erstellen file.php in yourfolderund Einsatz solcher Code:

<?php
include('../mpdf.php');
$mpdf=new mPDF();
$mpdf->WriteHTML('<p style="color:red;">Hallo World<br/>Fisrt sentencee</p>');
$mpdf->Output();   exit;
 ?>

c) Öffnen Sie die Datei file.php in Ihrem Browser




2) Verwenden Sie pdfToHtml !

1) extrahieren Sie pdftohtml.exe in Ihren Stammordner:

2) Fügen Sie in diesen Ordner in der Datei anyfile.php diesen Code ein (vorausgesetzt, es gibt auch eine Quelle example.pdf):

<?php
$source="example.pdf";
$output_fold="FinalFolder";

    if (!file_exists($output_fold)) { mkdir($output_fold, 0777, true);}
$result= passthru("pdftohtml $source $output_fold/new_filename",$log);
//var_dump($result); var_dump($log);
?>

3) Geben Sie FinalFolder ein und es werden die konvertierten Dateien angezeigt (so viele Seiten, wie das Quell-PDF hatte.)

tazo todua
quelle
Ich würde Grabz versuchen. Ihre API unterstützt CSS, JavaScript und die meisten anderen Ressourcentypen. Es muss nur mit absoluten URLs referenziert oder inline erstellt und in den HTML-Code aufgenommen werden, der an den Dienst gesendet wird. Versuchen Sie es hier: grabz.it/html-to-pdf-image-api.aspx
GrabzEs ist nicht kostenlos
Chatoxz
56

Auschecken TCPDF . Es verfügt über einige HTML-zu-PDF-Funktionen, die möglicherweise für Ihre Anforderungen ausreichen. Es ist auch kostenlos!

Darryl Hein
quelle
1
Die Unterstützung für das Rendern von HTML ist eher begrenzt. Vielleicht möchten Sie dies lesen: tcpdf.org/doc/classTCPDF.html#ac3fdf25fcd36f1dce04f92187c621407
Hendra Uzia
1
aber CSS-Stil funktioniert nicht
KBK
32

Nur um den Thread zu stoßen, habe ich DOMPDF ausprobiert und es hat perfekt funktioniert. Ich habe DIVund andere Elemente auf Blockebene verwendet, um alles zu positionieren. Ich habe es streng CSS 2.1 beibehalten und es hat sehr gut gespielt.

Filip Dupanović
quelle
31

Ich schlage DocRaptor vor (der PrinceXMLals "Engine" verwendet wird)

aRahmanS29
quelle
Leider nicht verwendbar, wenn Sie große PDF-Dateien mit vielen Bildern erstellen möchten. Ich denke, es gibt eine 60-Sekunden-Frist für Anfragen. Wenn Docraptor viele Dateien herunterladen muss, wird diese überschritten und es wird keine Datei erstellt.
Vilhelm
1
Dieses von Vilhelm erwähnte Problem wurde behoben.
illbzo1
30

Es wurde bereits erwähnt, aber ich möchte nur bestätigen, dass mpdf der einfachste, leistungsstärkste und kostenlosste HTML-zu-PDF-Konverter ist. Der Himmel ist wirklich die Grenze. Sie können sogar PDF-Dateien mit dynamischen, benutzergenerierten Daten erstellen.

Zum Beispiel wollte ein Kunde ein CMS-System, damit er die Trackliste der Musik, die er in seinem Club gespielt hat, aktualisieren kann. Das war kein Problem, aber er wollte auch, dass Benutzer eine PDF-Datei der Wiedergabeliste herunterladen können. Daher musste diese herunterladbare PDF-Datei auch von der CMS aktualisiert werden. Dank mpdf konnte ich mit einigen einfachen Schleifen und eingestreuten Variablen genau das tun. Etwas, von dem ich dachte, es würde Wochen dauern, dauerte buchstäblich Minuten.

Toller Artikel , der mir den Einstieg erleichtert hat.

Starkers
quelle
7
Ein PDF einer Wiedergabeliste. Gott hilf mir.
Henrik Erlandsson
29

Gute Nachrichten! Bissig !!

Snappy ist eine sehr einfache Open-Source-PHP5-Bibliothek, die die Erstellung von Miniaturansichten, Schnappschüssen oder PDFs von einer URL oder einer HTML-Seite ermöglicht. Und ... es verwendet das exzellente Webkit-basierte wkhtmltopdf

Genießen! ^ _ ^

Paulo Coghi - Monica wieder einsetzen
quelle
1
Ich habe eine HTTP-API erstellt, die Snappy verwendet (basierend auf wkhtmltopdf). Sie können eine URL übergeben und die Webseite von HTML in PDF konvertieren: github.com/Dellos7/dhtml2pdf
David López
26

Wenn Sie eine perfekte Konverterbibliothek für XHTML + CSS in PDF finden möchten, vergessen Sie sie. Es ist alles andere als möglich. Weil es so ist, als würde man einen perfekten Browser finden (XHTML + CSS-Rendering-Engine). Haben wir einen IE oder FF?

Ich hatte einige Erfolge mit DOMPDF. Die Sache ist, dass Sie Ihren HTML + CSS-Code ändern müssen, um der Funktionsweise der Bibliothek zu entsprechen. Davon abgesehen habe ich ziemlich gute Ergebnisse.

Siehe unten:

Original HTML

Konvertieren von HTML in PDF

datasn.io
quelle
25

Das HTML2PDF und HTML2PS , die ursprünglich im Eröffnungsbeitrag erwähnt wurden, sprachen über ein 2009-Paket mit diesem Link

Aber es gibt ein besseres HTML2PDF

Es basiert auf TCPDF, obwohl es teilweise auf Französisch ist.

Sie können Tabellenkopf- oder -fußzeilen haben, die sich auf den Seiten wiederholen und Seitenzahlen und Gesamtseiten haben. Siehe seine Beispiele . Ich benutze es seit über drei Jahren und empfehle es.

Luke Wenke
quelle
1
Warum ist das nicht oben? Es funktioniert ohne zusätzliche Abhängigkeiten und ist gut genug für die meisten Anwendungen, ohne 3800 US-Dollar ausgeben zu müssen!
entartet
22

Ich verwende fpdf , um PDF-Dateien mit PHP zu erstellen. Bisher funktioniert es für mich gut, einfache Ausgaben zu erstellen.

stealthyninja
quelle
21

Es gibt ein Tutorial zu Zends Devzone zum Generieren von PDF aus PHP ( Teil 1 , Teil 2 ) ohne externe Bibliotheken. Ich habe diese Art von Lösung nie implementiert, aber da alles PHP ist, ist es möglicherweise flexibler, sie zu implementieren und zu debuggen.

yoavf
quelle
1
Die Links wurden aktualisiert: PDF-Generierung nur mit PHP - Teil 1 , PDF-Generierung nur mit PHP - Teil 2
charles.cc.hsu
Ja, aber das konvertiert kein HTML ... das ist rohe PDF-Generierung
Martin Zvarík
16

Versuchen Sie es mit dem neuesten nächtlichen Dompdf- Build - ich habe eine ältere Version verwendet, die ein schreckliches Ressourcenfresser war, und es hat ewig gedauert , mein PDF zu rendern. Nach einer Nacht von hier .

Das Generieren des PDFs dauerte nur wenige Sekunden - UND es wurde genauso gut gerendert wie mit PrinceXML / Docraptor . Scheint, als hätten sie den Dompdf- Code ernsthaft optimiert , seit ich ihn das letzte Mal benutzt habe!

Arni J.
quelle
Dompdf ist wirklich eine gute Option. Ich habe zweimal verwendet und es ist sehr einfach. Ich werde empfehlen, dompdf zu versuchen. Hier ist der Link für das offizielle Github-Repo: github.com/dompdf/dompdf
Rituparna sonowal
16

Darryl Heins obige Erwähnung von TCPDF ist wahrscheinlich eine großartige Idee. Nicola Asunis Code ist ziemlich praktisch und mächtig. Der einzige Killer ist, wenn Sie jemals vorhaben, PDF-Dateien mit Ihrem generierten PDF zusammenzuführen, verfügt es nicht über diese Funktionen. Sie müssten das PDF erstellen und es dann mit PDFTK von Sid Steward (www.pdflabs.com/tools/pdftk-the-pdf-toolkit/) zusammenführen.

Spinnentier
quelle
13

In Bezug auf die Kosten kann die Verwendung eines Webdienstes (API) in vielen Fällen der sinnvollere Ansatz sein. Durch das Auslagern dieses Prozesses entlasten Sie außerdem Ihre eigene Infrastruktur / Ihr eigenes Backend und stellen - sofern Sie einen seriösen Service nutzen - die Kompatibilität mit der Anpassung von Webstandards, Verfügbarkeit, kurzen Verarbeitungszeiten und schneller Bereitstellung von Inhalten sicher.

Ich habe einige Recherchen zu den meisten derzeit auf dem Markt befindlichen Webdiensten durchgeführt. Nachfolgend finden Sie die APIs, die meiner Meinung nach in diesem Thread erwähnt werden sollten, in einer Reihenfolge, die auf dem Preis-Leistungs-Verhältnis basiert. Alle bieten vorkomponierte PHP-Klassen und -Pakete an.

  1. pdflayer.com - Kosten: $ - Qualität: ☆☆☆☆
  2. docraptor.com - Kosten: $$$ - Qualität: ☆☆☆☆☆
  3. pdfcrowd.com - Kosten: $$ - Qualität: ☆☆☆

Qualität:

Mit der hochwertigen Engine PrinceXMLals Rückgrat bietet DocRaptor eindeutig die beste PDF-Qualität und liefert hochglanzpolierte und gut konvertierte PDF-Dokumente. Der pdflayer-API- Dienst kommt hier jedoch ziemlich nahe. Pdfcrowd punktet nicht unbedingt mit der Qualität, sondern mit der Verarbeitungsgeschwindigkeit.

Kosten:

pdflayer.com - Wie oben angegeben, ist pdflayer.com die kostengünstigste Option. Es bietet ein völlig kostenloses Abonnement für 100 monatliche PDFs und Premium-Abonnements zwischen 9,99 und 119,99 US-Dollar. Der Preis für 10.000 monatliche PDF-Dokumente beträgt 39,99 USD.

docraptor.com - Bietet eine kostenlose Testphase von 7 Tagen. Premium-Abonnements kosten zwischen 15 und 2250 US-Dollar. Der Preis für 10.000 monatliche PDF-Dokumente beträgt ~ 300,00 USD.

pdfcrowd.com - Einmal 100 PDFs kostenlos anbieten . Premium-Abonnements kosten zwischen 9 und 89 US-Dollar. Der Preis für 10.000 monatliche PDF-Dokumente beträgt ~ 49,00 USD.

Ich habe alle drei verwendet und dieser Text soll jedem helfen, sich zu entscheiden, ohne für alle bezahlen zu müssen. Dieser Text wurde nicht geschrieben, um ein Produkt zu unterstützen, und ich bin mit keinem der Produkte verbunden.

Frank
quelle
Danke für die Freigaben. Ich habe den ganzen Tag alle Optionen untersucht und mich mehr auf freie Bibliotheken oder den Kauf der Bibliothek konzentriert. Ihre Antwort hilft mir wieder zu thnik. Ich denke, für kleine Unternehmen ist es der kostengünstige und einfachste Weg, mit den Webdiensten umzugehen. Für pdflayer.com; weniger als $ 100 / Jahr dauert es 20 oder 30 Jahre, um die Gewinnschwelle zu erreichen, aber ich glaube nicht, dass wir 20 Jahre später in derselben Welt abreisen werden :)
Freewill
12

Wenn Sie Zugriff auf die Befehlszeile haben, können Sie PhantomJS verwenden , um das PDFvon einem URL(Remote- oder lokalen) zu erstellen .

Es funktioniert sehr gut und ist eine kostenlose Lösung.

Schauen Sie sich dieses Beispielskript an, das genau für dieses Problem erstellt wurde.

Hjortlund
quelle
Möglicherweise haben Sie jedoch Probleme mit den Schriftarten (Webfonts)
Mihai Crăiță
11

Diese Frage ist schon ziemlich alt, aber ich habe noch niemanden gesehen, der CutyCapt erwähnt, also werde ich :)

CutyCapt

CutyCapt ist ein kleines plattformübergreifendes Befehlszeilenprogramm zum Erfassen des WebKit-Renderings einer Webseite in einer Vielzahl von Vektor- und Bitmapformaten, einschließlich SVG, PDF, PS, PNG, JPEG, TIFF, GIF und BMP

Koen.
quelle
11

Ich empfehle TCPDF oder DOMPDF in dieser Reihenfolge.

criss_ae
quelle
9

Ich denke nicht, dass eine PHP-Klasse die beste ist, um eine xHtml-Seite mit CSS zu rendern.

Was passiert, wenn eine neue CSS-Regel herauskommt? (bald CSS 3.0 ...)

Der beste Weg, eine HTML-Seite zu rendern, ist offensichtlich ein Browser. Firefox 3.0 kann nativ im PDF-Format "drucken". Torisugary hat eine Erweiterung (Befehlszeilendruck) entwickelt, um es zu verwenden. Hier finden Sie es.

Wie auch immer, es gibt immer noch viele Probleme mit Firefox, nur als PDF-Konverter ...

Im Moment denke ich, dass wkhtmltopdf das Beste ist (das wird vom Safari-Browser verwendet), schnell, schnell, großartig. Ja, OpenSource auch ... Schauen Sie mal rein

Strae
quelle
PHP ist nützlich, wenn Sie eine offizielle Dokumentation ausgeben möchten, z. B. eine Quittung für einen Benutzer, und Sie können CSS verwenden, damit es gut aussieht.
Luke Wenke
9

Ich habe eine öffentliche API entwickelt, um PDF-Dateien von Webseiten zu erstellen. Es hat eine schöne PHP-Client-Klasse, die es super einfach zu bedienen macht. Es verwendet wkhtmltopdf, um das PDF in der Cloud zu rendern.

Keine Notwendigkeit für etwas Besonderes im HTML. Keine Notwendigkeit für absolute URLs in images / css / js-Links. Funktioniert auch auf localhost (dev machine).

Derzeit verfügt der Dienst über Endpunkte in 4 Azure-Regionen: US-Ost, US-West, EU-Nord, Südostasien.

Es ist schnell, da es ein proprietäres Protokoll verwendet, um den Inhalt der Webseite zur Konvertierung in PDF an die API zu senden.

Es ist zuverlässig, da alle Endpunkte lastausgeglichen sind.

Kostenloses Konto zum Testen oder zur geringen Nutzung verfügbar. Details auf der Website:

https://rotativahq.com

Giorgio Bozio
quelle
8

Vielleicht können Sie versuchen, Tidy zu verwenden, bevor Sie die Datei an den Konverter übergeben. Wenn einer der Renderer an einem HTML-Problem (wie einem nicht geschlossenen Tag) erstickt, kann dies hilfreich sein.

PhiLho
quelle
Ja, ein gültiger Punkt, aber daran habe ich bereits gedacht. In meinem HTML gibt es keine nicht übereinstimmenden oder nicht standardmäßigen Tags.
Cletus
7

Feines Rendern hat nichts zu bedeuten. Validiert es?

Alle Browser tun ihr Bestes, um nur etwas auf dem Bildschirm anzuzeigen, egal wie schlecht die Eingabe ist. Und natürlich machen sie nicht dasselbe. Wenn Sie dasselbe Rendering wie FireFox wünschen, können Sie dessen Rendering-Engine verwenden. Es gibt PDF-Generatoren dafür. Es ist jedoch eine Menge Arbeit.

Stephan Eggermont
quelle
7

Obwohl bereits viele Lösungen angeboten werden, empfehle ich die folgenden zwei:

  1. HTM2PDF - bietet eine API zum Konvertieren von HTML in PDF und verfügt über ein PHP-SDK, das die Implementierung in PHP sehr einfach macht. Es bietet eine Auswahl an Serverstandorten in Europa, Asien und den USA
  2. PDFmyURL - bietet eine API, die auch URL und HTML zu PDF verarbeitet, mit ungefähr der gleichen Funktionalität wie HTM2PDF, funktioniert jedoch in einer Landschaft mit Lastenausgleich und gibt es schon etwas länger

Das Besondere an diesen beiden APIs von allen zuvor genannten Lösungen ist, dass sie neben der Konvertierung von HTML in PDF mit CSS und JavaScript auch die Verwaltung von PDF-Rechten, Wasserzeichen und Verschlüsselung bieten. Daher ist es eine All-in-One-Lösung für diejenigen, die sofort loslegen möchten.

Haftungsausschluss: Ich arbeite für Kaiomi, ein Unternehmen, das beide Websites betreibt.

user1914292
quelle
Ich möchte mich nicht auf einen Service verlassen, wenn er zum Verkauf steht . Angesichts der Tatsache, dass es in dieser Auktion nicht verkauft wurde, kann ich nur davon ausgehen, dass es in naher Zukunft verkauft wird?
Robin van Baalen
Eigentlich hat meine Firma es einige Zeit nach der Auktion erworben ....
user1914292
In diesem Fall gibt es wohl nichts zu befürchten.
Robin van Baalen
5

Ist die HTML zu PDF Konvertierung wirklich brauchen serverseitige Verwendung von PHP auftreten?

Ich bin gerade auf jsPDF gestoßen , eine clientseitige Lösung mit HTML5 / JavaScript. Der MIT-lizenzierte Code ist auch auf GitHub verfügbar .

Oliver Schafeld
quelle
Für mich ist die Bibliothek sehr begrenzt
YXN
5

TCPDF funktioniert einwandfrei, keine Abhängigkeiten, ist kostenlos und wird ständig behoben. Es hat eine angemessene Geschwindigkeit, wenn der bereitgestellte HTML / CSS-Inhalt gut formatiert ist. Normalerweise generiere ich aus 50 - 300 kB HTML-Eingabe (einschließlich CSS) und erhalte eine PDF-Ausgabe innerhalb von 1-3 Sekunden mit 10 - 15 PDF-Seiten.

Ich empfehle dringend, die ordentliche Bibliothek als hübschen HTML-Formatierer zu verwenden, bevor Sie etwas an TCPDF senden.

lubosdz
quelle
4

Ich habe viele verschiedene Bibliotheken für PHP ausprobiert. Alle aufgelisteten habe ich ausprobiert. Meiner Meinung nach ist die TCPDF- Bibliothek die beste Kompromissleistung / Benutzerfreundlichkeit. Es ist sehr einfach zu installieren und zu verwenden, auch gute Leistung in kleinen mittleren Anwendungen. Wenn Sie ein leistungsstarkes und sehr großes PDF-Dokument benötigen, verwenden Sie das Zend_PDF- Modul, aber machen Sie sich bereit, hart zu codieren!

Trullallero
quelle
Zend PDF kann nicht aus HTML konvertiert werden
Martin Zvarík
3

Web-API

Wenn es Leute gibt, die immer nach solchen Dingen suchen, gibt es eine kostenlose Website, auf der Sie HTML-Code und -Seiten in PDF konvertieren können. Es gibt auch eine (sehr kleine) API, mit der Sie PDF-Dateien von der URL abrufen können.

Überprüfen Sie es hier

Superdrac
quelle
2

nicht PHP , sondern eine Java- Bibliothek , die das macht:

Flying Saucer verwendet XML oder XHTML und wendet CSS 2.1-kompatible Stylesheets an, um sie als PDF zu rendern

Es kann von PHP über system()oder einen ähnlichen Anruf verwendet werden. Obwohl es XML -Wohlgeformtheit der erfordert input.

Ivan Kurmanov
quelle