git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1128324 13f79535-47bb-0310-9956-ffa450edef68tags/REL_3_8_BETA3
import org.apache.poi.POIXMLDocument; | import org.apache.poi.POIXMLDocument; | ||||
import org.apache.poi.util.Internal; | import org.apache.poi.util.Internal; | ||||
import org.apache.poi.xslf.usermodel.XMLSlideShow; | |||||
import org.apache.poi.xslf.usermodel.XSLFRelation; | import org.apache.poi.xslf.usermodel.XSLFRelation; | ||||
import org.apache.poi.openxml4j.exceptions.InvalidFormatException; | import org.apache.poi.openxml4j.exceptions.InvalidFormatException; | ||||
import org.apache.poi.openxml4j.exceptions.OpenXML4JException; | import org.apache.poi.openxml4j.exceptions.OpenXML4JException; | ||||
import org.openxmlformats.schemas.presentationml.x2006.main.SldMasterDocument; | import org.openxmlformats.schemas.presentationml.x2006.main.SldMasterDocument; | ||||
/** | /** | ||||
* Experimental class to do low level processing | |||||
* of pptx files. | |||||
* Experimental class to do low level processing of pptx files. | |||||
* | |||||
* Most users should use the higher level {@link XMLSlideShow} instead. | |||||
* | * | ||||
* If you are using these low level classes, then you | * If you are using these low level classes, then you | ||||
* will almost certainly need to refer to the OOXML | * will almost certainly need to refer to the OOXML | ||||
} | } | ||||
return getPresentation().getSldIdLst(); | return getPresentation().getSldIdLst(); | ||||
} | } | ||||
/** | /** | ||||
* Returns the references from the presentation to its | * Returns the references from the presentation to its | ||||
* slide masters. | * slide masters. |
import java.io.IOException; | import java.io.IOException; | ||||
import org.apache.poi.openxml4j.exceptions.OpenXML4JException; | |||||
import org.apache.poi.openxml4j.opc.OPCPackage; | |||||
import org.apache.poi.sl.usermodel.MasterSheet; | import org.apache.poi.sl.usermodel.MasterSheet; | ||||
import org.apache.poi.sl.usermodel.Resources; | import org.apache.poi.sl.usermodel.Resources; | ||||
import org.apache.poi.sl.usermodel.Slide; | import org.apache.poi.sl.usermodel.Slide; | ||||
import org.openxmlformats.schemas.presentationml.x2006.main.CTSlide; | import org.openxmlformats.schemas.presentationml.x2006.main.CTSlide; | ||||
import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideIdList; | import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideIdList; | ||||
import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideIdListEntry; | import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideIdListEntry; | ||||
import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideMasterIdList; | |||||
/** | /** | ||||
* High level representation of a ooxml slideshow. | * High level representation of a ooxml slideshow. | ||||
this.slideShow = xml; | this.slideShow = xml; | ||||
// Build the main masters list - TODO | // Build the main masters list - TODO | ||||
CTSlideMasterIdList masterIds = slideShow.getSlideMasterReferences(); | |||||
// Build the slides list | // Build the slides list | ||||
CTSlideIdList slideIds = slideShow.getSlideReferences(); | CTSlideIdList slideIds = slideShow.getSlideReferences(); | ||||
// Build the notes list - TODO | // Build the notes list - TODO | ||||
} | } | ||||
public XMLSlideShow(OPCPackage pkg) throws XmlException, IOException, OpenXML4JException { | |||||
this(new XSLFSlideShow(pkg)); | |||||
} | |||||
public XSLFSlideShow _getXSLFSlideShow() { | public XSLFSlideShow _getXSLFSlideShow() { | ||||
return slideShow; | return slideShow; | ||||
} | } |
/* ==================================================================== | |||||
Licensed to the Apache Software Foundation (ASF) under one or more | |||||
contributor license agreements. See the NOTICE file distributed with | |||||
this work for additional information regarding copyright ownership. | |||||
The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
(the "License"); you may not use this file except in compliance with | |||||
the License. You may obtain a copy of the License at | |||||
http://www.apache.org/licenses/LICENSE-2.0 | |||||
Unless required by applicable law or agreed to in writing, software | |||||
distributed under the License is distributed on an "AS IS" BASIS, | |||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
See the License for the specific language governing permissions and | |||||
limitations under the License. | |||||
==================================================================== */ | |||||
package org.apache.poi.xslf; | |||||
import junit.framework.TestCase; | |||||
import org.apache.poi.openxml4j.opc.PackagePart; | |||||
import org.apache.poi.xslf.usermodel.XMLSlideShow; | |||||
import org.apache.poi.xslf.usermodel.XSLFSlide; | |||||
public class TestXSLFBugs extends TestCase { | |||||
public void test51187() throws Exception { | |||||
XMLSlideShow ss = XSLFTestDataSamples.openSampleDocument("51187.pptx"); | |||||
assertEquals(1, ss.getSlides().length); | |||||
XSLFSlide slide = ss.getSlides()[0]; | |||||
// Check the relations on it | |||||
// Note - rId3 is a self reference | |||||
PackagePart slidePart = ss._getXSLFSlideShow().getSlidePart( | |||||
ss._getXSLFSlideShow().getSlideReferences().getSldIdArray(0) | |||||
); | |||||
assertEquals("/ppt/slides/slide1.xml", slidePart.getPartName().toString()); | |||||
assertEquals("/ppt/slideLayouts/slideLayout12.xml", slidePart.getRelationship("rId1").getTargetURI().toString()); | |||||
assertEquals("/ppt/notesSlides/notesSlide1.xml", slidePart.getRelationship("rId2").getTargetURI().toString()); | |||||
assertEquals("/ppt/slides/slide1.xml", slidePart.getRelationship("rId3").getTargetURI().toString()); | |||||
assertEquals("/ppt/media/image1.png", slidePart.getRelationship("rId4").getTargetURI().toString()); | |||||
// Save and re-load | |||||
ss = XSLFTestDataSamples.writeOutAndReadBack(ss); | |||||
assertEquals(1, ss.getSlides().length); | |||||
slidePart = ss._getXSLFSlideShow().getSlidePart( | |||||
ss._getXSLFSlideShow().getSlideReferences().getSldIdArray(0) | |||||
); | |||||
assertEquals("/ppt/slides/slide1.xml", slidePart.getPartName().toString()); | |||||
assertEquals("/ppt/slideLayouts/slideLayout12.xml", slidePart.getRelationship("rId1").getTargetURI().toString()); | |||||
assertEquals("/ppt/notesSlides/notesSlide1.xml", slidePart.getRelationship("rId2").getTargetURI().toString()); | |||||
// TODO Fix this | |||||
// assertEquals("/ppt/slides/slide1.xml", slidePart.getRelationship("rId3").getTargetURI().toString()); | |||||
assertEquals("/ppt/media/image1.png", slidePart.getRelationship("rId4").getTargetURI().toString()); | |||||
} | |||||
} |
/* ==================================================================== | |||||
Licensed to the Apache Software Foundation (ASF) under one or more | |||||
contributor license agreements. See the NOTICE file distributed with | |||||
this work for additional information regarding copyright ownership. | |||||
The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
(the "License"); you may not use this file except in compliance with | |||||
the License. You may obtain a copy of the License at | |||||
http://www.apache.org/licenses/LICENSE-2.0 | |||||
Unless required by applicable law or agreed to in writing, software | |||||
distributed under the License is distributed on an "AS IS" BASIS, | |||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
See the License for the specific language governing permissions and | |||||
limitations under the License. | |||||
==================================================================== */ | |||||
package org.apache.poi.xslf; | |||||
import java.io.ByteArrayInputStream; | |||||
import java.io.ByteArrayOutputStream; | |||||
import java.io.InputStream; | |||||
import org.apache.poi.POIDataSamples; | |||||
import org.apache.poi.openxml4j.opc.OPCPackage; | |||||
import org.apache.poi.xslf.usermodel.XMLSlideShow; | |||||
/** | |||||
* @author Yegor Kozlov | |||||
*/ | |||||
public class XSLFTestDataSamples { | |||||
public static XMLSlideShow openSampleDocument(String sampleName) { | |||||
InputStream is = POIDataSamples.getSlideShowInstance().openResourceAsStream(sampleName); | |||||
try { | |||||
return new XMLSlideShow(OPCPackage.open(is)); | |||||
} catch (Exception e) { | |||||
throw new RuntimeException(e); | |||||
} | |||||
} | |||||
public static XMLSlideShow writeOutAndReadBack(XMLSlideShow doc) { | |||||
try { | |||||
ByteArrayOutputStream baos = new ByteArrayOutputStream(4096); | |||||
doc._getXSLFSlideShow().write(baos); | |||||
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); | |||||
return new XMLSlideShow(OPCPackage.open(bais)); | |||||
} catch (Exception e) { | |||||
throw new RuntimeException(e); | |||||
} | |||||
} | |||||
} |