Heim  >  Artikel  >  Web-Frontend  >  So konvertieren Sie HTML in PDF in Java

So konvertieren Sie HTML in PDF in Java

PHPz
PHPzOriginal
2023-04-21 11:27:5014384Durchsuche

Mit der kontinuierlichen Weiterentwicklung der Digitalisierung ist in den letzten Jahren die Nachfrage nach elektronischen Dokumenten immer größer geworden. Bei der eigentlichen Arbeit müssen wir häufig HTML-Dateien in PDF-Dateien konvertieren und dabei die Java-Programmiertechnologie verwenden. In diesem Artikel wird die Java-Implementierungsmethode zum Konvertieren von HTML in PDF anhand der folgenden drei Aspekte vorgestellt:

1 Verwenden Sie iText zum Konvertieren von HTML in PDF

iText ist eine beliebte Java-PDF-Bibliothek, die HTML-Dateien in PDF-Dateien konvertieren kann. iText analysiert HTML-Dateien und rekonstruiert die Seite mithilfe der PDF-Markup-Sprache. Das Folgende ist der Schlüsselcode für die Verwendung von iText zum Konvertieren von HTML in 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();

Der obige Code erstellt ein Document-Objekt zum Generieren von PDF-Dateien und verwendet dann PDFWriter, um das Document-Objekt in den Ausgabestream zu schreiben, um PDF-Dateien zu generieren. Der HTMLWorker wird dann verwendet, um das HTML-Dokument zu analysieren und es der PDF-Seite hinzuzufügen. Schließen Sie abschließend das Document-Objekt, um die Generierung der PDF-Datei abzuschließen.

2. Verwenden Sie Flying Saucer, um HTML in PDF zu konvertieren

Ein weiteres Java-Tool, das zum Konvertieren von HTML in PDF verwendet werden kann, ist Flying Saucer. Es handelt sich um einen kostenlosen Open-Source-PDF-Renderer, der HTML in Dokumente im PDF-Format konvertieren kann. Das Folgende ist ein Beispielcode für die Konvertierung von HTML in PDF mit 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();

Der obige Code analysiert zunächst das HTML-Dokument und liest es in Document ein. Verwenden Sie dann die Methode „layout()“ von ITextRenderer, um das Dokument zu gestalten. Verwenden Sie abschließend die Methode createPDF(), um die PDF-Datei im OutputStream zu generieren.

3. Verwenden Sie PDFBox, um HTML in PDF zu konvertieren

PDFBox ist eine beliebte Open-Source-Java-PDF-Bibliothek, die viele Tools zum Erstellen und Verarbeiten von PDF-Dateien bietet. Es enthält auch einige HTML-zu-PDF-Beispielcodes. Den vollständigen Beispielcode finden Sie hier.

Das Folgende ist ein Beispielcode für die Konvertierung von HTML in PDF mit 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();

Der obige Code erstellt zunächst ein PDDocument-Objekt und fügt ihm eine neue Seite hinzu. Anschließend wird ein PDPageContentStream-Objekt erstellt, das zum Zeichnen von Inhalten auf der Seite verwendet wird. Als nächstes verwenden Sie PDDOMParser, um den HTML-Code in ein COSDocument-Objekt zu analysieren. Abschließend wird der Inhalt in den Ausgabestream geschrieben, um eine PDF-Datei zu generieren.

Zusammenfassung

HTML zu PDF hat ein sehr breites Anwendungsspektrum im tatsächlichen Produktionsprozess, und diese wichtige Aufgabe kann einfach durch Java-Programmierung erledigt werden. In diesem Artikel wird erläutert, wie Sie HTML mit drei Tools in PDF konvertieren: iText, Flying Saucer und PDFBox. Unabhängig von der Situation kann die Entwicklung schneller und bequemer gestaltet werden, indem Sie die Methode wählen, die Ihren Projektanforderungen am besten entspricht.

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie HTML in PDF in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn