From 26e1eb1d5da83d632a08da3a29fa7a4d7994c669 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 27 May 2011 14:35:44 +0000 Subject: [PATCH] Few XSLF tweaks, and add a unit test that shows that bug #51187 exists (problem with self references) git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1128324 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/xslf/XSLFSlideShow.java | 7 ++- .../poi/xslf/usermodel/XMLSlideShow.java | 8 +++ .../org/apache/poi/xslf/TestXSLFBugs.java | 58 ++++++++++++++++++ .../apache/poi/xslf/XSLFTestDataSamples.java | 51 +++++++++++++++ test-data/slideshow/51187.pptx | Bin 0 -> 45681 bytes 5 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java create mode 100644 src/ooxml/testcases/org/apache/poi/xslf/XSLFTestDataSamples.java create mode 100644 test-data/slideshow/51187.pptx diff --git a/src/ooxml/java/org/apache/poi/xslf/XSLFSlideShow.java b/src/ooxml/java/org/apache/poi/xslf/XSLFSlideShow.java index c2046afb68..05351c689c 100644 --- a/src/ooxml/java/org/apache/poi/xslf/XSLFSlideShow.java +++ b/src/ooxml/java/org/apache/poi/xslf/XSLFSlideShow.java @@ -22,6 +22,7 @@ import java.util.List; import org.apache.poi.POIXMLDocument; import org.apache.poi.util.Internal; +import org.apache.poi.xslf.usermodel.XMLSlideShow; import org.apache.poi.xslf.usermodel.XSLFRelation; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.exceptions.OpenXML4JException; @@ -46,8 +47,9 @@ import org.openxmlformats.schemas.presentationml.x2006.main.SldDocument; 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 * will almost certainly need to refer to the OOXML @@ -113,6 +115,7 @@ public class XSLFSlideShow extends POIXMLDocument { } return getPresentation().getSldIdLst(); } + /** * Returns the references from the presentation to its * slide masters. diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java index 8e4b3f03a7..ab5c670b9f 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java @@ -18,6 +18,8 @@ package org.apache.poi.xslf.usermodel; 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.Resources; import org.apache.poi.sl.usermodel.Slide; @@ -27,6 +29,7 @@ import org.apache.xmlbeans.XmlException; import org.openxmlformats.schemas.presentationml.x2006.main.CTSlide; import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideIdList; import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideIdListEntry; +import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideMasterIdList; /** * High level representation of a ooxml slideshow. @@ -42,6 +45,7 @@ public class XMLSlideShow implements SlideShow { this.slideShow = xml; // Build the main masters list - TODO + CTSlideMasterIdList masterIds = slideShow.getSlideMasterReferences(); // Build the slides list CTSlideIdList slideIds = slideShow.getSlideReferences(); @@ -55,6 +59,10 @@ public class XMLSlideShow implements SlideShow { // Build the notes list - TODO } + public XMLSlideShow(OPCPackage pkg) throws XmlException, IOException, OpenXML4JException { + this(new XSLFSlideShow(pkg)); + } + public XSLFSlideShow _getXSLFSlideShow() { return slideShow; } diff --git a/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java b/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java new file mode 100644 index 0000000000..d502902a7b --- /dev/null +++ b/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java @@ -0,0 +1,58 @@ +/* ==================================================================== + 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()); + } +} diff --git a/src/ooxml/testcases/org/apache/poi/xslf/XSLFTestDataSamples.java b/src/ooxml/testcases/org/apache/poi/xslf/XSLFTestDataSamples.java new file mode 100644 index 0000000000..0b326c0fdf --- /dev/null +++ b/src/ooxml/testcases/org/apache/poi/xslf/XSLFTestDataSamples.java @@ -0,0 +1,51 @@ +/* ==================================================================== + 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); + } + } +} diff --git a/test-data/slideshow/51187.pptx b/test-data/slideshow/51187.pptx new file mode 100644 index 0000000000000000000000000000000000000000..25816d5adb0a9cc8aa34880faa9095b2d71725fc GIT binary patch literal 45681 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 b$0nVeBsgHH^F5Y~8OQ|@2xu+)``!Nm&2g&x literal 0 HcmV?d00001 -- 2.39.5