Wie konvertieren von HTML in PDF mit iTextSharp
Ich konvertieren möchten, die unterhalb von HTML zu PDF mit iTextSharp, wissen aber nicht, wo Sie anfangen:
<style>
.headline{font-size:200%}
</style>
<p>
This <em>is </em>
<span class="headline" style="text-decoration: underline;">some</span>
<strong>sample<em> text</em></strong>
<span style="color: red;">!!!</span>
</p>
InformationsquelleAutor der Frage Chris Haas | 2014-08-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, HTML und PDF sind nicht miteinander verwandt, obwohl Sie erstellt wurden, um die gleiche Zeit. HTML gedacht ist, zu vermitteln, höhere level-Informationen wie Absätze und Tabellen. Zwar gibt es Methoden, es zu kontrollieren, liegt es letztlich an den browser zu ziehen, diese höhere Ebene der Konzepte. PDF soll vermitteln Dokumente und die Dokumente muss "Blick" das gleiche, wo immer Sie erbracht werden.
In einem HTML-Dokument haben Sie vielleicht einen Absatz mit 100% Breite, und je nach der Breite des Monitors, es dauert vielleicht 2 Zeilen oder 10 Linien und, wenn Sie es drucken, könnte es sein 7 Zeilen und wenn Sie es sehen auf Ihrem Handy, es dauert vielleicht 20 Zeilen. Eine PDF-Datei, jedoch muss unabhängig von der rendering-Gerät, also unabhängig von Ihrer Bildschirmgröße muss immer Rendern genau das gleiche.
Wegen der most oben, PDF nicht unterstützt abstrakte Dinge wie "Tabellen" oder "Absätze". Es gibt drei grundlegende Dinge, die das PDF-Format unterstützt: text, Linien/Formen und Bilder. (Es gibt auch andere Dinge wie Anmerkungen und Filme, aber ich versuche es einfach zu halten hier). In einem PDF-Sie müssen nicht sagen "hier ist ein Absatz, browser-Mach dein Ding!". Stattdessen sagen Sie: "zeichnen Sie diesen text an dieser genauen X -, Y-Position unter Verwendung dieser genauen schriftart und Mach dir keine sorgen, ich hab bisher berechnet die Breite des Textes, so weiß ich, wird es passen alle auf dieser Linie". Sie müssen auch nicht sagen "hier ist ein Tisch", sondern Sie sagen: "zeichnen Sie diesen text an genau diesem Ort und zeichnen Sie dann ein Rechteck auf das andere genauen Standort, den ich zuvor berechnet, so weiß ich, es wird sich um den text".
Zweite, iText und iTextSharp parse HTML und CSS. Das ist es. ASP.Net, MVC, Razor, Struts, Spring, etc, sind alle HTML-frameworks aber iText/iTextSharp ist 100% nicht bewusst. Gleiche mit DataGridViews, Repeater, Vorlagen, Ansichten, etc. die sind alle framework-spezifischen Abstraktionen. Es ist Ihre Verantwortung für den HTML-von Ihrer Wahl von Rahmen, iText wird dir nicht helfen. Wenn Sie eine Ausnahme sagen
The document has no pages
oder Sie denken, dass "iText ist nicht meine HTML-parsing" es ist fast sicher, dass Sie nicht wirklich HTMLSie nur denken, Sie tun.Dritte, die built-in-Klasse, die schon seit Jahren ist die
HTMLWorker
doch diese wurde ersetzt mitXMLWorker
(Java /.Net). Null Arbeit ist getanHTMLWorker
die nicht-Unterstützung von CSS-Dateien und hat nur eingeschränkte Unterstützung für die grundlegenden CSS-Eigenschaften und-eigentlich Sie bricht auf bestimmte tags. Wenn Sie nicht sehen, die HTML-Attribut oder der CSS-Eigenschaft und den Wert in dieser Datei dann ist es wahrscheinlich nicht unterstütztHTMLWorker
.XMLWorker
kann komplizierter sein, aber manchmal diese Komplikationen auch machen mehr erweiterbar.Unten ist C# - code, der zeigt, wie das Parsen von HTML-tags in iText Abstraktionen, bekommen automatisch Hinzugefügt, um das Dokument, an dem Sie arbeiten. C# und Java sind sich sehr ähnlich, so sollte es relativ einfach sein, zu konvertieren. Beispiel #1 verwendet die eingebauten
HTMLWorker
zum Parsen der HTML-string. Da nur inline-styles werden unterstützt dieclass="headline"
wird ignoriert, aber alles andere sollte eigentlich funktionieren. Beispiel #2 ist die gleiche wie die erste, außer dass es verwendetXMLWorker
statt. Beispiel #3 analysiert auch die einfache CSS-Beispiel.2017 update
Gibt es gute Nachrichten für HTML-zu-PDF-Anforderungen. Als diese Antwort zeigtedem W3C-standard css-Pause-3 wird das problem lösen... Es ist eine Candidate Recommendation mit plan zum biegen in die endgültige Empfehlung dieses Jahr, nach tests.
Als nicht-so-standard-es gibt Lösungen, mit plugins für C#, wie gezeigt durch print-css.Felsen.
InformationsquelleAutor der Antwort
@Chris Haas hat sehr gut erklärt, wie zu verwenden
itextSharp
zu konvertierenHTML
zuPDF
sehr hilfreichmeine add ist:
Durch die Verwendung
HtmlTextWriter
ich html-tags innerhalbHTML
Tisch + inline CSS habe ich meine PDF, wie ich wollte, ohne mitXMLWorker
.Bearbeiten: hinzufügen von Beispielcode:
ASPX-Seite:
C# - code:
gehören natürlich iTextSharp Refrences zu cs-Datei
Hoffe, das hilft!
Danke
InformationsquelleAutor der Antwort Sam
Ab 2018, es ist auch iText7 (Eine nächste iteration des alten iTextSharp-Bibliothek) und die HTML-zu-PDF-Paket zur Verfügung: itext7.pdfhtml
Nutzung ist einfach:
Methode hat viele weitere überlastungen.
Update: iText* Familie von Produkten hat dual-licensing-Modell: kostenlos für open source, bezahlt für den gewerblichen Einsatz.
InformationsquelleAutor der Antwort George Chakhidze
Ich verwende den folgenden code zum erstellen von PDF -
InformationsquelleAutor der Antwort Jonas T
Hier ist der link, den ich als Anleitung benutzt. Hoffe, das hilft!
Konvertieren von HTML in PDF mit ITextSharp
Können Sie download der Beispieldatei. Legen Sie einfach die
html
die Sie konvertieren möchten, in diefiles
Ordner und ausführen. Es generiert automatisch die pdf-Datei und platzieren Sie es im gleichen Ordner. Aber in Ihrem Fall ist, können Sie Ihre html-Pfad in derhtmlFileName
variable.InformationsquelleAutor der Antwort Harambe Attack Helicopter