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

par*_*bol 6 java pdf outputstream wkhtmltopdf

我在ProcumBuilder和Process的java项目中使用了wkhtmltopdf:

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

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

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

Nen*_*lep 4

如果您传递“-”而不是“output.pdf”,您应该以流的形式获得输出。然后您也许能够获取该流,但请确保事先进行测试并绑定到 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;
Run Code Online (Sandbox Code Playgroud)