如果我们有一个包含 html 页面内容的字符串,我们如何将其转换为将此字符串转换为 pdf 文档后生成的 InputStream ?
我正在尝试将 iText 与 XMLWorkerHelper 一起使用,下面的代码可以工作,但问题是我不希望输出在文件上。我尝试了几种变体,以便在 InputStream 上获得结果,并将其转换为 Primefaces StreamedContent 但没有成功。我们怎样才能做到呢?
我们可以使用另一种技术来解决这个问题吗? 这样做的动机是使用已经渲染的 xhtml 文件并将其输出为 pdf 供用户下载。
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document,
new FileOutputStream("results/loremipsum.pdf"));
document.open();
XMLWorkerHelper.getInstance().parseXHtml(writer, document,
new FileInputStream("/html/loremipsum.html"));
document.close();
最佳答案
如果您需要一个InputStream
,其他代码可以从中读取您的代码生成的 PDF,您可以简单地使用字节数组输出流创建 PDF,然后将该流中的字节数组包装在字节数组输入流:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, baos);
document.open();
XMLWorkerHelper.getInstance().parseXHtml(writer, document, new FileInputStream("/html/loremipsum.html"));
document.close();
ByteArrayInputStream pdfInputStream = new ByteArrayInputStream(baos.toByteArray());
您可以通过在不同线程中创建和处理 PDF 并使用 PipedOutputStream
和 PipedInputStream
来对此进行优化。
关于java - 如何将 html 字符串转换为 PDF 输入流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35921388/