2012-02-29 3 views
6

मैं ProccessBuilder और प्रक्रिया के साथ अपने जावा परियोजना में wkhtmltopdf प्रयोग wkhtmltopdf साथ OutputStream करने के लिए पीडीएफ निर्यात करने के लिए कैसे:जावा

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

यह समाधान इनपुट के रूप में एक html फ़ाइल का उपयोग करता है और डिस्क पर पीडीएफ फाइल के रूप में उत्पादन को बचाने के । लेकिन मेरा एचटीएमएल एक फ़ाइल नहीं है, यह आउटपुटस्ट्रीम है और मैं फ्लाई पर पीडीएफ फाइल बनाना चाहता हूं और इसे डिस्क पर सहेजना नहीं चाहता हूं।

आउटपुटस्ट्रीम के साथ पैरामीटर पास करने और अन्य आउटपुटस्ट्रीम के रूप में परिणाम प्राप्त करने का कोई तरीका है?

उत्तर

2

यदि आप "output.pdf" के बजाय "-" पास करते हैं तो आपको आउटपुट को स्ट्रीम के रूप में प्राप्त करना चाहिए। फिर आप उस धारा को पकड़ने में सक्षम हो सकते हैं, लेकिन पहले से परीक्षण करना और stderr और stdout में बाध्य करना सुनिश्चित करें और दोनों आउटपुट को डीबग करें क्योंकि wkhtmltopdf थोड़ा जिद्दी हो सकता है :)

सी # में अग्रेषण काफी आसान है और stdin/stderr/stdout धाराएं हैं। आपको सभी तीनों के साथ wkhtml आउटपुट के रूप में परीक्षण करना होगा, एक पीडीएफ आउटपुट के लिए और एक कमांड लाइन से लॉन्च करते समय आप जो यूजर इंटरफेस आउटपुट देखते हैं। जावा या एक कामकाजी उदाहरण की कमी के लिए खेद है, मैंने वास्तव में यह कोशिश नहीं की है क्योंकि मेरी प्रक्रियाएं कतारबद्ध हैं और वे डिस्क पर लिखती हैं।

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