I'm still working on my filter and trying to understand how to extract
graphics from a Writer document in Java. So far, I cannot find the Java
equivalents to certain parts of the snippet at
http://codesnippets.services.openoffice.org/Writer/Writer.ExtractGfx.snip
In particular, the closest thing I can find to the oZipArchive in the
example is XZipFileAccess which I created as follows:
Object zipArgs[] = new Object[1];
zipArgs[0] = xSource.getURL();
XZipFileAccess xZipFileAccess =
(XZipFileAccess) UnoRuntime.queryInterface(
XZipFileAccess.class,
m_xMCF.createInstanceWithArgumentsAndContext(
"com.sun.star.packages.zip.ZipFileAccess",
zipArgs, m_Ctx));
>From a graphic property set I can extract a graphic URL
String graphicURL = AnyConverter.toString(xGraphicPropSet
.getPropertyValue("GraphicURL"));
which gives me something like:
vnd.sun.star.GraphicObject:10000000000003590000036584C7606C
I have a gif and a jpg file in the doc I am working on and a file
Pictures/10000000000003590000036584C7606C.jpg
in the compressed .odt file, so I figure there ought to be some way of
determining the mime type programatically, but I'm at a standstill.
If I use
PropertyValue[] mediaProps = new PropertyValue[1];
mediaProps[0] = new PropertyValue();
mediaProps[0].Name = "URL";
mediaProps[0].Value = graphicURL;
and then
XPropertySet xGraphicProps = (XPropertySet)
UnoRuntime.queryInterface(XPropertySet.class,
xGraphicProvider.queryGraphicDescriptor(mediaProps));
The property set claims to have a mimetype property, but it is an empty
string. I also tried
XGraphic xGraphic = (XGraphic)
UnoRuntime.queryInterface(
XGraphic.class,
xGraphicProvider.queryGraphic(mediaProps));
And got a null XGraphic object returned.
I am able to extract the 10000000000003590000036584C7606C part of the
above URL and use it to get an XInputStream
String graphicURLPrefix =
graphicURL.substring("vnd.sun.star.GraphicObject:".length());
XInputStream graphicFile = (XInputStream)
UnoRuntime.queryInterface(
XInputStream.class,
xZipFileAccess.getStreamByPattern("*Pictures/"
+ graphicURLPrefix + "*"));
from which I can read the file length, so I'm making some progress,
although I still can't figure out the mime type.
I'm left with at least two problems.
1) There doesn't seem to be any equivalent in Java/Uno to the
getByHierarchicalName call used in the snippet. It doesn't exist in
XZipFileAccess as far as I can see.
2) Is there somethign wrong with the way I set up the media properties
for the graphics progider query? It seems that the
vnd.sun.star.GraphicObject:10000000000003590000036584C7606C isn't an
adequate URL or I'm missing something else in the media properties.
--
Ian Shields <[EMAIL PROTECTED]>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]