java - 如何在 java 中使用 wkhtmltopdf 将 pdf 导出到 OutputStream

标签 java pdf outputstream wkhtmltopdf

我在带有 ProccessBuilder 和 Process 的 Java 项目中使用 wkhtmltopdf:

ProcessBuilder pb = new ProcessBuilder("wkhtmltopdf.exe", "input.html", "output.pdf"); 进程process = pb.start();

此解决方案使用 html 文件作为输入,并将输出保存为磁盘上的 pdf 文件。 但是我的 html 不是文件,它是一个 OutputStream,我想即时创建 pdf 文件,不想将它保存在磁盘上。

有没有办法用 OutputStream 传递参数并作为另一个 OutputStream 获取结果?

最佳答案

如果您传递“-”而不是“output.pdf”,您应该将输出作为流。然后您也许可以获取该流,但请确保事先进行测试并绑定(bind)到 stderr 和 stdout 并调试它们的输出,因为 wkhtmltopdf 可能有点顽固:)

在 C# 中转发相当容易,stdin/stderr/stdout 是流。您必须测试所有三个作为 wkhtml 输出到两者,一个用于 pdf 输出,一个用于您从命令行启动时看到的用户界面输出。抱歉缺少 Java 或工作示例,我实际上并没有尝试过这个,因为我的进程在排队并且它们写入磁盘。

Process _process = new Process();
// Other stuff here
_process.StartInfo.RedirectStandardError = true;
StreamReader sr = _process.StandardError;

关于java - 如何在 java 中使用 wkhtmltopdf 将 pdf 导出到 OutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9494058/

相关文章:

javascript - 在 jsPdf 中添加 FontAwesome 图标

java - Java Swing 中的 JasperReport PDF 输出

java - 如何在运行时/启动时禁用 System.setOut 和 setErr?

java - 当我们使用 servlet3 规范中提到的 AsyncContext 时,http 连接保持打开状态多长时间?

java - 绘制多边形时出现 ArrayIndexOutOfBoundsException 错误

java - 如何使用 SSHJ 保持 SSH 连接?

java - 是否可以使用 Java 捕获正在播放的音频?

java - 在 Java Swing 中使用 MigLayout

android - 在 webview 中打开一个 pdf 文件。

安卓 : Saving Files to SD Card