पर सहेजें Ig.docx4j.openpackaging.packages.WordprocessingMLPackage उदाहरण को ByteArrayInputStream में कैसे सहेज सकता है, फिर इसे सर्वर से डाउनलोड किया जा सकता है।WordprocessingMLPackage को ByteArrayInputStream
धन्यवाद।
पर सहेजें Ig.docx4j.openpackaging.packages.WordprocessingMLPackage उदाहरण को ByteArrayInputStream में कैसे सहेज सकता है, फिर इसे सर्वर से डाउनलोड किया जा सकता है।WordprocessingMLPackage को ByteArrayInputStream
धन्यवाद।
आप कभी भी ByteArrayInputStream
पर सहेज नहीं सकते हैं। ByteArrayInputStream
एक InputStream
है और आप InputStream
पर नहीं लिखते/नहीं लिख सकते हैं।
हालांकि आप ByteArrayOutputStream
पर कुछ लिख सकते हैं, बाइट सरणी प्राप्त करें, और सरणी के लिए ByteArrayInputStream
रैपर बनाएं।
(मैं यह सोचते हैं रहा हूँ एक OutputStream या लेखक के लिए उन उदाहरणों में से एक को बचाने के लिए एक रास्ता है कि वहाँ ...)
खैर, मेरी धारणा गलत था, और WordprocessingMLPackage
'केवल save
विधि रों File
पर बचाता है। (मुझे लगता है कि किसी को कैसे लचीला मैं/हे apis डिजाइन करने के लिए पर ज्ञापन नहीं मिला ...)
लेकिन स्रोत कोड (here) आप इसे कैसे अपने आप को लागू कर सकता है पर कुछ सुराग प्रदान करता है।
public void save(java.io.File docxFile) throws Docx4JException {
if (docxFile.getName().endsWith(".xml")) {
// Create a org.docx4j.wml.Package object
FlatOpcXmlCreator worker = new FlatOpcXmlCreator(this);
org.docx4j.xmlPackage.Package pkg = worker.get();
// Now marshall it
JAXBContext jc = Context.jcXmlPackage;
try {
Marshaller marshaller=jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
Boolean.TRUE);
NamespacePrefixMapperUtils.setProperty(marshaller,
NamespacePrefixMapperUtils.getPrefixMapper());
marshaller.marshal(pkg, new FileOutputStream(docxFile));
} catch (Exception e) {
throw new Docx4JException("Error saving Flat OPC XML", e);
}
return;
}
SaveToZipFile saver = new SaveToZipFile(this);
saver.save(docxFile);
}
ऐसा लगता है कि आप एक सहायक कक्षा में इस कोड को कॉपी करने के लिए सक्षम होना चाहिए, और यह करने के बजाय (विशेष रूप से) एक FileOutputStream
एक OutputStream
को बचाने के लिए tweak: विधि इस प्रकार है। ध्यान दें कि SaveToZipFile
कक्षा में save
विधियां हैं जो OutputStream
पर लिखती हैं।
मुझे एक ही समस्या थी और सहेजने() फ़ंक्शन को बदलने के बिना इसे करने का एक आसान तरीका मिला।
एक WordMLPackage पी के लिए और HttpServletResponse प्रतिक्रिया:: स्रोत here और मैं कुछ संपादन करने के
response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
String fileName = "MyDocument.docx";
response.setHeader("Content-disposition", "attachment;filename=${fileName}");
SaveToZipFile saver = new SaveToZipFile(p);
saver.save(response.getOutputStream());
इंपोर्ट स्टेटमेंट:
import org.docx4j.openpackaging.io.*
3.1.0 संस्करण के बाद से आप save(OutputStream outStream)
उपयोग कर सकते हैं:
/**
* Save this pkg to an OutputStream in the usual zipped up format
* (Docx4J.FLAG_SAVE_ZIP_FILE)
*
* @since 3.1.0
*/
public void save(OutputStream outStream) throws Docx4JException {
save(outStream, Docx4J.FLAG_SAVE_ZIP_FILE);
}
मैं जेनरेट किए गए डॉक्क्स को अस्थायी फ़ोल्डर में सहेजता हूं, और इसे बाइटएर में परिवर्तित करता हूं रेऑटपुटस्ट्रीम, धन्यवाद। – user200340
@ user200340 कृपया कन्वर्ट करने के लिए आपने कैसे किया? –