Maison >interface Web >Questions et réponses frontales >Comment convertir du HTML en PDF en Java

Comment convertir du HTML en PDF en Java

PHPz
PHPzoriginal
2023-04-21 11:27:5014506parcourir

Ces dernières années, avec les progrès continus de la numérisation, la demande de documents électroniques est devenue de plus en plus élevée. Dans le travail réel, nous devons souvent convertir des fichiers HTML en fichiers PDF et, dans ce processus, nous devons utiliser la technologie de programmation Java. Cet article présentera la méthode d'implémentation Java de conversion de HTML en PDF sous les trois aspects suivants :

1. Utilisez iText pour convertir du HTML en PDF

iText est une bibliothèque PDF Java populaire qui peut convertir des fichiers HTML en fichiers PDF. iText analyse les fichiers HTML et reconstruit la page à l'aide du langage de balisage PDF. Voici le code clé pour utiliser iText pour convertir du HTML en PDF :

Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("output.pdf"));
document.open();
HTMLWorker htmlWorker = new HTMLWorker(document);
String html = "<html><head></head><body><p>Hello World</p></body></html>";
htmlWorker.parse(new StringReader(html));
document.close();

Le code ci-dessus crée un objet Document pour générer des fichiers PDF, puis utilise PDFWriter pour écrire l'objet Document dans le flux de sortie afin de générer des fichiers PDF. Le HTMLWorker est ensuite utilisé pour analyser le document HTML et l'ajouter à la page PDF. Enfin, fermez l'objet Document pour terminer la génération du fichier PDF.

2. Utilisez Flying Saucer pour convertir du HTML en PDF

Un autre outil Java qui peut être utilisé pour convertir du HTML en PDF est Flying Saucer. Il s'agit d'un moteur de rendu PDF gratuit et open source qui peut convertir des documents HTML au format PDF. Voici un exemple de code pour convertir du HTML en PDF à l'aide de Flying Saucer :

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(htmlContent)));
ITextRenderer iTextRenderer = new ITextRenderer();
iTextRenderer.setDocument(document, null);
iTextRenderer.layout();
OutputStream outputStream = new FileOutputStream("output.pdf");
iTextRenderer.createPDF(outputStream);
outputStream.close();

Le code ci-dessus analyse d'abord le document HTML et le lit dans Document. Ensuite, utilisez la méthode layout() de ITextRenderer pour mettre en page le document. Enfin, utilisez la méthode createPDF() pour générer le fichier PDF dans OutputStream.

3. Utilisez PDFBox pour convertir du HTML en PDF

PDFBox est une bibliothèque PDF Java open source populaire qui fournit de nombreux outils pour créer et traiter des fichiers PDF. Il fournit également des exemples de code HTML vers PDF, l'exemple de code complet peut être consulté ici.

Ce qui suit est un exemple de code pour la conversion HTML en PDF à l'aide de PDFBox :

PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
PDRectangle mediaBox = page.getMediaBox();
float margin = 72;
float startX = mediaBox.getLowerLeftX() + margin;
float startY = mediaBox.getUpperRightY() - margin;
float width = mediaBox.getWidth() - 2 * margin;
String html = "<html><head></head><body><p>Hello World!</p></body></html>";
ByteArrayInputStream bais = new ByteArrayInputStream(html.getBytes());
InputStreamReader isr = new InputStreamReader(bais);
COSDocument cosDoc = new COSDocument();
PDFOperator.reset();
PDPageTree pageTree = new PDPageTree();
PDDOMParser parser = new PDDOMParser(cosDoc);
parser.parse(isr);
PDDocumentOutline outline = new PDDocumentOutline();
document.getDocumentCatalog().setDocumentOutline(outline.getRootNode());
PDOutlineItem item = new PDOutlineItem();
item.setTitle("PDFBox");
PDOutlineItem childItem = new PDOutlineItem();
childItem.setTitle("Hello World 2");
item.addLast(childItem);
outline.getRootNode().addLast(item);
PDAcroForm form = new PDAcroForm(cosDoc);
document.getDocumentCatalog().setAcroForm(form);
PDPageContentStream cs = new PDPageContentStream(document, page);
PDFTextStripper stripper = new PDFTextStripper();
stripper.setStartPage(0);
stripper.setEndPage(1);
String text = stripper.getText(document);
cs.beginText();
cs.setFont(PDType1Font.COURIER, 14);
cs.drawString(text, 100, 100);
cs.endText();
contentStream.close();
document.save("output.pdf");
document.close();

Le code ci-dessus crée d'abord un objet PDDocument et y ajoute une nouvelle page. Ensuite, un objet PDPageContentStream est créé et utilisé pour dessiner du contenu sur la page. Ensuite, utilisez PDDOMParser pour analyser le code HTML dans un objet COSDocument. Enfin, le contenu est écrit dans le flux de sortie pour générer un fichier PDF.

Résumé

HTML vers PDF a une très large gamme d'applications dans le processus de production réel, et cette tâche importante peut être facilement réalisée grâce à la programmation Java. Cet article explique comment convertir du HTML en PDF à l'aide de trois outils : iText, Flying Saucer et PDFBox. Quelle que soit la situation, le développement peut être rendu plus rapide et plus pratique en choisissant la méthode la mieux adaptée aux besoins de votre projet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn