如何将html字符串转换为PDF InputStream?

时间:2016-03-10 15:59:18

标签: java html pdf xhtml inputstream

如果我们的字符串包含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();

1 个答案:

答案 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并使用PipedInputStreamassignment(=)来优化这一点。