java - 如何将 html 字符串转换为 PDF 输入流?

标签 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();

最佳答案

如果您需要一个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 来对此进行优化。

关于java - 如何将 html 字符串转换为 PDF 输入流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35921388/

相关文章:

java - Java SE 上的 SOAP 消息

c# - 如何从 HTML 提交按钮调用 ASP.NET CORE WEB API 3.1

python - 使用 Python 进行独立于操作系统的打印

ruby-on-rails - 使用 Wicked PDF 将 PDF 附加到电子邮件时如何指定布局

java - 如何使用 Dagger2 将 FragmentPagerAdapter 正确注入(inject)我的 Activity 类?

java - Android:对字符串中的匹配项进行着色

java - 从不属于 ButtonGroup 的 JRadioButton 获取文本

html - 如何缩放我的 SVG 以适应 d3 中其容器 div 的大小?

html - 是否值得使用 *{margin :0; padding:0;} as resetting purpose

Symfony2 使用 FPDF 输出 pdf