Je veux générer un PDF en passant du contenu HTML à une fonction. J'ai utilisé iTextSharp pour cela, mais il ne fonctionne pas bien lorsqu'il rencontre des tables et que la mise en page devient tout simplement désordonnée.
Y a-t-il une meilleure façon?
c#
html
pdf
itextsharp
Amédée Van Gasse
la source
la source
Réponses:
EDIT: nouvelle suggestion HTML Renderer pour PDF en utilisant PdfSharp
(Après avoir essayé wkhtmltopdf et suggéré de l'éviter)
HtmlRenderer.PdfSharp est un code 100% entièrement géré en C # , facile à utiliser, sûr pour les threads et surtout GRATUIT ( nouvelle licence BSD ) .
Usage
Utilisez un exemple de méthode.
Une très bonne alternative est une version gratuite d' iTextSharp
Jusqu'à la version 4.1.6 iTextSharp était sous licence LGPL et les versions jusqu'à 4.16 (ou il peut y avoir aussi des fourches) sont disponibles sous forme de packages et peuvent être utilisées librement. Bien sûr, quelqu'un peut utiliser la version payante continue 5+ .
J'ai essayé d'intégrer des solutions wkhtmltopdf sur mon projet et j'ai eu un tas d'obstacles.
Personnellement, j'éviterais d' utiliser des solutions basées sur wkhtmltopdf sur les applications Hosted Enterprise pour les raisons suivantes.
--- Section PRE Edit ---
Pour tous ceux qui veulent générer du pdf à partir de html dans des applications / environnements plus simples, je laisse mon ancien message comme suggestion.
MardiPechkin
https://www.nuget.org/packages/TuesPechkin/
ou spécialement pour les applications Web MVC (mais je pense que vous pouvez l'utiliser dans n'importe quelle application .net)
Rotativa
https://www.nuget.org/packages/Rotativa/
Ils utilisent tous les deux le binaire wkhtmtopdf pour convertir le html en pdf. Qui utilise le moteur webkit pour le rendu des pages afin qu'il puisse également analyser les feuilles de style CSS .
Ils offrent une intégration transparente facile à utiliser avec C #.
Rotativa peut également générer directement des PDF à partir de n'importe quelle vue Razor .
De plus, pour les applications Web réelles, ils gèrent également la sécurité des threads, etc.
la source
Mise à jour: je recommanderais maintenant PupeteerSharp sur wkhtmltopdf.
Essayez wkhtmtopdf . C'est le meilleur outil que j'ai trouvé jusqu'à présent.
Pour .NET, vous pouvez utiliser cette petite bibliothèque pour appeler facilement l'utilitaire de ligne de commande wkhtmtopdf.
la source
J'ai récemment effectué un PoC concernant la conversion HTML en PDF et je voulais partager mes résultats.
Mon préféré est de loin OpenHtmlToPdf
Avantages de cet outil:
Autres outils testés:
la source
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 fonctionne parfaitement gratuitement.Dernière mise à jour: mars 2020
Voici la liste des options de conversion HTML en PDF dans .NET que j'ai rassemblées (certaines gratuites, d'autres payantes)
GemBox.Document
PDF Metamorphosis .Net
HtmlRenderer.PdfSharp
PuppeteerSharp
EO.Pdf
WnvHtmlToPdf_x64
IronPdf
Spire.PDF
Spire.PDF gratuit pour .NET (version communautaire)
Aspose.Html
EvoPDF
ExpertPdfHtmlToPdf
Zetpdf
PDFtron
WkHtmlToXSharp
SelectPDF
Si aucune des options ci-dessus ne vous aide, vous pouvez toujours rechercher les packages NuGet https://www.nuget.org/packages?q=html+pdf
la source
La plupart des convertisseurs HTML en PDF s'appuient sur IE pour effectuer l'analyse et le rendu HTML. Cela peut se casser lorsque l'utilisateur met à jour son IE. En voici un qui ne repose pas sur IE.
Le code est quelque chose comme ceci:
Comme de nombreux autres convertisseurs, vous pouvez transmettre du texte, un nom de fichier ou une URL. Le résultat peut être enregistré dans un fichier ou un flux.
la source
Je recommande fortement NReco , sérieusement. Il a la version gratuite et payante, et ça vaut vraiment le coup. Il utilise wkhtmtopdf en arrière-plan, mais vous n'avez besoin que d'un seul assemblage. Fantastique.
Exemple d'utilisation:
Installez via NuGet .
Avertissement: je ne suis pas le développeur, je suis juste un fan du projet :)
la source
Winnovative propose une bibliothèque PDF .Net qui prend en charge la saisie HTML. Ils offrent un essai gratuit illimité . Selon la façon dont vous souhaitez déployer votre projet, cela peut être suffisant.
la source
Le PDF essentiel peut être utilisé pour convertir HTML en PDF : exemple C # . L'exemple lié ici est basé sur ASP.NET, mais la bibliothèque peut être utilisée à partir de Windows Forms, WPF, ASP.NET Webforms et ASP.NET MVC. La bibliothèque offre la possibilité d'utiliser différents moteurs de rendu HTML: Internet Explorer (par défaut) et WebKit (meilleure sortie).
Toute la suite de contrôles est disponible gratuitement (applications commerciales également) via le programme de licence communautaire si vous êtes admissible. La licence communautaire est le produit complet sans limitation ni filigrane.
Remarque: je travaille pour Syncfusion.
la source
Si vous n'avez pas vraiment besoin d'une véritable bibliothèque PDF .Net, il existe de nombreux outils HTML vers PDF gratuits , dont beaucoup peuvent s'exécuter à partir d'une ligne de commande.
Une solution serait de choisir l'un d'entre eux, puis d'écrire un wrapper fin autour de cela en C #. Par exemple, comme cela est fait dans ce tutoriel .
la source
J'ai utilisé ExpertPDF Html To Pdf Converter . Fait un travail décent. Malheureusement, ce n'est pas gratuit.
la source
Il existe également une nouvelle application de génération de documents basée sur le Web - DocRaptor.com . Semble facile à utiliser, et il y a une option gratuite.
la source
Mise à jour de 2018, et utilisons l'équation HTML + CSS = PDF standard!
Il y a de bonnes nouvelles pour les demandes HTML-PDF. Comme cette réponse l'a montré , la norme css-break-3 du W3C résoudra le problème ... Il s'agit d'une Recommandation Candidate avec un projet de transformation en Recommandation définitive en 2017 ou 2018, après tests.
Comme pas si standard, il existe des solutions, avec des plugins pour C #, comme le montre print-css.rocks .
la source
Vous pouvez utiliser la fonction d'impression au format PDF de Google Chrome à partir de son mode sans tête. J'ai trouvé que c'était la méthode la plus simple mais la plus robuste.
la source
ABCpdf.NET (http://www.websupergoo.com/abcpdf-5.htm)
Nous utilisons et recommandons.
Très bon composant, il convertit non seulement une page Web en PDF comme une image mais convertit vraiment du texte, une image, un formatage, etc ...
Ce n'est pas gratuit mais c'est bon marché.
la source
Je suis l'auteur du package Rotativa. Il permet de créer des fichiers PDF directement à partir de vues de rasoir:
https://www.nuget.org/packages/Rotativa/
Facile à utiliser et vous avez un contrôle total sur la mise en page puisque vous pouvez utiliser des vues de rasoir avec les données de votre conteneur Model et ViewBag.
J'ai développé une version SaaS sur Azure. Il facilite encore plus son utilisation à partir de WebApi ou de n'importe quelle application, service, site Web Azure, travail Web Azure, quel que soit l'exécution de .Net.
http://www.rotativahq.com/
Comptes gratuits disponibles.
la source
Voici un exemple de conversion de html + css en PDF à l'aide d'iTextSharp (iTextSharp + itextsharp.xmlworker)
la source
Cela dépend de toutes les autres exigences que vous avez.
Une solution vraiment simple mais pas facilement déployable consiste à utiliser un contrôle WebBrowser pour charger le code HTML, puis à utiliser la méthode d'impression pour imprimer sur une imprimante PDF installée localement. Plusieurs imprimantes PDF gratuites sont disponibles et le contrôle WebBrowser fait partie du framework .Net.
EDIT: Si votre Html est XHtml, vous pouvez utiliser PDFizer pour faire le travail.
la source
PDF Vision est bon. Cependant, vous devez avoir la confiance totale pour l'utiliser. J'ai déjà envoyé un courriel et demandé pourquoi mon code HTML n'était pas converti sur le serveur, mais cela fonctionnait bien sur localhost.
la source
J'ai trouvé la bibliothèque suivante plus efficace pour convertir le html en pdf.
nuget : https://www.nuget.org/packages/Select.HtmlToPdf/
la source
Je le cherchais aussi il y a quelque temps. J'ai rencontré HTMLDOC http://www.easysw.com/htmldoc/ qui est une application de ligne de commande open source gratuite qui prend un fichier HTML comme argument et en crache un PDF. Cela a assez bien fonctionné pour moi pour mon projet parallèle, mais tout dépend de ce dont vous avez réellement besoin.
L'entreprise qui le fabrique vend les binaires compilés, mais vous êtes libre de télécharger et de compiler à partir de la source et de l'utiliser gratuitement. J'ai réussi à compiler une révision assez récente (pour la version 1.9) et j'ai l'intention de publier un programme d'installation binaire pour elle dans quelques jours, donc si vous êtes intéressé, je peux fournir un lien vers elle dès que je la posterai.
Edit (25/02/2014): On dirait que les documents et le site ont été déplacés vers http://www.msweet.org/projects.php?Z1
la source
Vous devez utiliser une bibliothèque commerciale si vous avez besoin d'un rendu html parfait en pdf.
ExpertPdf Html To Pdf Converter est très facile à utiliser et il prend en charge le dernier html5 / css3. Vous pouvez soit convertir une URL entière en pdf:
ou une chaîne html:
Vous avez également la possibilité d'enregistrer directement le document PDF généré dans un flux de fichiers sur le disque.
la source
Ceci est une bibliothèque gratuite et fonctionne très facilement: OpenHtmlToPdf
la source
Il semble que jusqu'à présent, la meilleure solution gratuite .NET soit la bibliothèque TuesdayPechkin qui est un wrapper autour de la bibliothèque native wkhtmltopdf .
J'ai maintenant utilisé la version à un seul thread pour convertir quelques milliers de chaînes HTML en fichiers PDF et cela semble très bien fonctionner. Il est censé fonctionner également dans des environnements multithreads (IIS, par exemple) mais je ne l'ai pas testé.
De plus, comme je voulais utiliser la dernière version de wkhtmltopdf (0.12.5 au moment de la rédaction), j'ai téléchargé la DLL depuis le site officiel, l'ai copiée dans la racine de mon projet, défini la copie sur sortie sur true et initialisé la bibliothèque comme donc:
Le code ci-dessus cherchera exactement "wkhtmltox.dll", donc ne renommez pas le fichier. J'ai utilisé la version 64 bits de la DLL.
Assurez-vous de lire les instructions pour les environnements multi-threads, car vous devrez l'initialiser une seule fois par cycle de vie de l'application, vous devrez donc le mettre dans un singleton ou quelque chose.
la source
Voici un wrapper pour wkhtmltopdf.dll par pruiz
Et un wrapper pour wkhtmltopdf.exe par Codaxy
- également sur nuget .
la source
No tests are run because no tests are loaded or the selected tests are disabled
googler n'aide pas non plusLe meilleur outil que j'ai trouvé et utilisé pour générer des PDF de javascript et de styles rendus ou des pages html est phantomJS .
Téléchargez le fichier .exe avec la fonction rasterize.js trouvée à la racine de l'exe du dossier d'exemples et placez-la dans la solution.
Il vous permet même de télécharger le fichier dans n'importe quel code sans ouvrir ce fichier, il permet également de télécharger le fichier lorsque les styles et spécialement jquery sont appliqués.
Le code suivant génère un fichier PDF:
la source
Vous pouvez également vérifier Spire , il vous permet de créer
HTML to PDF
avec ce simple morceau de codeArticle détaillé: Comment convertir HTML en PDF dans asp.net C #
la source
En tant que représentant du logiciel HiQPdf, je pense que la meilleure solution est le convertisseur HiQPdf HTML vers PDF pour .NET . Il contient le moteur de rendu HTML5, CSS3, SVG et JavaScript le plus avancé du marché. Il existe également une version gratuite de la bibliothèque HTML vers PDF que vous pouvez utiliser pour produire gratuitement jusqu'à 3 pages PDF. Le code C # minimal pour produire un PDF sous forme d'octet [] à partir d'une page HTML est:
Vous pouvez trouver des exemples plus détaillés pour ASP.NET et MVC dans le référentiel d'exemples HiQPdf HTML to PDF Converter .
la source
Il est probable que la plupart des projets encapsuleront un moteur C / C ++ plutôt que d'implémenter une solution C # à partir de zéro. Essayez le projet Gotenberg .
Pour le tester
Exemple de boucle
C # sample.cs
Compiler
la source
Essayez ce composant de conversion PDF Duo .Net pour convertir HTML en PDF à partir d'une application ASP.NET sans utiliser de DLL supplémentaires.
Vous pouvez transmettre la chaîne ou le fichier HTML ou diffuser pour générer le PDF. Utilisez le code ci-dessous (exemple C #):
Exemples Info + C # / VB que vous pouvez trouver sur: http://www.duodimension.com/html_pdf_asp.net/component_html_pdf.aspx
la source
Pour convertir HTML en PDF en C #, utilisez ABCpdf .
ABCpdf peut utiliser les moteurs de rendu Gecko ou Trident, de sorte que votre tableau HTML sera identique à celui qui apparaît dans FireFox et Internet Explorer.
Il y a une démo en ligne d'ABCpdf sur www.abcpdfeditor.com. Vous pouvez l'utiliser pour vérifier le rendu de vos tableaux en premier, sans avoir à télécharger et installer de logiciel.
Pour afficher des pages Web entières, vous aurez besoin des fonctions AddImageUrl ou AddImageHtml. Mais si tout ce que vous voulez faire est simplement d'ajouter du texte de style HTML, vous pouvez essayer la fonction AddHtml, comme ci-dessous:
ABCpdf est un logiciel commercial, mais l'édition standard peut souvent être obtenue gratuitement dans le cadre d'une offre spéciale.
la source
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.
Toutes vos réponses concernaient ABCpdf