【问题标题】:How to convert an html String to a PDF InputStream?如何将 html 字符串转换为 PDF InputStream?
【发布时间】:2016-03-11 18:06:14
【问题描述】:

如果我们有一个html页面内容的字符串,我们如何将它转换成一个InputStream,然后把这个字符串转换成一个pdf文档?

我正在尝试将 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();

【问题讨论】:

    标签: java html pdf xhtml inputstream


    【解决方案1】:

    如果您需要一个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 并改用 PipedOutputStreamPipedInputStream 来稍微优化这一点。

    【讨论】:

    • 有趣,我会尝试返回。谢谢
    • 工作正常。非常感谢。
    猜你喜欢
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2017-07-28
    • 2013-08-31
    • 1970-01-01
    • 2010-12-18
    相关资源
    最近更新 更多