poi-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tony Collins <atcollin...@yahoo.com>
Subject Trouble with embedded OLE in .pptx file
Date Tue, 20 Dec 2011 19:32:09 GMT
I'm not sure this is the appropriate forum for this question, but hopefully someone here can
help me find the appropriate forum.

I need to generate a .pptx file with embedded OLE objects in it.  Through research and trial
and error, I think I managed to figure out how to generate the appropriate XML files to do
this.  The usermodel stuff in xslf doesn't support this yet so I had to learn how to do it
at a lower level using the org.openxmlformats.schemas.presentationml.x2006 and org.openxmlformats.schemas.drawingml.x2006.main
classes as well as direct manipulation of the underlying XML objects provided by XML beans.

The issue I have now doesn't seem to be related to the XML itself though.  When trying to
open the embedded object in the .pptx file, I get the following error message:

"The server application, source file, or item can't be found, or returned an unknown error. 
You may need to reinstall the server application."

Note that is is *NOT* due to any misconfiguration of the OLE provider.  I have a .pptx file
that was created by cutting/pasting an OLE object into a slide.  This .pptx file works fine. 
My POI-based code generates pretty much identical XML (few minor non-functional differences),
but my .pptx file does not work.  I also wrote a simple POI test program that reads in an
existing .pptx file and just writes it back out to a different file.  Using the working .pptx
as the input, the generated .pptx file from this code also exhibits the same behavior (i.e.
I can open the .pptx file but trying to open or edit the embedded OLE object fails).  The
code is below:

        XMLSlideShow ppt = null;
        try {
            ppt = new XMLSlideShow(new FileInputStream(args[0]));
        } catch (FileNotFoundException e2) {
            // TODO Auto-generated catch block
        } catch (IOException e2) {
            e2.printStackTrace();
        }
        try {
            FileOutputStream out = new FileOutputStream(args[1]);
            ppt.write(out);
            out.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

Finally, I tried a similar experiment by just copying the working .pptx in Windows, unzipping
using Windows, and rezipping it.  No further changes were made to the contained files. 
Here, the rezipped .pptx file fails with the same behavior.  So, this doesn't seem to be
an issue with the POI code -- it seems to be a more fundamental issue with generating the
.pptx file from the constituent parts.

I'm running PowerPoint 2010 (don't currently have access to an older version).  The only
thing I've found that comes close to describing the same type of problem is the following
link http://social.msdn.microsoft.com/Forums/en-GB/oxmlsdk/thread/957bc111-86c6-4548-9a2e-917051ccb46d. 
This link says that it has something to do with how the embedded oleObject1.bin file is zipped
and suggests that the problem is a bug in PowerPoint 2010.  There is no further information
so I don't know whether to believe this or not or what to do if it is a PowerPoint bug.

So, while this does not appear to be a POI related issue, I was hoping someone could point
me to a forum or a person who might be able to help me track this down.  Otherwise, I'm kind
of stuck.  Anyone else run into similar issues?  Anyone else suspect that how the file is
zipped might affect the embedded OLE functionality?  Seems dubious to me, but everything
else is the same between the good and bad .pptx files, so maybe it is how it is zipped.


Thanks,
Tony


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@poi.apache.org
For additional commands, e-mail: user-help@poi.apache.org


Mime
View raw message