(Originally posted at http://www.oooforum.org/forum/viewtopic.phtml?t=41056)
I'm using OpenOffice 2.0.3 to convert ODT byte streams to PDF from a
servlet.
However, the PDF generation doesn't work correctly unless I introduce a
sleep() between the call to loadComponentFromURL() and storeToURL().
Without the sleep(), a blank page is inserted, and text from the start
of the document is missing.
The source document includes user fields, which aren't manipulated
during the conversion.
The document is ~8K in size, and I'm using a socket connection.
From the forum discussion, the issue seems to be related to the fact
that the document has user fields.
Can anyone confirm if this is a bug, or suggest a workaround that
doesn't involve using sleep()?
Thanks,
Tim
Conversion code is as follows:
XComponentLoader loader = // get loader
byte[] content = // get ODT content
XInputStream inputStream = new
ByteArrayToXInputStreamAdapter(content);
PropertyValue[] properties = new PropertyValue[]{
newProperty("ReadOnly", true),
newProperty("Hidden", true),
newProperty("AsTemplate", true),
newProperty("InputStream", inputStream)
};
XComponent component =
loader.loadComponentFromURL("private:stream", "_blank", 0, properties);
Thread.sleep(1000); // required to produce correct PDF
XTextDocument textDocument = (XTextDocument)
UnoRuntime.queryInterface(XTextDocument.class, component);
XOutputStreamToByteArrayAdapter outputStream = new
XOutputStreamToByteArrayAdapter();
XStorable storable = (XStorable)
UnoRuntime.queryInterface(XStorable.class, textDocument);
properties = new PropertyValue[]{
newProperty("OutputStream", outputStream),
newProperty("Overwrite", true),
newProperty("FilterName", "writer_pdf_Export")
};
storable.storeToURL("private:stream", properties);
outputStream.closeOutput();
byte[] pdfContent = outputStream.getBuffer();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]