Ich möchte ein PDF generieren, indem ich HTML-Inhalte an eine Funktion übergebe. Ich habe iTextSharp dafür verwendet, aber es funktioniert nicht gut, wenn es auf Tabellen stößt und das Layout nur chaotisch wird.
Gibt es einen besseren Weg?
c#
html
pdf
itextsharp
Amedee Van Gasse
quelle
quelle
Antworten:
BEARBEITEN: Neuer Vorschlag HTML Renderer für PDF mit PdfSharp
(Nachdem Sie wkhtmltopdf ausprobiert und vorgeschlagen haben, es zu vermeiden)
HtmlRenderer.PdfSharp ist ein 100% vollständig C # -verwalteter Code , einfach zu verwenden, threadsicher und vor allem KOSTENLOS ( neue BSD-Lizenz ) .
Verwendungszweck
Verwenden Sie die Beispielmethode.
Eine sehr gute Alternative ist eine kostenlose Version von iTextSharp
Bis Version 4.1.6 wurde iTextSharp unter der LGPL-Lizenz lizenziert und Versionen bis 4.16 (oder möglicherweise auch Gabeln) sind als Pakete verfügbar und können frei verwendet werden. Natürlich kann jemand die fortgesetzte 5+ kostenpflichtige Version verwenden .
Ich habe versucht, wkhtmltopdf- Lösungen in mein Projekt zu integrieren, und hatte einige Hürden.
Ich persönlich würde die Verwendung von wkhtmltopdf-basierten Lösungen für Hosted Enterprise-Anwendungen aus folgenden Gründen vermeiden .
--- PRE Edit Section ---
Für alle, die in einfacheren Anwendungen / Umgebungen PDF aus HTML generieren möchten, lasse ich meinen alten Beitrag als Vorschlag.
DiPechkin
https://www.nuget.org/packages/TuesPechkin/
oder speziell für MVC- Webanwendungen (aber ich denke, Sie können es in jeder .net-Anwendung verwenden)
Rotativa
https://www.nuget.org/packages/Rotativa/
Beide verwenden die Binärdatei wkhtmtopdf, um HTML in PDF zu konvertieren. Was nutzt die WebKit - Engine zum Rendern der Seiten so kann es auch Parse - CSS - Stylesheets .
Sie bieten eine benutzerfreundliche nahtlose Integration in C #.
Rotativa kann auch direkt PDFs aus jeder Razor View generieren .
Zusätzlich verwalten sie für echte Webanwendungen auch die Thread-Sicherheit usw.
quelle
Update: Ich würde jetzt PupeteerSharp über wkhtmltopdf empfehlen .
Versuchen Sie es mit wkhtmtopdf . Es ist das beste Werkzeug, das ich bisher gefunden habe.
Für .NET können Sie diese kleine Bibliothek verwenden , um das Befehlszeilenprogramm wkhtmtopdf einfach aufzurufen.
quelle
Ich habe kürzlich einen PoC zur Konvertierung von HTML in PDF durchgeführt und wollte meine Ergebnisse teilen.
Mein Favorit bei weitem ist OpenHtmlToPdf
Vorteile dieses Tools:
Andere getestete Tools:
quelle
using IronPdf; IronPdf.HtmlToPdf Renderer = new IronPdf.HtmlToPdf(); // Render an HTML document or snippet as a string Renderer.RenderHtmlAsPdf("<h1>Hello World</h1>").SaveAs("html-string.pdf");
background-color
. OpenHtmlToPdf funktioniert perfekt kostenlos.Letzte Aktualisierung: März 2020
Dies ist die Liste der Optionen für die Konvertierung von HTML in PDF in .NET, die ich zusammengestellt habe (einige kostenlos, andere kostenpflichtig).
GemBox.Document
PDF Metamorphosis .Net
HtmlRenderer.PdfSharp
PuppenspielerSharp
EO.Pdf
WnvHtmlToPdf_x64
IronPdf
Spire.PDF
Free Spire.PDF für .NET (Community-Version)
Aspose.Html
EvoPDF
ExpertPdfHtmlToPdf
Zetpdf
PDFtron
WkHtmlToXSharp
SelectPDF
Wenn Ihnen keine der oben genannten Optionen hilft, können Sie jederzeit in den NuGet-Paketen https://www.nuget.org/packages?q=html+pdf suchen
quelle
Die meisten HTML-zu-PDF-Konverter verwenden den IE zum Parsen und Rendern von HTML. Dies kann unterbrochen werden, wenn Benutzer ihren IE aktualisieren. Hier ist eine, die nicht auf IE basiert.
Der Code ist ungefähr so:
Wie bei vielen anderen Konvertern können Sie Text, Dateinamen oder URL übergeben. Das Ergebnis kann in einer Datei oder einem Stream gespeichert werden.
quelle
Ich kann NReco nur wärmstens empfehlen . Es hat die kostenlose und kostenpflichtige Version und ist es wirklich wert. Es verwendet wkhtmtopdf im Hintergrund, aber Sie benötigen nur eine Assembly. Fantastisch.
Anwendungsbeispiel:
Installation über NuGet .
Haftungsausschluss: Ich bin nicht der Entwickler, nur ein Fan des Projekts :)
quelle
Winnovative bietet eine .Net PDF-Bibliothek, die HTML-Eingaben unterstützt. Sie bieten eine unbegrenzte kostenlose Testversion . Je nachdem, wie Sie Ihr Projekt bereitstellen möchten, kann dies ausreichend sein.
quelle
Essential PDF kann verwendet werden, um HTML in PDF zu konvertieren : C # -Beispiel . Das hier verlinkte Beispiel basiert auf ASP.NET, die Bibliothek kann jedoch in Windows Forms, WPF, ASP.NET Webforms und ASP.NET MVC verwendet werden. Die Bibliothek bietet die Möglichkeit, verschiedene HTML-Rendering-Engines zu verwenden: Internet Explorer (Standard) und WebKit (beste Ausgabe).
Die gesamte Steuerungssuite ist kostenlos (auch kommerzielle Anwendungen) über das Community-Lizenzprogramm verfügbar , wenn Sie sich qualifizieren. Die Community-Lizenz ist das vollständige Produkt ohne Einschränkungen oder Wasserzeichen.
Hinweis: Ich arbeite für Syncfusion.
quelle
Wenn Sie keine echte .Net PDF-Bibliothek benötigen, gibt es zahlreiche kostenlose HTML-zu-PDF-Tools , von denen viele über eine Befehlszeile ausgeführt werden können.
Eine Lösung wäre, eine davon auszuwählen und dann in C # einen dünnen Wrapper darum zu schreiben. ZB wie in diesem Tutorial gemacht .
quelle
Ich habe ExpertPDF Html To Pdf Converter verwendet . Macht einen anständigen Job. Leider ist es nicht kostenlos.
quelle
Es gibt auch eine neue webbasierte App zur Dokumentenerstellung - DocRaptor.com . Scheint einfach zu bedienen und es gibt eine kostenlose Option.
quelle
Update 2018, und verwenden wir die Standard-HTML + CSS = PDF-Gleichung!
Es gibt gute Nachrichten für HTML-zu-PDF-Anforderungen. Wie diese Antwort gezeigt hat , wird der W3C-Standard css-break-3 das Problem lösen ... Es handelt sich um eine Kandidatenempfehlung, die nach Tests 2017 oder 2018 in eine endgültige Empfehlung umgewandelt werden soll.
Als nicht so Standard gibt es Lösungen mit Plugins für C #, wie print-css.rocks zeigt .
quelle
Sie können die Print-to-PDF-Funktion von Google Chrome im Headless-Modus verwenden. Ich fand, dass dies die einfachste und zugleich robusteste Methode ist.
quelle
ABCpdf.NET (http://www.websupergoo.com/abcpdf-5.htm)
Wir verwenden und empfehlen.
Sehr gute Komponente, es konvertiert nicht nur eine Webseite wie ein Bild in PDF, sondern konvertiert wirklich Text, Bild, Formatierung usw.
Es ist nicht kostenlos, aber billig.
quelle
Unten finden Sie ein Beispiel für die Konvertierung von HTML + CSS in PDF mit iTextSharp (iTextSharp + itextsharp.xmlworker).
quelle
Dies hängt von allen anderen Anforderungen ab, die Sie haben.
Eine wirklich einfache, aber nicht einfach zu implementierende Lösung besteht darin, ein WebBrowser-Steuerelement zum Laden des HTML-Codes zu verwenden und dann mit der Druckmethode auf einem lokal installierten PDF-Drucker zu drucken. Es stehen mehrere kostenlose PDF-Drucker zur Verfügung, und das WebBrowser-Steuerelement ist Teil des .Net-Frameworks.
BEARBEITEN: Wenn Ihr HTML XHtml ist, können Sie PDFizer verwenden , um die Arbeit zu erledigen.
quelle
PDF Vision ist gut. Sie müssen jedoch über Full Trust verfügen, um es verwenden zu können. Ich habe bereits eine E-Mail gesendet und gefragt, warum mein HTML-Code nicht auf dem Server konvertiert wurde, aber auf localhost hat es einwandfrei funktioniert.
quelle
Ich bin der Autor des Rotativa-Pakets. Es ermöglicht das Erstellen von PDF-Dateien direkt aus Rasiermesseransichten:
https://www.nuget.org/packages/Rotativa/
Die Verwendung ist einfach und Sie haben die volle Kontrolle über das Layout, da Sie Rasiermesseransichten mit Daten aus Ihrem Model- und ViewBag-Container verwenden können.
Ich habe eine SaaS-Version unter Azure entwickelt. Es macht es noch einfacher, es über WebApi oder eine beliebige .NET-App, einen Dienst, eine Azure-Website oder einen Azure-Webjob zu verwenden, unabhängig davon, was .NET ausgeführt wird.
http://www.rotativahq.com/
Kostenlose Konten verfügbar.
quelle
Ich fand die folgende Bibliothek effektiver bei der Konvertierung von HTML in PDF.
nuget : https://www.nuget.org/packages/Select.HtmlToPdf/
quelle
Ich habe auch vor einiger Zeit danach gesucht. Ich bin auf HTMLDOC gestoßen http://www.easysw.com/htmldoc/ , eine kostenlose Open-Source-Befehlszeilen-App, die eine HTML-Datei als Argument verwendet und daraus eine PDF-Datei ausspuckt. Es hat für mich ziemlich gut für mein Nebenprojekt funktioniert, aber es hängt alles davon ab, was Sie tatsächlich brauchen.
Das Unternehmen, das es herstellt, verkauft die kompilierten Binärdateien. Sie können sie jedoch kostenlos herunterladen, aus dem Quellcode kompilieren und kostenlos verwenden. Ich habe es geschafft, eine ziemlich aktuelle Version (für Version 1.9) zu kompilieren, und ich beabsichtige, in ein paar Tagen ein Binärinstallationsprogramm dafür zu veröffentlichen. Wenn Sie also interessiert sind, kann ich einen Link dazu bereitstellen, sobald ich es poste.
Bearbeiten (25.02.2014): Die Dokumente und die Website wurden anscheinend auf http://www.msweet.org/projects.php?Z1 verschoben
quelle
Sie müssen eine kommerzielle Bibliothek verwenden, wenn Sie ein perfektes HTML-Rendering im PDF-Format benötigen.
ExpertPdf Html To Pdf Converter ist sehr einfach zu bedienen und unterstützt das neueste HTML5 / CSS3. Sie können entweder eine ganze URL in PDF konvertieren:
oder eine HTML-Zeichenfolge:
Sie haben auch die Möglichkeit, das generierte PDF-Dokument direkt in einem Dateistream auf der Festplatte zu speichern.
quelle
Dies ist eine kostenlose Bibliothek und funktioniert sehr einfach: OpenHtmlToPdf
quelle
Bisher scheint die beste kostenlose .NET-Lösung die TuesdayPechkin- Bibliothek zu sein, die die native wkhtmltopdf- Bibliothek umgibt .
Ich habe jetzt die Single-Threaded-Version verwendet, um ein paar tausend HTML-Zeichenfolgen in PDF-Dateien zu konvertieren, und es scheint großartig zu funktionieren. Es soll auch in Multithread-Umgebungen (z. B. IIS) funktionieren, aber das habe ich nicht getestet.
Da ich die neueste Version von wkhtmltopdf (0.12.5 zum Zeitpunkt des Schreibens) verwenden wollte, lud ich die DLL von der offiziellen Website herunter, kopierte sie in mein Projektstammverzeichnis, setzte die Ausgabe auf true und initialisierte die Bibliothek wie folgt damit:
Der obige Code sucht genau nach "wkhtmltox.dll". Benennen Sie die Datei also nicht um. Ich habe die 64-Bit-Version der DLL verwendet.
Stellen Sie sicher, dass Sie die Anweisungen für Multithread-Umgebungen lesen, da Sie sie nur einmal pro App-Lebenszyklus initialisieren müssen, damit Sie sie in einen Singleton oder etwas anderes einfügen müssen.
quelle
Hier ist ein Wrapper für wkhtmltopdf.dll von pruiz
Und ein Wrapper für wkhtmltopdf.exe von Codaxy
- auch auf Nuget .
quelle
No tests are run because no tests are loaded or the selected tests are disabled
googeln hilft auch nichtDas beste Tool, das ich gefunden und zum Generieren von PDFs von Javascript und Stilen für gerenderte Ansichten oder HTML-Seiten verwendet habe, ist phantomJS .
Laden Sie die EXE-Datei mit der Funktion rasterize.js herunter, die sich im Stammverzeichnis der exe des Beispielordners befindet, und fügen Sie sie in die Lösung ein.
Es ermöglicht Ihnen sogar, die Datei in einem beliebigen Code herunterzuladen, ohne diese Datei zu öffnen. Außerdem können Sie die Datei herunterladen, wenn die Stile und speziell die Abfrage angewendet werden.
Der folgende Code generiert eine PDF-Datei:
quelle
Sie können auch Spire aktivieren , um
HTML to PDF
mit diesem einfachen Code zu erstellenAusführlicher Artikel: So konvertieren Sie HTML in PDF in asp.net C #
quelle
Als Vertreter der HiQPdf-Software glaube ich, dass die beste Lösung der HiQPdf-HTML-PDF-Konverter für .NET ist . Es enthält die fortschrittlichste HTML5-, CSS3-, SVG- und JavaScript-Rendering-Engine auf dem Markt. Es gibt auch eine kostenlose Version der HTML-zu-PDF-Bibliothek, mit der Sie bis zu 3 PDF-Seiten kostenlos erstellen können. Der minimale C # -Code zum Erstellen einer PDF-Datei als Byte [] aus einer HTML-Seite lautet:
Detailliertere Beispiele für ASP.NET und MVC finden Sie im HiQPdf HTML to PDF Converter-Beispielrepository .
quelle
Sehr wahrscheinlich werden die meisten Projekte eine C / C ++ - Engine umschließen, anstatt eine C # -Lösung von Grund auf neu zu implementieren. Probieren Sie Project Gotenberg aus .
Um es zu testen
Curl Beispiel
C # sample.cs
Kompilieren
quelle
Probieren Sie diese PDF Duo .Net- Konvertierungskomponente zum Konvertieren von HTML in PDF aus einer ASP.NET- Anwendung aus, ohne zusätzliche DLLs zu verwenden.
Sie können die HTML-Zeichenfolge oder -Datei übergeben oder streamen, um die PDF-Datei zu generieren. Verwenden Sie den folgenden Code (Beispiel C #):
Beispiele für Info + C # / VB finden Sie unter: http://www.duodimension.com/html_pdf_asp.net/component_html_pdf.aspx
quelle
Verwenden Sie ABCpdf, um HTML in PDF in C # zu konvertieren .
ABCpdf kann die Rendering-Engines von Gecko oder Trident verwenden, sodass Ihre HTML-Tabelle genauso aussieht wie in FireFox und Internet Explorer.
Es gibt eine Online-Demo von ABCpdf unter www.abcpdfeditor.com. Auf diese Weise können Sie überprüfen, wie Ihre Tabellen zuerst gerendert werden, ohne dass Sie Software herunterladen und installieren müssen.
Zum Rendern ganzer Webseiten benötigen Sie die Funktionen AddImageUrl oder AddImageHtml. Wenn Sie jedoch nur Text im HTML-Stil hinzufügen möchten, können Sie die AddHtml-Funktion wie folgt ausprobieren:
ABCpdf ist ein kommerzieller Softwaretitel, die Standard Edition ist jedoch häufig kostenlos im Rahmen eines Sonderangebots erhältlich.
quelle
However, you must disclose your affiliation with the product in your answers. Also, if a huge percentage of your posts include a mention of your product, you're clearly here for the wrong reasons.
Alle Ihre Antworten waren über ABCpdf