Heim >Backend-Entwicklung >PHP-Problem >So konvertieren Sie HTML mit PHP in eine PDF-Datei

So konvertieren Sie HTML mit PHP in eine PDF-Datei

藏色散人
藏色散人Original
2020-07-06 09:18:284772Durchsuche

So verwenden Sie PHP, um HTML in PDF-Dateien zu konvertieren: Laden Sie zuerst PDF herunter und testen Sie es. Verwenden Sie dann die Funktion „shell_exec“, um es in PHP aufzurufen.

So konvertieren Sie HTML mit PHP in eine PDF-Datei

Es gab einen Kunden, der PDF-Dateien aus einigen HTML-Seiten generieren musste, und dann suchte ich nach einigen Klassen, die PHP verwenden, um HTML-Seiten in PDF-Dateien zu konvertieren . Man kann sagen, dass ich viel nach Methoden gesucht habe, aber keine davon hat meinen Anforderungen entsprochen.

pdflib, FPDF Diese beiden Methoden erfordern das Schreiben von Programmen zum Generieren von PDFs, was bedeutet, dass sie die direkte Konvertierung von HTML-Seiten in PDFs nicht unterstützen; HTML-Codes. Wenn Ihr HTML-Inhalt über den Hintergrund-News-Editor geschrieben werden muss, funktioniert dies definitiv nicht.

Nachdem ich lange auf Baidu und Google gesucht hatte, habe ich endlich eine sehr einfach zu verwendende Methode gefunden.

Es ist: wkhtmltopdf, wkhtmltopdf kann jede Webseite, die im Browser durchsucht werden kann, direkt in ein PDF konvertieren. Lassen Sie mich zunächst erklären, dass es sich nicht um eine PHP-Klasse handelt, sondern um eine HTML-Seite, die konvertiert wird HTML-Seiten in PDF konvertieren. Es ist eine Software, aber keine einfache Desktop-Software, und sie führt direkt eine CMD-Stapelverarbeitung durch. Und PHP hat eine Shell_exec()-Funktion. Im Folgenden finden Sie eine schrittweise Einführung in die Verwendung von PHP zum Generieren von PDF-Dateien.

1. PDF herunterladen und installieren
Download-Adresse: http://code.google.com/p/wkhtmltopdf/downloads/list
Es gibt Installationspakete für verschiedene Plattformen, ggf. auf Englisch Nicht gut, einfach Google übersetzen. Das Folgende ist ein Beispiel für die Verwendung auf der Windows-Plattform. Ich habe die Version wkhtmltopdf-0.9.9-installer.exe heruntergeladen und unter Win7 32-Bit 64-Bit und Windows 2003 ohne Probleme installiert. Installieren Sie es einfach direkt nach dem Download. Achten Sie auf den Installationspfad, der unten verwendet wird.
Nach der Installation müssen Sie der Systemumgebungsvariablen mit dem Namen „Pfad“ Folgendes hinzufügen: ;C:Program Files (x86)wkhtmltopdf, das Verzeichnis, in dem Sie es installiert haben. Starten Sie Ihren Computer nach der Installation neu.

Zweitens testen Sie den Nutzungseffekt
Geben Sie direkt in cmd ein: wkhtmltopdf http://www.shwzzz.cn/ F:website1.pdf
Der erste ist: Name der laufenden Software (dies ist unverändert) Die zweite ist die URL und die dritte ist der generierte Pfad und Dateiname. Wird nach dem Drücken der Eingabetaste eine Fortschrittsanzeige für die Generierung angezeigt? Herzlichen Glückwunsch zu Ihrem Erfolg. Gehen Sie zu Ihrem Generierungsverzeichnis, um zu sehen, ob eine neu generierte PDF-Datei vorhanden ist.

3. Der Aufruf in PHP ist sehr einfach. Wenn die Funktion „shell_exec“ nicht verwendet werden kann, prüfen Sie, ob sie in php.ini deaktiviert ist.
Beispiel: b2c7ff02e5174be99b172ec4ea3db754

Drittens das Paging-Problem lösen

wkhtmltopdf ist sehr nützlich . Aber es gibt auch einige unbefriedigende Aspekte. Was soll ich tun, wenn eine HTML-Seite sehr lang ist und ich sie an einer bestimmten Stelle paginieren muss? Die Entwickler von wkhtmltopdf haben dies bei der Entwicklung nicht berücksichtigt,
Zum Beispiel die folgende HTML-Seite:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
<title>pdf</title>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
</head>  
<style type="text/css">  
*{ margin:0px; padding:0px;}  
div{ width:800px; height:1362px;margin:auto;}  
</style>  
<body>  
<div style=" background:#030"></div>  
<div style=" background:#033"></div>  
<div style=" background:#369"></div>  
<div style=" background:#F60"></div>  
<div style=" background:#F3C"></div>  
<div style=" background:#F0F"></div>  
<div style=" background:#0FF"></div>  
<div style=" background:#FF0"></div>  
<div style=" background:#00F"></div>  
<div style=" background:#0F0"></div>  
<div style=" background:#033"></div>  
<div style=" background:#369"></div>  
<div style=" background:#F60"></div>  
<div style=" background:#030"></div>  
<div style=" background:#033"></div>  
<div style=" background:#369"></div>  
<div style=" background:#F60"></div>  
<div style=" background:#F3C"></div>  
<div style=" background:#F0F"></div>  
<div style=" background:#0FF"></div>  
<div style=" background:#FF0"></div>  
<div style=" background:#00F"></div>  
<div style=" background:#0F0"></div>  
</body>  
</html>

Wenn ich es als PDF generiere, möchte ich, dass jeder Block eine Seite ist, Nach unzähligen Beim Debuggen ist eine PDF-Seite etwa 1362 Pixel groß, aber der Wert wird falsch, je weiter sie geht. Wir wissen immer noch nicht, wie viele Pixel eine PDF-Seite hat.

Aber wkhtmltopdf hat eine gute Methode, die darin besteht, nach dem p-Stil einen Page-Break-inside:avoid; einzufügen, und das ist in Ordnung.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
<title>pdf</title>  
<link href="css/style.css" rel="stylesheet" type="text/css" />  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
</head>  
<style type="text/css">  
*{ margin:0px; padding:0px;}  
div{ width:800px; min-height:1362px;margin:auto;page-break-inside:avoid;}  
</style>  
<body>  
<div style=" background:#030"></div>  
<div style=" background:#033"></div>  
<div style=" background:#369"></div>  
<div style=" background:#F60"></div>  
<div style=" background:#F3C"></div>  
<div style=" background:#F0F"></div>  
<div style=" background:#0FF"></div>  
<div style=" background:#FF0"></div>  
<div style=" background:#00F"></div>  
<div style=" background:#0F0"></div>  
<div style=" background:#033"></div>  
<div style=" background:#369"></div>  
<div style=" background:#F60"></div>  
<div style=" background:#030"></div>  
<div style=" background:#033"></div>  
<div style=" background:#369"></div>  
<div style=" background:#F60"></div>  
<div style=" background:#F3C"></div>  
<div style=" background:#F0F"></div>  
<div style=" background:#0FF"></div>  
<div style=" background:#FF0"></div>  
<div style=" background:#00F"></div>  
<div style=" background:#0F0"></div>  
</body>  
</html>

http://code.google.com/p/wkhtmltopdf/Dies ist eine Kommunikationsplattform für Wkhtmltopdf-Probleme, jedoch auf Englisch.

Weitere Informationen zu diesem Thema finden Sie auf der

PHP-Chinese-Website!

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie HTML mit PHP in eine PDF-Datei. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn