如果我们的字符串包含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();
答案 0 :(得分:1)
如果您需要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,您只需使用字节数组输出流创建PDF,然后将字节数组从该字节数组中包裹输入流:
PipedOutputStream
您可以通过在不同的线程中创建和处理PDF并使用PipedInputStream
和assignment(=)
来优化这一点。