我在我的Java项目中使用wkhtmltopdf使用proccessbuilder和process:

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

此解决方案使用HTML文件作为输入,并将输出保存为磁盘上的PDF文件。 但我的HTML不是一个文件,它是一个输出流,我想在飞行上创建PDF文件,不希望将其保存在磁盘上。

有没有办法将参数与输出流传递,并将结果作为另一个输出流?

有帮助吗?

解决方案

如果传递“ - ”而不是“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;
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top