使用 iText 从多个 HTML 页面生成 PDF
Generate PDF from multiple HTML pages using iText
我知道如何生成单个 HTML 页面。我想知道如何从多个 HTML 页面生成的 pdf 生成单个 pdf 页面。
例如有HTMLX1.html
还有另一个文件HTMLX2.html
我可以从 html 分别生成单独的 pdf 文件 PDFX1.pdf
和 PDFX2.pdf
。我可以将它们写入文件系统,然后像 iTextConcatenate Example.
那样连接它们
我只是想知道是否可以在不将它们写入文件系统的情况下即时组合此操作。我无法识别丢失的 link
如果您想避免写入文件,可以使用 StringReader
和 StringWriter
。
Oracle 文档:
它仍然是一个 I/O 过程,但您不会写入或读取实际文件。相反,您将使用字符串缓冲区。
当您创建 PDFX1.pdf 时,使用 PdfWriter
和 ByteArrayOutputStream
而不是 FileOutputStream
:
ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
PdfWriter writer = PdfWriter.getInstance(document, baos1);
连接 PDF 文档时,使用 PdfReader
和 ByteArrayInputStream
:
PdfReader reader = new PdfReader(new ByteArrayInputStream(baos1.toByteArray()));
或者你也可以直接使用字节数组:
PdfReader reader = new PdfReader(baos1.toByteArray());
(对 PDFX2.pdf 执行类似操作。)
我知道如何生成单个 HTML 页面。我想知道如何从多个 HTML 页面生成的 pdf 生成单个 pdf 页面。
例如有HTMLX1.html
还有另一个文件HTMLX2.html
我可以从 html 分别生成单独的 pdf 文件 PDFX1.pdf
和 PDFX2.pdf
。我可以将它们写入文件系统,然后像 iTextConcatenate Example.
我只是想知道是否可以在不将它们写入文件系统的情况下即时组合此操作。我无法识别丢失的 link
如果您想避免写入文件,可以使用 StringReader
和 StringWriter
。
Oracle 文档:
它仍然是一个 I/O 过程,但您不会写入或读取实际文件。相反,您将使用字符串缓冲区。
当您创建 PDFX1.pdf 时,使用 PdfWriter
和 ByteArrayOutputStream
而不是 FileOutputStream
:
ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
PdfWriter writer = PdfWriter.getInstance(document, baos1);
连接 PDF 文档时,使用 PdfReader
和 ByteArrayInputStream
:
PdfReader reader = new PdfReader(new ByteArrayInputStream(baos1.toByteArray()));
或者你也可以直接使用字节数组:
PdfReader reader = new PdfReader(baos1.toByteArray());
(对 PDFX2.pdf 执行类似操作。)