Hi, I'm currently working on that FontEmbedder discussed recently, but I'm puzzled on how to use XMLSlideShow with OPCPackage and read-write-access.
The following is similar in what is described @ http://stackoverflow.com/questions/16108142 So, I'm opening an existing .pptx, adding a few fonts files and add a few entries to XMLSlideShow.getCTPresentation(). When I close the OPCPackage, the fonts are added, but the CTPresentation hasn't been changed. Regarding Nicks comment, one would have to save the changes in the high-level objects, but save(OutputStream/File) is probably not the right way, when you are working with a writable OPCPackage. Of course I had a look at the examples, e.g. org.apache.poi.openxml4j.opc.TestPackage, but I don't want to save it to a different file, but to the original one ... Looking at the API, the revert() method is public, but commit() is protected - how come? When commit() is made public and called by the user code, the whole lot is saved ... well, nearly ... Libre Office left out the package properties, on my original test file, so I needed to create them on the fly. So in the end, I've got something like this - please comment on how to do it right: public static void main(String[] args) throws Exception { OPCPackage opc = OPCPackage.open("textruns.pptx", PackageAccess.READ_WRITE); XMLSlideShow pptx = new XMLSlideShow(opc); // manipulate pptx and add new parts (fonts) to the package FontEmbedder fe = new FontEmbedder(pptx); fe.analyzeDocument(); fe.embedFonts(); pptx.commit(); // bugfix for Libre Office, which omits sometimes the package properties and the // next call to close throws an exception otherwise opc.getPackageProperties(); opc.close(); } Thank you, Andi. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
