Как экспортировать pdf в OutputStream с помощью wkhtmltopdf в java

Я использую wkhtmltopdf в своем java-проекте с ProcessBuilder и Process:

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

Это решение использует html-файл в качестве входных данных и сохраняет выходные данные в виде pdf-файла на диске. Но мой html - это не файл, это OutputStream, и я хочу создать pdf-файл на лету и не хочу сохранять его на диске.

есть ли способ передать параметр с OutputStream и получить результат как другой OutputStream?


person parabol    schedule 29.02.2012    source источник


Ответы (1)


Если вы передадите «-» вместо «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;
person Joel Peltonen    schedule 12.07.2012