JavaでHTMLをPDFに変換する方法

PHPz
PHPzオリジナル
2023-04-21 11:27:5014507ブラウズ

近年、デジタル化の進展に伴い、電子文書の需要はますます高まっています。実際の業務ではHTMLファイルをPDFファイルに変換する必要が生じることが多く、その際にはJavaプログラミング技術を使用する必要があります。この記事では、HTML を PDF に変換する Java 実装方法を次の 3 つの側面から紹介します:

1. iText を使用して HTML を PDF に変換する

iText は、変換できる人気のある Java PDF ライブラリです。 HTML から PDF ファイルを PDF ファイルに変換します。 iText は HTML ファイルを解析し、PDF マークアップ言語を使用してページを再構築します。以下は、iText を使用して HTML を 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();

上記のコードは、PDF ファイルを生成するための Document オブジェクトを作成し、次に PDFWriter を使用して Document オブジェクトを出力ストリームに書き込み、PDF を生成します。ファイル。次に、HTMLWorker を使用して HTML ドキュメントが解析され、PDF ページに追加されます。最後に、Document オブジェクトを閉じて、PDF ファイルの生成を完了します。

2. Flying Saucer を使用して HTML を PDF に変換する

HTML を PDF に変換するために使用できるもう 1 つの Java ツールは、Flying Saucer です。これは、HTML を PDF 形式のドキュメントに変換できる、無料のオープンソース PDF レンダラーです。以下は、Flying Saucer を使用して HTML を PDF に変換するサンプル コードです。

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();

上記のコードは、まず HTML ドキュメントを解析し、それを Document に読み込みます。次に、ITextRenderer のlayout() メソッドを使用してドキュメントをレイアウトします。最後に、createPDF() メソッドを使用して PDF ファイルを出力ストリームに生成します。

3. PDFBox を使用して HTML を PDF に変換する

PDFBox は、PDF ファイルを作成および処理するための多くのツールを提供する、人気のあるオープン ソース Java PDF ライブラリです。また、HTML から PDF へのサンプル コードも提供しています。完全なサンプル コードはここでご覧いただけます。

次は、PDFBox を使用して HTML を PDF に変換するサンプル コードです:

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();

上記のコードは、まず PDDocument オブジェクトを作成し、それに新しいページを追加します。次に、ページ上にコンテンツを描画するために使用される PDPageContentStream オブジェクトが作成されます。次に、PDDOMParser を使用して HTML を COSDocument オブジェクトに解析します。最後に、コンテンツが出力ストリームに書き込まれ、PDF ファイルが生成されます。

概要

HTML から PDF への変換は、実際の制作プロセスで非常に広範囲に応用でき、この重要なタスクは Java プログラミングを通じて簡単に完了できます。この記事では、iText、Flying Saucer、PDFBox の 3 つのツールを使用して HTML を PDF に変換する方法を紹介します。どのような状況であっても、プロジェクトのニーズに最適な方法を選択することで、開発をより迅速かつ便利に行うことができます。

以上がJavaでHTMLをPDFに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。