Existe-t-il un moyen de convertir un fichier HTML en fichier PDF en mémoire en Java ?
P粉819533564
P粉819533564 2024-02-26 14:02:31
0
1
412

J'ai reçu un fichier HTML et j'aimerais le convertir en fichier PDF en mémoire. Pendant la conversion, je ne souhaite utiliser aucun emplacement externe pour cela. Tout ce que je veux, c'est le garder en mémoire.

Jusqu'à présent, j'ai essayé quelques bibliothèques Java pour la conversion, mais elles créent toujours un fichier temporaire quelque part, puis lisent/écrivent à partir de celui-ci. Je ne veux effectuer aucune E/S pendant la conversion.

P粉819533564
P粉819533564

répondre à tous(1)
P粉308783585

La classe HTMLWorker était obsolète il y a de nombreuses années. Le but de HTMLWorker est de convertir des fragments HTML petits et simples en objets iText. Il n'a jamais été prévu de convertir des pages HTML complètes en PDF, mais c'est ainsi que de nombreux développeurs tentent de l'utiliser. Cela a entraîné beaucoup de frustration car HTMLWorker ne prenait pas en charge toutes les balises HTML, n'analysait pas les fichiers CSS, etc. Pour éviter cette frustration, HTMLWorker a été supprimé de la dernière version d'iText.

En 2011, iText Group a publié XML Worker en tant qu'outil universel XML vers PDF, basé sur iText 5. L'implémentation par défaut convertit XHTML (données) et CSS (styles) en PDF, mappant les balises HTML, par ex.

, , et
  • aux objets iText 5 tels que Paragraph, Image et ListItem. Nous ne connaissons aucune implémentation utilisant XML Worker pour d'autres formats XML, mais de nombreux développeurs ont utilisé XML Worker en combinaison avec jsoup comme convertisseur HTML2PDF.

    XML Worker n'était cependant pas un outil URL2PDF. XML Worker s'attendait à ce que du HTML prévisible soit créé dans le seul but de convertir ce HTML en PDF. Un cas d'utilisation courant était la création de factures plutôt que de programmer la conception d'une facture en Java ou C#. , les développeurs ont choisi de créer un modèle HTML simple définissant la structure du document et du CSS définissant les styles. Ils ont ensuite rempli le code HTML avec des données et ont utilisé XML Worker pour créer les factures sous forme de documents PDF, supprimant ainsi le code HTML original. Nous examinerons de plus près ce cas d'utilisation au chapitre 4, en convertissant XML en HTML en mémoire à l'aide de XSLT, puis en convertissant ce HTML en PDF à l'aide du module complémentaire pdfHTML.

    iText 5 Lors de sa création initiale, il a été conçu comme un outil permettant de générer des PDF le plus rapidement possible, envoyant la page vers un OutputStream une fois terminée. Lors de la première sortie d'iText en 2000, des choix de conception très significatifs apparaissent encore dans iText 5 16 ans plus tard. Malheureusement, certains de ces choix rendent très difficile, voire impossible, l'extension des fonctionnalités de XML Workers au niveau de qualité attendu par de nombreux développeurs. Si nous voulions vraiment créer un excellent convertisseur HTML en PDF, nous devrions réécrire iText à partir de zéro. Nous l'avons fait.

    En 2016, nous avons publié iText 7, une toute nouvelle version d'iText qui n'est plus compatible avec les versions précédentes mais a été créée avec pdfHTML à l'esprit. Beaucoup de travail a été consacré au nouveau framework de rendu. Lorsque vous créez un document à l'aide d'iText 7, une arborescence de moteurs de rendu et de leurs sous-rendeurs est créée. Les mises en page sont créées en parcourant cette arborescence, qui est mieux adaptée à la gestion de la conversion HTML en PDF. L'objet iText a été entièrement repensé pour mieux correspondre aux balises HTML et permettre un style "à la manière CSS".

    Par exemple : dans iText 5, vous aviez un objet PdfPTable et un objet PdfPCell pour créer un tableau et ses cellules. Si vous souhaitez que chaque cellule contienne du texte dans une police différente de la police par défaut, vous devez définir cette police pour le contenu de chaque cellule distincte. Dans iText 7, vous disposez d'un objet Table et Cell, et lorsque vous définissez une police différente pour le tableau complet, cette police est héritée comme police par défaut pour chaque cellule. C'était une avancée majeure en termes de conception architecturale, surtout si l'objectif est de convertir du HTML en PDF.

    Mais ne nous attardons pas sur le passé, voyons ce que pdfHTML peut faire pour nous. Dans le premier chapitre, nous examinerons différentes variantes de la méthode convertToPdf()/ConvertToPdf() et découvrirons comment le convertisseur est configuré.

    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal