Как экспортировать PDF в OutputStream с помощью wkhtmltopdf в Java - PullRequest
6 голосов
/ 29 февраля 2012

Я использую wkhtmltopdf в своем проекте Java с ProccessBuilder и Process:

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

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

есть ли способ передать параметр с помощью OutputStream и получить результат как еще один OutputStream?

1 Ответ

4 голосов
/ 12 июля 2012

Если вы передадите «-» вместо «output.pdf», вы должны получить выходные данные в виде потока.Тогда вы сможете получить этот поток, но не забудьте предварительно протестировать и связать с stderr и stdout, а также отладить их вывод, так как wkhtmltopdf может быть немного упрямым:)

В C # пересылка довольноeasy и stdin / stderr / stdout являются потоками.Вы должны проверить все три как выходные данные wkhtml для обоих, один для вывода pdf и один для вывода пользовательского интерфейса, который вы видите при запуске из командной строки.Извините за отсутствие Java или работающего примера, я на самом деле не пробовал это, поскольку мои процессы поставлены в очередь и пишут на диск.

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