2012-02-29 8 views
6

Io uso wkhtmltopdf nel mio progetto Java con ProccessBuilder e processo:Come esportare pdf a OutputStream con wkhtmltopdf in java

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

Questa soluzione utilizza un file html come input e salvare l'output in formato PDF sul disco . Ma il mio html non è un file, è un OutputStream e voglio creare file pdf su fly e non voglio salvarlo su disco.

c'è un modo per passare il parametro con OutputStream e ottenere il risultato come un altro OutputStream?

risposta

2

Se si passa "-" anziché "output.pdf" si dovrebbe ottenere l'output come flusso. Quindi potresti essere in grado di prendere quel flusso, ma assicurati di testare prima e associare anche stderr e stdout e fare il debug di entrambi come wkhtmltopdf può essere un po 'testardo :)

In C# l'inoltro è abbastanza facile e stdin/stderr/stdout sono flussi. Devi testare con tutti e tre gli output di wkhtml su entrambi, uno per l'output pdf e uno per l'output dell'interfaccia utente che vedi all'avvio dalla riga di comando. Ci scusiamo per la mancanza di Java o di un esempio funzionante, in realtà non ho provato questo perché i miei processi sono in coda e scrivono su disco.

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