You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2021/05/14 00:37:53 UTC
svn commit: r1889871 [4/17] - in /poi: site/src/documentation/content/xdocs/
site/src/documentation/content/xdocs/components/ trunk/ trunk/maven/
trunk/osgi/ trunk/osgi/src/test/java/org/apache/poi/osgi/
trunk/poi-examples/src/main/java/org/apache/poi/...
Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFBugs.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFBugs.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFBugs.java Fri May 14 00:37:50 2021
@@ -20,6 +20,7 @@ import static org.apache.poi.POITestCase
import static org.apache.poi.sl.draw.DrawTextParagraph.HYPERLINK_HREF;
import static org.apache.poi.sl.draw.DrawTextParagraph.HYPERLINK_LABEL;
import static org.apache.poi.xslf.XSLFTestDataSamples.openSampleDocument;
+import static org.apache.poi.xslf.XSLFTestDataSamples.writeOutAndReadBack;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -32,7 +33,6 @@ import static org.junit.jupiter.api.Assu
import java.awt.Color;
import java.awt.geom.Rectangle2D;
import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
@@ -76,13 +76,15 @@ import org.apache.poi.sl.usermodel.TextR
import org.apache.poi.sl.usermodel.TextShape;
import org.apache.poi.sl.usermodel.VerticalAlignment;
import org.apache.poi.util.IOUtils;
-import org.apache.poi.util.NullPrintStream;
+import org.apache.commons.io.output.NullPrintStream;
import org.apache.poi.xslf.usermodel.*;
import org.apache.poi.xslf.util.DummyGraphics2d;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.function.ThrowingSupplier;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
import org.openxmlformats.schemas.drawingml.x2006.main.CTOuterShadowEffect;
import org.openxmlformats.schemas.presentationml.x2006.main.CTShape;
@@ -121,89 +123,87 @@ class TestXSLFBugs {
@Test
void bug62736() throws Exception {
- XMLSlideShow ss1 = openSampleDocument("bug62736.pptx");
-
- assertEquals(1, ss1.getSlides().size());
+ try (XMLSlideShow ss1 = openSampleDocument("bug62736.pptx")) {
+ assertEquals(1, ss1.getSlides().size());
- XSLFSlide slide0 = ss1.getSlides().get(0);
+ XSLFSlide slide0 = ss1.getSlides().get(0);
- assertEquals(slide0.getShapes().size(), 4);
+ assertEquals(slide0.getShapes().size(), 4);
- assertRelation(slide0, "/ppt/slides/slide1.xml", null);
- assertRelation(slide0, "/ppt/slideLayouts/slideLayout1.xml", "rId1");
- assertRelation(slide0, "/ppt/media/image1.png", "rId2");
- assertEquals(slide0.getRelations().size(), 2);
+ assertRelation(slide0, "/ppt/slides/slide1.xml", null);
+ assertRelation(slide0, "/ppt/slideLayouts/slideLayout1.xml", "rId1");
+ assertRelation(slide0, "/ppt/media/image1.png", "rId2");
+ assertEquals(slide0.getRelations().size(), 2);
- List<XSLFPictureShape> pictures = new ArrayList<>();
- for (XSLFShape shape : slide0.getShapes()) {
- if (shape instanceof XSLFPictureShape) {
- pictures.add((XSLFPictureShape) shape);
+ List<XSLFPictureShape> pictures = new ArrayList<>();
+ for (XSLFShape shape : slide0.getShapes()) {
+ if (shape instanceof XSLFPictureShape) {
+ pictures.add((XSLFPictureShape) shape);
+ }
}
- }
- assertEquals(pictures.size(), 2);
- assertEquals(pictures.get(0).getPictureData().getFileName(), "image1.png");
- assertEquals(pictures.get(1).getPictureData().getFileName(), "image1.png");
- // blipId is rId2 of both pictures
+ assertEquals(pictures.size(), 2);
+ assertEquals(pictures.get(0).getPictureData().getFileName(), "image1.png");
+ assertEquals(pictures.get(1).getPictureData().getFileName(), "image1.png");
+ // blipId is rId2 of both pictures
+
+ // remove just the first picture
+ slide0.removeShape(pictures.get(0));
+
+ assertEquals(slide0.getShapes().size(), 3);
+
+ assertRelation(slide0, "/ppt/slides/slide1.xml", null);
+ assertRelation(slide0, "/ppt/slideLayouts/slideLayout1.xml", "rId1");
+ // the bug is that the following relation is gone
+ assertRelation(slide0, "/ppt/media/image1.png", "rId2");
+ assertEquals(slide0.getRelations().size(), 2);
+
+ // Save and re-load
+ try (XMLSlideShow ss2 = writeOutAndReadBack(ss1)) {
+ assertEquals(1, ss2.getSlides().size());
+
+ slide0 = ss2.getSlides().get(0);
+
+ assertRelation(slide0, "/ppt/slides/slide1.xml", null);
+ assertRelation(slide0, "/ppt/slideLayouts/slideLayout1.xml", "rId1");
+ assertRelation(slide0, "/ppt/media/image1.png", "rId2");
+ assertEquals(slide0.getRelations().size(), 2);
+
+ pictures.clear();
+ for (XSLFShape shape : slide0.getShapes()) {
+ if (shape instanceof XSLFPictureShape) {
+ pictures.add((XSLFPictureShape) shape);
+ }
+ }
- // remove just the first picture
- slide0.removeShape(pictures.get(0));
+ assertEquals(pictures.size(), 1);
+ assertEquals(pictures.get(0).getPictureData().getFileName(), "image1.png");
- assertEquals(slide0.getShapes().size(), 3);
+ slide0.removeShape(pictures.get(0));
- assertRelation(slide0, "/ppt/slides/slide1.xml", null);
- assertRelation(slide0, "/ppt/slideLayouts/slideLayout1.xml", "rId1");
- // the bug is that the following relation is gone
- assertRelation(slide0, "/ppt/media/image1.png", "rId2");
- assertEquals(slide0.getRelations().size(), 2);
+ assertEquals(slide0.getShapes().size(), 2);
- // Save and re-load
- XMLSlideShow ss2 = XSLFTestDataSamples.writeOutAndReadBack(ss1);
- ss1.close();
- assertEquals(1, ss2.getSlides().size());
+ assertRelation(slide0, "/ppt/slides/slide1.xml", null);
+ assertRelation(slide0, "/ppt/slideLayouts/slideLayout1.xml", "rId1");
+ assertNull(slide0.getRelationById("rId2"));
+ assertEquals(slide0.getRelations().size(), 1);
- slide0 = ss2.getSlides().get(0);
+ // Save and re-load
+ try (XMLSlideShow ss3 = writeOutAndReadBack(ss2)) {
+ assertEquals(1, ss3.getSlides().size());
- assertRelation(slide0, "/ppt/slides/slide1.xml", null);
- assertRelation(slide0, "/ppt/slideLayouts/slideLayout1.xml", "rId1");
- assertRelation(slide0, "/ppt/media/image1.png", "rId2");
- assertEquals(slide0.getRelations().size(), 2);
+ slide0 = ss3.getSlides().get(0);
- pictures.clear();
- for (XSLFShape shape : slide0.getShapes()) {
- if (shape instanceof XSLFPictureShape) {
- pictures.add((XSLFPictureShape) shape);
+ assertRelation(slide0, "/ppt/slides/slide1.xml", null);
+ assertRelation(slide0, "/ppt/slideLayouts/slideLayout1.xml", "rId1");
+ assertEquals(slide0.getShapes().size(), 2);
+ }
}
}
-
- assertEquals(pictures.size(), 1);
- assertEquals(pictures.get(0).getPictureData().getFileName(), "image1.png");
-
- slide0.removeShape(pictures.get(0));
-
- assertEquals(slide0.getShapes().size(), 2);
-
- assertRelation(slide0, "/ppt/slides/slide1.xml", null);
- assertRelation(slide0, "/ppt/slideLayouts/slideLayout1.xml", "rId1");
- assertNull(slide0.getRelationById("rId2"));
- assertEquals(slide0.getRelations().size(), 1);
-
- // Save and re-load
- XMLSlideShow ss3 = XSLFTestDataSamples.writeOutAndReadBack(ss2);
- ss2.close();
- assertEquals(1, ss3.getSlides().size());
-
- slide0 = ss3.getSlides().get(0);
-
- assertRelation(slide0, "/ppt/slides/slide1.xml", null);
- assertRelation(slide0, "/ppt/slideLayouts/slideLayout1.xml", "rId1");
- assertEquals(slide0.getShapes().size(), 2);
- ss3.close();
}
@Test
void bug61589() throws IOException {
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
try (XMLSlideShow src = new XMLSlideShow();
XMLSlideShow dest = new XMLSlideShow()) {
XSLFSlide slide = src.createSlide();
@@ -229,71 +229,65 @@ class TestXSLFBugs {
dest.createSlide().importContent(slide);
dest.createSlide().importContent(slide2);
- dest.write(bos);
+ try (XMLSlideShow ppt3 = writeOutAndReadBack(dest)) {
+ XSLFSlide slide3 = ppt3.getSlides().get(0);
+ XSLFTextBox shape3 = (XSLFTextBox) slide3.getShapes().get(0);
+ XSLFTextParagraph p3 = shape3.getTextParagraphs().get(1);
+ XSLFHyperlink h1 = p3.getTextRuns().get(0).getHyperlink();
+ assertNotNull(h1);
+ assertEquals("https://poi.apache.org", h1.getAddress());
+ XSLFHyperlink h2 = p3.getTextRuns().get(2).getHyperlink();
+ assertNotNull(h2);
+ // relative url will be resolved to an absolute url, therefore this doesn't equals to "slide2.xml"
+ assertEquals("/ppt/slides/slide2.xml", h2.getAddress());
+ RelationPart sldRef = slide3.getRelationPartById(h2.getXmlObject().getId());
+ assertTrue(sldRef.getDocumentPart() instanceof XSLFSlide);
+ }
}
- try (XMLSlideShow ppt = new XMLSlideShow(new ByteArrayInputStream(bos.toByteArray()))) {
- XSLFSlide slide = ppt.getSlides().get(0);
- XSLFTextBox shape = (XSLFTextBox) slide.getShapes().get(0);
- XSLFTextParagraph p = shape.getTextParagraphs().get(1);
- XSLFHyperlink h1 = p.getTextRuns().get(0).getHyperlink();
- assertNotNull(h1);
- assertEquals("https://poi.apache.org", h1.getAddress());
- XSLFHyperlink h2 = p.getTextRuns().get(2).getHyperlink();
- assertNotNull(h2);
- // relative url will be resolved to an absolute url, therefore this doesn't equals to "slide2.xml"
- assertEquals("/ppt/slides/slide2.xml", h2.getAddress());
- RelationPart sldRef = slide.getRelationPartById(h2.getXmlObject().getId());
- assertTrue(sldRef.getDocumentPart() instanceof XSLFSlide);
- }
}
@Test
void bug62587() throws IOException {
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- try (XMLSlideShow ppt = new XMLSlideShow()) {
- Slide<?, ?> slide = ppt.createSlide();
- XSLFPictureData pd = ppt.addPicture(slTests.getFile("wrench.emf"), PictureType.EMF);
- PictureShape<?, ?> ps = slide.createPicture(pd);
- ps.setAnchor(new Rectangle2D.Double(100, 100, 100, 100));
- ppt.write(bos);
- }
-
Object[][] pics = {
{"santa.wmf", PictureType.WMF, XSLFRelation.IMAGE_WMF},
{"tomcat.png", PictureType.PNG, XSLFRelation.IMAGE_PNG},
{"clock.jpg", PictureType.JPEG, XSLFRelation.IMAGE_JPEG}
};
- try (XMLSlideShow ppt = new XMLSlideShow(new ByteArrayInputStream(bos.toByteArray()))) {
- XSLFSlide s1 = ppt.getSlides().get(0);
+ try (XMLSlideShow ppt1 = new XMLSlideShow()) {
+ Slide<?, ?> slide = ppt1.createSlide();
+ XSLFPictureData pd1 = ppt1.addPicture(slTests.getFile("wrench.emf"), PictureType.EMF);
+ PictureShape<?, ?> ps1 = slide.createPicture(pd1);
+ ps1.setAnchor(new Rectangle2D.Double(100, 100, 100, 100));
+
+ try (XMLSlideShow ppt2 = writeOutAndReadBack(ppt1)) {
+ XSLFSlide s1 = ppt2.getSlides().get(0);
+
+ for (Object[] p : pics) {
+ XSLFSlide s2 = ppt2.createSlide();
+ s2.importContent(s1);
+
+ XSLFPictureData pd2 = ppt2.addPicture(slTests.getFile((String) p[0]), (PictureType) p[1]);
+ XSLFPictureShape ps2 = (XSLFPictureShape) s2.getShapes().get(0);
+ Rectangle2D anchor2 = ps2.getAnchor();
+ s2.removeShape(ps2);
+ ps2 = s2.createPicture(pd2);
+ ps2.setAnchor(anchor2);
+ }
- for (Object[] p : pics) {
- XSLFSlide s2 = ppt.createSlide();
- s2.importContent(s1);
-
- XSLFPictureData pd = ppt.addPicture(slTests.getFile((String) p[0]), (PictureType) p[1]);
- XSLFPictureShape ps = (XSLFPictureShape) s2.getShapes().get(0);
- Rectangle2D anchor = ps.getAnchor();
- s2.removeShape(ps);
- ps = s2.createPicture(pd);
- ps.setAnchor(anchor);
- }
-
- bos.reset();
- ppt.write(bos);
- }
-
- try (XMLSlideShow ppt = new XMLSlideShow(new ByteArrayInputStream(bos.toByteArray()))) {
- for (XSLFSlide sl : ppt.getSlides()) {
- List<RelationPart> rels = sl.getRelationParts();
- assertEquals(2, rels.size());
- RelationPart rel0 = rels.get(0);
- assertEquals("rId1", rel0.getRelationship().getId());
- assertEquals(XSLFRelation.SLIDE_LAYOUT.getRelation(), rel0.getRelationship().getRelationshipType());
- RelationPart rel1 = rels.get(1);
- assertEquals("rId2", rel1.getRelationship().getId());
- assertEquals(XSLFRelation.IMAGES.getRelation(), rel1.getRelationship().getRelationshipType());
+ try (XMLSlideShow ppt3 = writeOutAndReadBack(ppt2)) {
+ for (XSLFSlide sl : ppt3.getSlides()) {
+ List<RelationPart> rels = sl.getRelationParts();
+ assertEquals(2, rels.size());
+ RelationPart rel0 = rels.get(0);
+ assertEquals("rId1", rel0.getRelationship().getId());
+ assertEquals(XSLFRelation.SLIDE_LAYOUT.getRelation(), rel0.getRelationship().getRelationshipType());
+ RelationPart rel1 = rels.get(1);
+ assertEquals("rId2", rel1.getRelationship().getId());
+ assertEquals(XSLFRelation.IMAGES.getRelation(), rel1.getRelationship().getRelationshipType());
+ }
+ }
}
}
}
@@ -301,78 +295,73 @@ class TestXSLFBugs {
@Test
void bug60499() throws IOException, InvalidFormatException {
- InputStream is = slTests.openResourceAsStream("bug60499.pptx");
- byte[] buf = IOUtils.toByteArray(is);
- is.close();
-
PackagePartName ppn = PackagingURIHelper.createPartName("/ppt/media/image1.png");
- XMLSlideShow ppt1 = new XMLSlideShow(new ByteArrayInputStream(buf));
- XSLFSlide slide1 = ppt1.getSlides().get(0);
+ try (XMLSlideShow ppt1 = openSampleDocument("bug60499.pptx")) {
+ XSLFSlide slide1 = ppt1.getSlides().get(0);
- Optional<XSLFShape> shapeToDelete1 =
- slide1.getShapes().stream().filter(s -> s instanceof XSLFPictureShape).findFirst();
+ Optional<XSLFShape> shapeToDelete1 =
+ slide1.getShapes().stream().filter(s -> s instanceof XSLFPictureShape).findFirst();
- assertTrue(shapeToDelete1.isPresent());
- slide1.removeShape(shapeToDelete1.get());
- assertTrue(slide1.getRelationParts().stream()
- .allMatch(rp -> "rId1,rId3".contains(rp.getRelationship().getId())));
-
- assertNotNull(ppt1.getPackage().getPart(ppn));
- ppt1.close();
-
- XMLSlideShow ppt2 = new XMLSlideShow(new ByteArrayInputStream(buf));
- XSLFSlide slide2 = ppt2.getSlides().get(0);
-
- Optional<XSLFShape> shapeToDelete2 =
- slide2.getShapes().stream().filter(s -> s instanceof XSLFPictureShape).skip(1).findFirst();
- assertTrue(shapeToDelete2.isPresent());
- slide2.removeShape(shapeToDelete2.get());
- assertTrue(slide2.getRelationParts().stream()
- .allMatch(rp -> "rId1,rId2".contains(rp.getRelationship().getId())));
- assertNotNull(ppt2.getPackage().getPart(ppn));
- ppt2.close();
-
- XMLSlideShow ppt3 = new XMLSlideShow(new ByteArrayInputStream(buf));
- XSLFSlide slide3 = ppt3.getSlides().get(0);
- slide3.getShapes().stream()
- .filter(s -> s instanceof XSLFPictureShape)
- .collect(Collectors.toList())
- .forEach(slide3::removeShape);
- assertNull(ppt3.getPackage().getPart(ppn));
- ppt3.close();
+ assertTrue(shapeToDelete1.isPresent());
+ slide1.removeShape(shapeToDelete1.get());
+ assertTrue(slide1.getRelationParts().stream()
+ .allMatch(rp -> "rId1,rId3".contains(rp.getRelationship().getId())));
+
+ assertNotNull(ppt1.getPackage().getPart(ppn));
+ }
+
+ try (XMLSlideShow ppt2 = openSampleDocument("bug60499.pptx")) {
+ XSLFSlide slide2 = ppt2.getSlides().get(0);
+ Optional<XSLFShape> shapeToDelete2 =
+ slide2.getShapes().stream().filter(s -> s instanceof XSLFPictureShape).skip(1).findFirst();
+ assertTrue(shapeToDelete2.isPresent());
+ slide2.removeShape(shapeToDelete2.get());
+ assertTrue(slide2.getRelationParts().stream()
+ .allMatch(rp -> "rId1,rId2".contains(rp.getRelationship().getId())));
+ assertNotNull(ppt2.getPackage().getPart(ppn));
+ }
+
+ try (XMLSlideShow ppt3 = openSampleDocument("bug60499.pptx")) {
+ XSLFSlide slide3 = ppt3.getSlides().get(0);
+ slide3.getShapes().stream()
+ .filter(s -> s instanceof XSLFPictureShape)
+ .collect(Collectors.toList())
+ .forEach(slide3::removeShape);
+ assertNull(ppt3.getPackage().getPart(ppn));
+ }
}
@Test
void bug51187() throws Exception {
- XMLSlideShow ss1 = openSampleDocument("51187.pptx");
+ try (XMLSlideShow ss1 = openSampleDocument("51187.pptx")) {
- assertEquals(1, ss1.getSlides().size());
+ assertEquals(1, ss1.getSlides().size());
- // Check the relations on it
- // Note - rId3 is a self reference
- XSLFSlide slide0 = ss1.getSlides().get(0);
-
- assertRelation(slide0, "/ppt/slides/slide1.xml", null);
- assertRelation(slide0, "/ppt/slideLayouts/slideLayout12.xml", "rId1");
- assertRelation(slide0, "/ppt/notesSlides/notesSlide1.xml", "rId2");
- assertRelation(slide0, "/ppt/slides/slide1.xml", "rId3");
- assertRelation(slide0, "/ppt/media/image1.png", "rId4");
-
- // Save and re-load
- XMLSlideShow ss2 = XSLFTestDataSamples.writeOutAndReadBack(ss1);
- ss1.close();
- assertEquals(1, ss2.getSlides().size());
-
- slide0 = ss2.getSlides().get(0);
- assertRelation(slide0, "/ppt/slides/slide1.xml", null);
- assertRelation(slide0, "/ppt/slideLayouts/slideLayout12.xml", "rId1");
- assertRelation(slide0, "/ppt/notesSlides/notesSlide1.xml", "rId2");
- // TODO Fix this
- assertRelation(slide0, "/ppt/slides/slide1.xml", "rId3");
- assertRelation(slide0, "/ppt/media/image1.png", "rId4");
+ // Check the relations on it
+ // Note - rId3 is a self reference
+ XSLFSlide slide0 = ss1.getSlides().get(0);
+
+ assertRelation(slide0, "/ppt/slides/slide1.xml", null);
+ assertRelation(slide0, "/ppt/slideLayouts/slideLayout12.xml", "rId1");
+ assertRelation(slide0, "/ppt/notesSlides/notesSlide1.xml", "rId2");
+ assertRelation(slide0, "/ppt/slides/slide1.xml", "rId3");
+ assertRelation(slide0, "/ppt/media/image1.png", "rId4");
+
+ // Save and re-load
+ try (XMLSlideShow ss2 = writeOutAndReadBack(ss1)) {
+ assertEquals(1, ss2.getSlides().size());
+
+ slide0 = ss2.getSlides().get(0);
+ assertRelation(slide0, "/ppt/slides/slide1.xml", null);
+ assertRelation(slide0, "/ppt/slideLayouts/slideLayout12.xml", "rId1");
+ assertRelation(slide0, "/ppt/notesSlides/notesSlide1.xml", "rId2");
+ // TODO Fix this
+ assertRelation(slide0, "/ppt/slides/slide1.xml", "rId3");
+ assertRelation(slide0, "/ppt/media/image1.png", "rId4");
- ss2.close();
+ }
+ }
}
private static void assertRelation(XSLFSlide slide, String exp, String rId) {
@@ -386,41 +375,40 @@ class TestXSLFBugs {
*/
@Test
void tika705() throws Exception {
- XMLSlideShow ss = openSampleDocument("with_japanese.pptx");
+ try (XMLSlideShow ss = openSampleDocument("with_japanese.pptx")) {
+ // Should have one slide
+ assertEquals(1, ss.getSlides().size());
+ XSLFSlide slide = ss.getSlides().get(0);
+
+ // Check the relations from this
+ Collection<RelationPart> rels = slide.getRelationParts();
+
+ // Should have 6 relations:
+ // 1 external hyperlink (skipped from list)
+ // 4 internal hyperlinks
+ // 1 slide layout
+ assertEquals(5, rels.size());
+ int layouts = 0;
+ int hyperlinks = 0;
+ for (RelationPart p : rels) {
+ if (p.getRelationship().getRelationshipType().equals(XSLFRelation.HYPERLINK.getRelation())) {
+ hyperlinks++;
+ } else if (p.getDocumentPart() instanceof XSLFSlideLayout) {
+ layouts++;
+ }
+ }
+ assertEquals(1, layouts);
+ assertEquals(4, hyperlinks);
- // Should have one slide
- assertEquals(1, ss.getSlides().size());
- XSLFSlide slide = ss.getSlides().get(0);
-
- // Check the relations from this
- Collection<RelationPart> rels = slide.getRelationParts();
-
- // Should have 6 relations:
- // 1 external hyperlink (skipped from list)
- // 4 internal hyperlinks
- // 1 slide layout
- assertEquals(5, rels.size());
- int layouts = 0;
- int hyperlinks = 0;
- for (RelationPart p : rels) {
- if (p.getRelationship().getRelationshipType().equals(XSLFRelation.HYPERLINK.getRelation())) {
- hyperlinks++;
- } else if (p.getDocumentPart() instanceof XSLFSlideLayout) {
- layouts++;
- }
- }
- assertEquals(1, layouts);
- assertEquals(4, hyperlinks);
-
- // Hyperlinks should all be to #_ftn1 or #ftnref1
- for (RelationPart p : rels) {
- if (p.getRelationship().getRelationshipType().equals(XSLFRelation.HYPERLINK.getRelation())) {
- URI target = p.getRelationship().getTargetURI();
- String frag = target.getFragment();
- assertTrue(frag.equals("_ftn1") || frag.equals("_ftnref1"), "Invalid target " + frag + " on " + target);
+ // Hyperlinks should all be to #_ftn1 or #ftnref1
+ for (RelationPart p : rels) {
+ if (p.getRelationship().getRelationshipType().equals(XSLFRelation.HYPERLINK.getRelation())) {
+ URI target = p.getRelationship().getTargetURI();
+ String frag = target.getFragment();
+ assertTrue(frag.equals("_ftn1") || frag.equals("_ftnref1"), "Invalid target " + frag + " on " + target);
+ }
}
}
- ss.close();
}
/**
@@ -459,34 +447,34 @@ class TestXSLFBugs {
*/
@Test
void bug56812() throws Exception {
- XMLSlideShow ppt = openSampleDocument("56812.pptx");
+ try (XMLSlideShow ppt = openSampleDocument("56812.pptx")) {
- int internalPictures = 0;
- int externalPictures = 0;
- for (XSLFSlide slide : ppt.getSlides()) {
- for (XSLFShape shape : slide.getShapes()) {
- assertNotNull(shape);
-
- if (shape instanceof XSLFPictureShape) {
- XSLFPictureShape picture = (XSLFPictureShape) shape;
- if (picture.isExternalLinkedPicture()) {
- externalPictures++;
-
- assertNotNull(picture.getPictureLink());
- } else {
- internalPictures++;
-
- XSLFPictureData data = picture.getPictureData();
- assertNotNull(data);
- assertNotNull(data.getFileName());
+ int internalPictures = 0;
+ int externalPictures = 0;
+ for (XSLFSlide slide : ppt.getSlides()) {
+ for (XSLFShape shape : slide.getShapes()) {
+ assertNotNull(shape);
+
+ if (shape instanceof XSLFPictureShape) {
+ XSLFPictureShape picture = (XSLFPictureShape) shape;
+ if (picture.isExternalLinkedPicture()) {
+ externalPictures++;
+
+ assertNotNull(picture.getPictureLink());
+ } else {
+ internalPictures++;
+
+ XSLFPictureData data = picture.getPictureData();
+ assertNotNull(data);
+ assertNotNull(data.getFileName());
+ }
}
}
}
- }
- assertEquals(2, internalPictures);
- assertEquals(1, externalPictures);
- ppt.close();
+ assertEquals(2, internalPictures);
+ assertEquals(1, externalPictures);
+ }
}
private String getSlideText(XMLSlideShow ppt, XSLFSlide slide) throws IOException {
@@ -502,29 +490,29 @@ class TestXSLFBugs {
@Test
void bug57250() throws Exception {
- XMLSlideShow ss = new XMLSlideShow();
- for (String s : new String[]{"Slide1", "Slide2"}) {
- ss.createSlide().createTextBox().setText(s);
- }
- validateSlides(ss, false, "Slide1", "Slide2");
-
- XSLFSlide slide = ss.createSlide();
- slide.createTextBox().setText("New slide");
- validateSlides(ss, true, "Slide1", "Slide2", "New slide");
-
- // Move backward
- ss.setSlideOrder(slide, 0);
- validateSlides(ss, true, "New slide", "Slide1", "Slide2");
-
- // Move forward
- ss.setSlideOrder(slide, 1);
- validateSlides(ss, true, "Slide1", "New slide", "Slide2");
-
- // Move to end
- ss.setSlideOrder(slide, 0);
- ss.setSlideOrder(slide, 2);
- validateSlides(ss, true, "Slide1", "Slide2", "New slide");
- ss.close();
+ try (XMLSlideShow ss = new XMLSlideShow()) {
+ for (String s : new String[]{"Slide1", "Slide2"}) {
+ ss.createSlide().createTextBox().setText(s);
+ }
+ validateSlides(ss, false, "Slide1", "Slide2");
+
+ XSLFSlide slide = ss.createSlide();
+ slide.createTextBox().setText("New slide");
+ validateSlides(ss, true, "Slide1", "Slide2", "New slide");
+
+ // Move backward
+ ss.setSlideOrder(slide, 0);
+ validateSlides(ss, true, "New slide", "Slide1", "Slide2");
+
+ // Move forward
+ ss.setSlideOrder(slide, 1);
+ validateSlides(ss, true, "Slide1", "New slide", "Slide2");
+
+ // Move to end
+ ss.setSlideOrder(slide, 0);
+ ss.setSlideOrder(slide, 2);
+ validateSlides(ss, true, "Slide1", "Slide2", "New slide");
+ }
}
/**
@@ -533,89 +521,88 @@ class TestXSLFBugs {
*/
@Test
void test57552() throws Exception {
- XMLSlideShow ss = new XMLSlideShow();
- for (String s : new String[]{"Slide1", "Slide2"}) {
- ss.createSlide().createTextBox().setText(s);
- }
+ try (XMLSlideShow ss = new XMLSlideShow()) {
+ for (String s : new String[]{"Slide1", "Slide2"}) {
+ ss.createSlide().createTextBox().setText(s);
+ }
- // Slide starts with just layout relation
- XSLFSlide slide = ss.getSlides().get(0);
- assertEquals(0, ss.getPictureData().size());
- assertEquals(1, slide.getShapes().size());
+ // Slide starts with just layout relation
+ XSLFSlide slide = ss.getSlides().get(0);
+ assertEquals(0, ss.getPictureData().size());
+ assertEquals(1, slide.getShapes().size());
+
+ assertEquals(1, slide.getRelations().size());
+
+ final XSLFRelation expected = XSLFRelation.SLIDE_LAYOUT;
+ final POIXMLDocumentPart relation = slide.getRelations().get(0);
+
+ assertEquals(expected.getContentType(), relation.getPackagePart().getContentType());
+ assertEquals(expected.getFileName(expected.getFileNameIndex(relation)), relation.getPackagePart().getPartName().getName());
+
+ // Some dummy pictures
+ byte[][] pics = new byte[15][3];
+ for (int i = 0; i < pics.length; i++) {
+ Arrays.fill(pics[i], (byte) i);
+ }
- assertEquals(1, slide.getRelations().size());
+ // Add a few pictures
+ addPictures(ss, slide, pics, 0, 10);
- final XSLFRelation expected = XSLFRelation.SLIDE_LAYOUT;
- final POIXMLDocumentPart relation = slide.getRelations().get(0);
+ // Re-fetch the pictures and check
+ for (int i = 0; i < 10; i++) {
+ XSLFPictureShape shape = (XSLFPictureShape) slide.getShapes().get(i + 1);
+ assertNotNull(shape.getPictureData());
+ assertArrayEquals(pics[i], shape.getPictureData().getData());
+ }
- assertEquals(expected.getContentType(), relation.getPackagePart().getContentType());
- assertEquals(expected.getFileName(expected.getFileNameIndex(relation)), relation.getPackagePart().getPartName().getName());
+ // Add past 10
+ addPictures(ss, slide, pics, 10, 15);
- // Some dummy pictures
- byte[][] pics = new byte[15][3];
- for (int i = 0; i < pics.length; i++) {
- Arrays.fill(pics[i], (byte) i);
- }
+ // Check all pictures
+ for (int i = 0; i < 15; i++) {
+ XSLFPictureShape shape = (XSLFPictureShape) slide.getShapes().get(i + 1);
+ assertNotNull(shape.getPictureData());
+ assertArrayEquals(pics[i], shape.getPictureData().getData());
+ }
- // Add a few pictures
- addPictures(ss, slide, pics, 0, 10);
+ // Add a duplicate, check the right one is picked
+ XSLFPictureData data = ss.addPicture(pics[3], PictureType.JPEG);
+ assertEquals(3, data.getIndex());
+ assertEquals(15, ss.getPictureData().size());
- // Re-fetch the pictures and check
- for (int i = 0; i < 10; i++) {
- XSLFPictureShape shape = (XSLFPictureShape) slide.getShapes().get(i + 1);
+ XSLFPictureShape shape = slide.createPicture(data);
assertNotNull(shape.getPictureData());
- assertArrayEquals(pics[i], shape.getPictureData().getData());
- }
+ assertArrayEquals(pics[3], shape.getPictureData().getData());
+ assertEquals(17, slide.getShapes().size());
- // Add past 10
- addPictures(ss, slide, pics, 10, 15);
- // Check all pictures
- for (int i = 0; i < 15; i++) {
- XSLFPictureShape shape = (XSLFPictureShape) slide.getShapes().get(i + 1);
- assertNotNull(shape.getPictureData());
- assertArrayEquals(pics[i], shape.getPictureData().getData());
- }
+ // Save and re-load
+ try (XMLSlideShow ss2 = writeOutAndReadBack(ss)) {
+ slide = ss2.getSlides().get(0);
+
+ // Check the 15 individual ones added
+ for (int i = 0; i < 15; i++) {
+ shape = (XSLFPictureShape) slide.getShapes().get(i + 1);
+ assertNotNull(shape.getPictureData());
+ assertArrayEquals(pics[i], shape.getPictureData().getData());
+ }
- // Add a duplicate, check the right one is picked
- XSLFPictureData data = ss.addPicture(pics[3], PictureType.JPEG);
- assertEquals(3, data.getIndex());
- assertEquals(15, ss.getPictureData().size());
-
- XSLFPictureShape shape = slide.createPicture(data);
- assertNotNull(shape.getPictureData());
- assertArrayEquals(pics[3], shape.getPictureData().getData());
- assertEquals(17, slide.getShapes().size());
-
-
- // Save and re-load
- XMLSlideShow ss2 = XSLFTestDataSamples.writeOutAndReadBack(ss);
- slide = ss2.getSlides().get(0);
-
- // Check the 15 individual ones added
- for (int i = 0; i < 15; i++) {
- shape = (XSLFPictureShape) slide.getShapes().get(i + 1);
- assertNotNull(shape.getPictureData());
- assertArrayEquals(pics[i], shape.getPictureData().getData());
+ // Check the duplicate
+ shape = (XSLFPictureShape) slide.getShapes().get(16);
+ assertNotNull(shape.getPictureData());
+ assertArrayEquals(pics[3], shape.getPictureData().getData());
+
+ // Add another duplicate
+ data = ss2.addPicture(pics[5], PictureType.JPEG);
+ assertEquals(5, data.getIndex());
+ assertEquals(15, ss2.getPictureData().size());
+
+ shape = slide.createPicture(data);
+ assertNotNull(shape.getPictureData());
+ assertArrayEquals(pics[5], shape.getPictureData().getData());
+ assertEquals(18, slide.getShapes().size());
+ }
}
-
- // Check the duplicate
- shape = (XSLFPictureShape) slide.getShapes().get(16);
- assertNotNull(shape.getPictureData());
- assertArrayEquals(pics[3], shape.getPictureData().getData());
-
- // Add another duplicate
- data = ss2.addPicture(pics[5], PictureType.JPEG);
- assertEquals(5, data.getIndex());
- assertEquals(15, ss2.getPictureData().size());
-
- shape = slide.createPicture(data);
- assertNotNull(shape.getPictureData());
- assertArrayEquals(pics[5], shape.getPictureData().getData());
- assertEquals(18, slide.getShapes().size());
-
- ss2.close();
- ss.close();
}
private void addPictures(XMLSlideShow ss, XSLFSlide slide, byte[][] pics, int start, int end) {
@@ -633,9 +620,9 @@ class TestXSLFBugs {
private void validateSlides(XMLSlideShow ss, boolean saveAndReload, String... slideTexts) throws IOException {
if (saveAndReload) {
- XMLSlideShow ss2 = XSLFTestDataSamples.writeOutAndReadBack(ss);
- validateSlides(ss, slideTexts);
- ss2.close();
+ try (XMLSlideShow ss2 = writeOutAndReadBack(ss)) {
+ validateSlides(ss2, slideTexts);
+ }
} else {
validateSlides(ss, slideTexts);
}
@@ -652,69 +639,57 @@ class TestXSLFBugs {
@Test
void bug58205() throws IOException {
- XMLSlideShow ss = openSampleDocument("themes.pptx");
-
- int i = 1;
- for (XSLFSlideMaster sm : ss.getSlideMasters()) {
- assertEquals("rId" + (i++), ss.getRelationId(sm));
+ try (XMLSlideShow ss = openSampleDocument("themes.pptx")) {
+ int i = 1;
+ for (XSLFSlideMaster sm : ss.getSlideMasters()) {
+ assertEquals("rId" + (i++), ss.getRelationId(sm));
+ }
}
-
- ss.close();
}
- @Test
- void bug55791a() throws IOException {
- XMLSlideShow ppt = openSampleDocument("45541_Footer.pptx");
- removeAndCreateSlide(ppt);
- ppt.close();
- }
-
- @Test
- void bug55791b() throws IOException {
- XMLSlideShow ppt = openSampleDocument("SampleShow.pptx");
- removeAndCreateSlide(ppt);
- ppt.close();
- }
-
- private void removeAndCreateSlide(XMLSlideShow ppt) {
- assertTrue(ppt.getSlides().size() > 1);
- ppt.removeSlide(1);
- assertNotNull(ppt.createSlide());
+ @ParameterizedTest
+ @ValueSource(strings = {"45541_Footer.pptx", "SampleShow.pptx"})
+ void bug55791(String fileName) throws IOException {
+ try (XMLSlideShow ppt = openSampleDocument(fileName)) {
+ assertTrue(ppt.getSlides().size() > 1);
+ ppt.removeSlide(1);
+ assertNotNull(ppt.createSlide());
+ }
}
@Test
void blibFillAlternateContent() throws IOException {
- XMLSlideShow ppt = openSampleDocument("2411-Performance_Up.pptx");
- XSLFPictureShape ps = (XSLFPictureShape) ppt.getSlides().get(4).getShapes().get(0);
- assertNotNull(ps.getPictureData());
- ppt.close();
+ try (XMLSlideShow ppt = openSampleDocument("2411-Performance_Up.pptx")) {
+ XSLFPictureShape ps = (XSLFPictureShape) ppt.getSlides().get(4).getShapes().get(0);
+ assertNotNull(ps.getPictureData());
+ }
}
@Test
void bug59434() throws IOException {
String url1 = "https://poi.apache.org/changes.html";
String url2 = "https://poi.apache.org/faq.html";
- XMLSlideShow ppt1 = new XMLSlideShow();
- PictureData pd1 = ppt1.addPicture(slTests.readFile("tomcat.png"), PictureType.PNG);
- PictureData pd2 = ppt1.addPicture(slTests.readFile("santa.wmf"), PictureType.WMF);
- XSLFSlide slide = ppt1.createSlide();
- XSLFPictureShape ps1 = slide.createPicture(pd1);
- ps1.setAnchor(new Rectangle2D.Double(20, 20, 100, 100));
- XSLFHyperlink hl1 = ps1.createHyperlink();
- hl1.linkToUrl(url1);
- XSLFPictureShape ps2 = slide.createPicture(pd2);
- ps2.setAnchor(new Rectangle2D.Double(120, 120, 100, 100));
- XSLFHyperlink hl2 = ps2.createHyperlink();
- hl2.linkToUrl(url2);
- XMLSlideShow ppt2 = XSLFTestDataSamples.writeOutAndReadBack(ppt1);
- ppt1.close();
- slide = ppt2.getSlides().get(0);
- ps1 = (XSLFPictureShape) slide.getShapes().get(0);
- ps2 = (XSLFPictureShape) slide.getShapes().get(1);
- assertEquals(url1, ps1.getHyperlink().getAddress());
- assertEquals(url2, ps2.getHyperlink().getAddress());
-
- ppt2.close();
+ try (XMLSlideShow ppt1 = new XMLSlideShow()) {
+ PictureData pd1 = ppt1.addPicture(slTests.readFile("tomcat.png"), PictureType.PNG);
+ PictureData pd2 = ppt1.addPicture(slTests.readFile("santa.wmf"), PictureType.WMF);
+ XSLFSlide slide = ppt1.createSlide();
+ XSLFPictureShape ps1 = slide.createPicture(pd1);
+ ps1.setAnchor(new Rectangle2D.Double(20, 20, 100, 100));
+ XSLFHyperlink hl1 = ps1.createHyperlink();
+ hl1.linkToUrl(url1);
+ XSLFPictureShape ps2 = slide.createPicture(pd2);
+ ps2.setAnchor(new Rectangle2D.Double(120, 120, 100, 100));
+ XSLFHyperlink hl2 = ps2.createHyperlink();
+ hl2.linkToUrl(url2);
+
+ try (XMLSlideShow ppt2 = writeOutAndReadBack(ppt1)) {
+ slide = ppt2.getSlides().get(0);
+ ps1 = (XSLFPictureShape) slide.getShapes().get(0);
+ ps2 = (XSLFPictureShape) slide.getShapes().get(1);
+ assertEquals(url1, ps1.getHyperlink().getAddress());
+ assertEquals(url2, ps2.getHyperlink().getAddress());
+ }
+ }
}
@Test
@@ -723,27 +698,27 @@ class TestXSLFBugs {
Color lineColor = new Color(25.3f / 255f, 1f, 0f, 0.4f);
Color textColor = new Color(1f, 1f, 0f, 0.6f);
- XMLSlideShow ppt1 = new XMLSlideShow();
- XSLFSlide sl = ppt1.createSlide();
- XSLFAutoShape as = sl.createAutoShape();
- as.setShapeType(ShapeType.STAR_10);
- as.setAnchor(new Rectangle2D.Double(100, 100, 300, 300));
- as.setFillColor(fillColor);
- as.setLineColor(lineColor);
- as.setText("Alpha");
- as.setVerticalAlignment(VerticalAlignment.MIDDLE);
- as.setHorizontalCentered(true);
- XSLFTextRun tr = as.getTextParagraphs().get(0).getTextRuns().get(0);
- tr.setFontSize(32d);
- tr.setFontColor(textColor);
- XMLSlideShow ppt2 = XSLFTestDataSamples.writeOutAndReadBack(ppt1);
- ppt1.close();
- sl = ppt2.getSlides().get(0);
- as = (XSLFAutoShape) sl.getShapes().get(0);
- checkColor(fillColor, as.getFillStyle().getPaint());
- checkColor(lineColor, as.getStrokeStyle().getPaint());
- checkColor(textColor, as.getTextParagraphs().get(0).getTextRuns().get(0).getFontColor());
- ppt2.close();
+ try (XMLSlideShow ppt1 = new XMLSlideShow()) {
+ XSLFSlide sl = ppt1.createSlide();
+ XSLFAutoShape as = sl.createAutoShape();
+ as.setShapeType(ShapeType.STAR_10);
+ as.setAnchor(new Rectangle2D.Double(100, 100, 300, 300));
+ as.setFillColor(fillColor);
+ as.setLineColor(lineColor);
+ as.setText("Alpha");
+ as.setVerticalAlignment(VerticalAlignment.MIDDLE);
+ as.setHorizontalCentered(true);
+ XSLFTextRun tr = as.getTextParagraphs().get(0).getTextRuns().get(0);
+ tr.setFontSize(32d);
+ tr.setFontColor(textColor);
+ try (XMLSlideShow ppt2 = writeOutAndReadBack(ppt1)) {
+ sl = ppt2.getSlides().get(0);
+ as = (XSLFAutoShape) sl.getShapes().get(0);
+ checkColor(fillColor, as.getFillStyle().getPaint());
+ checkColor(lineColor, as.getStrokeStyle().getPaint());
+ checkColor(textColor, as.getTextParagraphs().get(0).getTextRuns().get(0).getFontColor());
+ }
+ }
}
private static void checkColor(Color expected, PaintStyle actualStyle) {
@@ -757,64 +732,60 @@ class TestXSLFBugs {
@Test
void bug55714() throws IOException {
- XMLSlideShow srcPptx = openSampleDocument("pptx2svg.pptx");
- XMLSlideShow newPptx = new XMLSlideShow();
- XSLFSlide srcSlide = srcPptx.getSlides().get(0);
- XSLFSlide newSlide = newPptx.createSlide();
-
- XSLFSlideLayout srcSlideLayout = srcSlide.getSlideLayout();
- XSLFSlideLayout newSlideLayout = newSlide.getSlideLayout();
- newSlideLayout.importContent(srcSlideLayout);
-
- XSLFSlideMaster srcSlideMaster = srcSlide.getSlideMaster();
- XSLFSlideMaster newSlideMaster = newSlide.getSlideMaster();
- newSlideMaster.importContent(srcSlideMaster);
-
- newSlide.importContent(srcSlide);
- XMLSlideShow rwPptx = XSLFTestDataSamples.writeOutAndReadBack(newPptx);
-
- PaintStyle ps = rwPptx.getSlides().get(0).getBackground().getFillStyle().getPaint();
- assertTrue(ps instanceof TexturePaint);
-
- rwPptx.close();
- newPptx.close();
- srcPptx.close();
+ try (XMLSlideShow srcPptx = openSampleDocument("pptx2svg.pptx");
+ XMLSlideShow newPptx = new XMLSlideShow()) {
+ XSLFSlide srcSlide = srcPptx.getSlides().get(0);
+ XSLFSlide newSlide = newPptx.createSlide();
+
+ XSLFSlideLayout srcSlideLayout = srcSlide.getSlideLayout();
+ XSLFSlideLayout newSlideLayout = newSlide.getSlideLayout();
+ newSlideLayout.importContent(srcSlideLayout);
+
+ XSLFSlideMaster srcSlideMaster = srcSlide.getSlideMaster();
+ XSLFSlideMaster newSlideMaster = newSlide.getSlideMaster();
+ newSlideMaster.importContent(srcSlideMaster);
+
+ newSlide.importContent(srcSlide);
+ try (XMLSlideShow rwPptx = writeOutAndReadBack(newPptx)) {
+ PaintStyle ps = rwPptx.getSlides().get(0).getBackground().getFillStyle().getPaint();
+ assertTrue(ps instanceof TexturePaint);
+ }
+ }
}
@Test
void bug59273() throws IOException {
- XMLSlideShow ppt = openSampleDocument("bug59273.potx");
- ppt.getPackage().replaceContentType(
- XSLFRelation.PRESENTATIONML_TEMPLATE.getContentType(),
- XSLFRelation.MAIN.getContentType()
- );
-
- XMLSlideShow rwPptx = XSLFTestDataSamples.writeOutAndReadBack(ppt);
- OPCPackage pkg = rwPptx.getPackage();
- int size = pkg.getPartsByContentType(XSLFRelation.MAIN.getContentType()).size();
- assertEquals(1, size);
- size = pkg.getPartsByContentType(XSLFRelation.PRESENTATIONML_TEMPLATE.getContentType()).size();
- assertEquals(0, size);
-
- rwPptx.close();
- ppt.close();
+ try (XMLSlideShow ppt = openSampleDocument("bug59273.potx")) {
+ ppt.getPackage().replaceContentType(
+ XSLFRelation.PRESENTATIONML_TEMPLATE.getContentType(),
+ XSLFRelation.MAIN.getContentType()
+ );
+
+ try (XMLSlideShow rwPptx = writeOutAndReadBack(ppt)) {
+ OPCPackage pkg = rwPptx.getPackage();
+ int size = pkg.getPartsByContentType(XSLFRelation.MAIN.getContentType()).size();
+ assertEquals(1, size);
+ size = pkg.getPartsByContentType(XSLFRelation.PRESENTATIONML_TEMPLATE.getContentType()).size();
+ assertEquals(0, size);
+ }
+ }
}
@Test
void bug60373() throws IOException {
- XMLSlideShow ppt = new XMLSlideShow();
- XSLFSlide sl = ppt.createSlide();
- XSLFTable t = sl.createTable();
- XSLFTableRow r = t.addRow();
- bug60373_addCell(r);
- bug60373_addCell(r);
- r = t.addRow();
- XSLFTableCell c = bug60373_addCell(r);
- // call getTextHeight, when table is not fully populated
- double th = c.getTextHeight();
- assertTrue(th > 10);
- ppt.close();
+ try (XMLSlideShow ppt = new XMLSlideShow()) {
+ XSLFSlide sl = ppt.createSlide();
+ XSLFTable t = sl.createTable();
+ XSLFTableRow r = t.addRow();
+ bug60373_addCell(r);
+ bug60373_addCell(r);
+ r = t.addRow();
+ XSLFTableCell c = bug60373_addCell(r);
+ // call getTextHeight, when table is not fully populated
+ double th = c.getTextHeight();
+ assertTrue(th > 10);
+ }
}
private static XSLFTableCell bug60373_addCell(XSLFTableRow r) {
@@ -834,42 +805,39 @@ class TestXSLFBugs {
@Test
void bug60662() throws IOException {
- XMLSlideShow src = new XMLSlideShow();
- XSLFSlide sl = src.createSlide();
- XSLFGroupShape gs = sl.createGroup();
- gs.setAnchor(new Rectangle2D.Double(100, 100, 100, 100));
- gs.setInteriorAnchor(new Rectangle2D.Double(0, 0, 100, 100));
- XSLFAutoShape as = gs.createAutoShape();
- as.setAnchor(new Rectangle2D.Double(0, 0, 100, 100));
- as.setShapeType(ShapeType.STAR_24);
- as.setFillColor(Color.YELLOW);
- CTShape csh = (CTShape) as.getXmlObject();
- CTOuterShadowEffect shadow = csh.getSpPr().addNewEffectLst().addNewOuterShdw();
- shadow.setDir(270000);
- shadow.setDist(100000);
- shadow.addNewSrgbClr().setVal(new byte[]{0x00, (byte) 0xFF, 0x00});
-
- XMLSlideShow dst = new XMLSlideShow();
- XSLFSlide sl2 = dst.createSlide();
- sl2.importContent(sl);
- XSLFGroupShape gs2 = (XSLFGroupShape) sl2.getShapes().get(0);
- XSLFAutoShape as2 = (XSLFAutoShape) gs2.getShapes().get(0);
- CTShape csh2 = (CTShape) as2.getXmlObject();
- assertTrue(csh2.getSpPr().isSetEffectLst());
-
- dst.close();
- src.close();
+ try (XMLSlideShow src = new XMLSlideShow();
+ XMLSlideShow dst = new XMLSlideShow()) {
+ XSLFSlide sl = src.createSlide();
+ XSLFGroupShape gs = sl.createGroup();
+ gs.setAnchor(new Rectangle2D.Double(100, 100, 100, 100));
+ gs.setInteriorAnchor(new Rectangle2D.Double(0, 0, 100, 100));
+ XSLFAutoShape as = gs.createAutoShape();
+ as.setAnchor(new Rectangle2D.Double(0, 0, 100, 100));
+ as.setShapeType(ShapeType.STAR_24);
+ as.setFillColor(Color.YELLOW);
+ CTShape csh = (CTShape) as.getXmlObject();
+ CTOuterShadowEffect shadow = csh.getSpPr().addNewEffectLst().addNewOuterShdw();
+ shadow.setDir(270000);
+ shadow.setDist(100000);
+ shadow.addNewSrgbClr().setVal(new byte[]{0x00, (byte) 0xFF, 0x00});
+
+ XSLFSlide sl2 = dst.createSlide();
+ sl2.importContent(sl);
+ XSLFGroupShape gs2 = (XSLFGroupShape) sl2.getShapes().get(0);
+ XSLFAutoShape as2 = (XSLFAutoShape) gs2.getShapes().get(0);
+ CTShape csh2 = (CTShape) as2.getXmlObject();
+ assertTrue(csh2.getSpPr().isSetEffectLst());
+ }
}
@Test
void test60810() throws IOException {
- XMLSlideShow ppt = openSampleDocument("60810.pptx");
- for (XSLFSlide slide : ppt.getSlides()) {
- XSLFNotes notesSlide = ppt.getNotesSlide(slide);
- assertNotNull(notesSlide);
+ try (XMLSlideShow ppt = openSampleDocument("60810.pptx")) {
+ for (XSLFSlide slide : ppt.getSlides()) {
+ XSLFNotes notesSlide = ppt.getNotesSlide(slide);
+ assertNotNull(notesSlide);
+ }
}
-
- ppt.close();
}
@Test
@@ -886,7 +854,7 @@ class TestXSLFBugs {
try (XMLSlideShow ppt = openSampleDocument("61515.pptx")) {
ppt.removeSlide(0);
assertEquals(1, ppt.createSlide().getRelations().size());
- try (XMLSlideShow saved = XSLFTestDataSamples.writeOutAndReadBack(ppt)) {
+ try (XMLSlideShow saved = writeOutAndReadBack(ppt)) {
assertEquals(1, saved.getSlides().size());
XSLFSlide slide = saved.getSlides().get(0);
assertEquals(1, slide.getRelations().size());
@@ -897,7 +865,7 @@ class TestXSLFBugs {
@Test
void testAptia() throws IOException {
try (XMLSlideShow ppt = openSampleDocument("aptia.pptx");
- XMLSlideShow saved = XSLFTestDataSamples.writeOutAndReadBack(ppt)) {
+ XMLSlideShow saved = writeOutAndReadBack(ppt)) {
assertEquals(ppt.getSlides().size(), saved.getSlides().size());
}
}
@@ -906,7 +874,7 @@ class TestXSLFBugs {
@Test
void testDivinoRevelado() throws IOException {
try (XMLSlideShow ppt = openSampleDocument("Divino_Revelado.pptx");
- XMLSlideShow saved = XSLFTestDataSamples.writeOutAndReadBack(ppt)) {
+ XMLSlideShow saved = writeOutAndReadBack(ppt)) {
assertEquals(ppt.getSlides().size(), saved.getSlides().size());
}
}
Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/XSLFTestDataSamples.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/XSLFTestDataSamples.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/XSLFTestDataSamples.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/XSLFTestDataSamples.java Fri May 14 00:37:50 2021
@@ -16,54 +16,32 @@
==================================================================== */
package org.apache.poi.xslf;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.apache.poi.POIDataSamples;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
public class XSLFTestDataSamples {
public static XMLSlideShow openSampleDocument(String sampleName) {
- InputStream is = POIDataSamples.getSlideShowInstance().openResourceAsStream(sampleName);
- try {
+ try (InputStream is = POIDataSamples.getSlideShowInstance().openResourceAsStream(sampleName)) {
return new XMLSlideShow(OPCPackage.open(is));
} catch (Exception e) {
throw new RuntimeException(e);
- } finally {
- try {
- is.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
}
}
public static XMLSlideShow writeOutAndReadBack(XMLSlideShow doc) throws IOException {
- ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
- try {
+ try (UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(4096)) {
doc.write(baos);
+ try (InputStream bais = baos.toInputStream()) {
+ return new XMLSlideShow(bais);
+ }
} catch (IOException e) {
throw new RuntimeException(e);
}
-
- InputStream bais;
- bais = new ByteArrayInputStream(baos.toByteArray());
- try {
- return new XMLSlideShow(OPCPackage.open(bais));
- } catch (Exception e) {
- throw new RuntimeException(e);
- } finally {
- try {
- baos.close();
- bais.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
}
}
Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java Fri May 14 00:37:50 2021
@@ -16,14 +16,14 @@
==================================================================== */
package org.apache.poi.xslf.usermodel;
+import static org.apache.poi.xslf.XSLFTestDataSamples.openSampleDocument;
+import static org.apache.poi.xslf.XSLFTestDataSamples.writeOutAndReadBack;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.apache.poi.openxml4j.opc.OPCPackage;
@@ -69,133 +69,119 @@ class TestXMLSlideShow extends BaseTestS
@Test
void testOpen() throws Exception {
// With the finalised uri, should be fine
- XMLSlideShow xml = new XMLSlideShow(pack);
- // Check the core
- assertNotNull(xml.getCTPresentation());
-
- // Check it has some slides
- assertFalse(xml.getSlides().isEmpty());
- assertFalse(xml.getSlideMasters().isEmpty());
-
- xml.close();
+ try (XMLSlideShow xml = new XMLSlideShow(pack)) {
+ // Check the core
+ assertNotNull(xml.getCTPresentation());
+
+ // Check it has some slides
+ assertFalse(xml.getSlides().isEmpty());
+ assertFalse(xml.getSlideMasters().isEmpty());
+ }
}
- @SuppressWarnings("deprecation")
@Test
void testSlideBasics() throws IOException {
- XMLSlideShow xml = new XMLSlideShow(pack);
-
- // Should have 1 master
- assertEquals(1, xml.getSlideMasters().size());
+ try (XMLSlideShow xml = new XMLSlideShow(pack)) {
- // Should have two sheets
- assertEquals(2, xml.getSlides().size());
+ // Should have 1 master
+ assertEquals(1, xml.getSlideMasters().size());
- // Check they're as expected
- CTSlideIdListEntry[] slides = xml.getCTPresentation().getSldIdLst().getSldIdArray();
+ // Should have two sheets
+ assertEquals(2, xml.getSlides().size());
- assertEquals(256, slides[0].getId());
- assertEquals(257, slides[1].getId());
- assertEquals("rId2", slides[0].getId2());
- assertEquals("rId3", slides[1].getId2());
+ // Check they're as expected
+ CTSlideIdListEntry[] slides = xml.getCTPresentation().getSldIdLst().getSldIdArray();
- // Now get those objects
- assertNotNull(xml.getSlides().get(0));
- assertNotNull(xml.getSlides().get(1));
+ assertEquals(256, slides[0].getId());
+ assertEquals(257, slides[1].getId());
+ assertEquals("rId2", slides[0].getId2());
+ assertEquals("rId3", slides[1].getId2());
- // And check they have notes as expected
- assertNotNull(xml.getSlides().get(0).getNotes());
- assertNotNull(xml.getSlides().get(1).getNotes());
+ // Now get those objects
+ assertNotNull(xml.getSlides().get(0));
+ assertNotNull(xml.getSlides().get(1));
- // Next up look for the slide master
- CTSlideMasterIdListEntry[] masters = xml.getCTPresentation().getSldMasterIdLst().getSldMasterIdArray();
+ // And check they have notes as expected
+ assertNotNull(xml.getSlides().get(0).getNotes());
+ assertNotNull(xml.getSlides().get(1).getNotes());
- // see SlideAtom.USES_MASTER_SLIDE_ID
- assertEquals(0x80000000L, masters[0].getId());
- assertEquals("rId1", masters[0].getId2());
- assertNotNull(xml.getSlideMasters().get(0));
+ // Next up look for the slide master
+ CTSlideMasterIdListEntry[] masters = xml.getCTPresentation().getSldMasterIdLst().getSldMasterIdArray();
- // Finally look for the notes master
- CTNotesMasterIdListEntry notesMaster =
- xml.getCTPresentation().getNotesMasterIdLst().getNotesMasterId();
- assertNotNull(notesMaster);
+ // see SlideAtom.USES_MASTER_SLIDE_ID
+ assertEquals(0x80000000L, masters[0].getId());
+ assertEquals("rId1", masters[0].getId2());
+ assertNotNull(xml.getSlideMasters().get(0));
- assertNotNull(xml.getNotesMaster());
+ // Finally look for the notes master
+ CTNotesMasterIdListEntry notesMaster =
+ xml.getCTPresentation().getNotesMasterIdLst().getNotesMasterId();
+ assertNotNull(notesMaster);
- xml.close();
+ assertNotNull(xml.getNotesMaster());
+ }
}
@Test
void testMetadataBasics() throws IOException {
- XMLSlideShow xml = new XMLSlideShow(pack);
-
- assertNotNull(xml.getProperties().getCoreProperties());
- assertNotNull(xml.getProperties().getExtendedProperties());
+ try (XMLSlideShow xml = new XMLSlideShow(pack)) {
- assertEquals("Microsoft Office PowerPoint", xml.getProperties().getExtendedProperties().getUnderlyingProperties().getApplication());
- assertEquals(0, xml.getProperties().getExtendedProperties().getUnderlyingProperties().getCharacters());
- assertEquals(0, xml.getProperties().getExtendedProperties().getUnderlyingProperties().getLines());
+ assertNotNull(xml.getProperties().getCoreProperties());
+ assertNotNull(xml.getProperties().getExtendedProperties());
- assertNull(xml.getProperties().getCoreProperties().getTitle());
- assertFalse(xml.getProperties().getCoreProperties().getUnderlyingProperties().getSubjectProperty().isPresent());
+ assertEquals("Microsoft Office PowerPoint", xml.getProperties().getExtendedProperties().getUnderlyingProperties().getApplication());
+ assertEquals(0, xml.getProperties().getExtendedProperties().getUnderlyingProperties().getCharacters());
+ assertEquals(0, xml.getProperties().getExtendedProperties().getUnderlyingProperties().getLines());
- xml.close();
+ assertNull(xml.getProperties().getCoreProperties().getTitle());
+ assertFalse(xml.getProperties().getCoreProperties().getUnderlyingProperties().getSubjectProperty().isPresent());
+ }
}
@Test
void testComments() throws Exception {
// Default sample file has none
- XMLSlideShow xml = new XMLSlideShow(pack);
-
- assertNull(xml.getCommentAuthors());
+ try (XMLSlideShow xml = new XMLSlideShow(pack)) {
+ assertNull(xml.getCommentAuthors());
- for (XSLFSlide slide : xml.getSlides()) {
- assertTrue(slide.getComments().isEmpty());
+ for (XSLFSlide slide : xml.getSlides()) {
+ assertTrue(slide.getComments().isEmpty());
+ }
}
// Try another with comments
- XMLSlideShow xmlComments = new XMLSlideShow(slTests.openResourceAsStream("45545_Comment.pptx"));
+ try (XMLSlideShow xmlComments = openSampleDocument("45545_Comment.pptx")) {
- // Has one author
- assertNotNull(xmlComments.getCommentAuthors());
- assertEquals(1, xmlComments.getCommentAuthors().getCTCommentAuthorsList().sizeOfCmAuthorArray());
- assertEquals("XPVMWARE01", xmlComments.getCommentAuthors().getAuthorById(0).getName());
-
- // First two slides have comments
- int i = -1;
- for (XSLFSlide slide : xmlComments.getSlides()) {
- i++;
-
- if (i == 0) {
- assertNotNull(slide.getCommentsPart());
- assertEquals(1, slide.getCommentsPart().getNumberOfComments());
- assertEquals("testdoc", slide.getCommentsPart().getCommentAt(0).getText());
- assertEquals(0, slide.getCommentsPart().getCommentAt(0).getAuthorId());
- } else if (i == 1) {
- assertNotNull(slide.getComments());
- assertEquals(1, slide.getCommentsPart().getNumberOfComments());
- assertEquals("test phrase", slide.getCommentsPart().getCommentAt(0).getText());
- assertEquals(0, slide.getCommentsPart().getCommentAt(0).getAuthorId());
- } else {
- assertNull(slide.getCommentsPart());
- assertTrue(slide.getComments().isEmpty());
+ // Has one author
+ assertNotNull(xmlComments.getCommentAuthors());
+ assertEquals(1, xmlComments.getCommentAuthors().getCTCommentAuthorsList().sizeOfCmAuthorArray());
+ assertEquals("XPVMWARE01", xmlComments.getCommentAuthors().getAuthorById(0).getName());
+
+ // First two slides have comments
+ int i = -1;
+ for (XSLFSlide slide : xmlComments.getSlides()) {
+ i++;
+
+ if (i == 0) {
+ assertNotNull(slide.getCommentsPart());
+ assertEquals(1, slide.getCommentsPart().getNumberOfComments());
+ assertEquals("testdoc", slide.getCommentsPart().getCommentAt(0).getText());
+ assertEquals(0, slide.getCommentsPart().getCommentAt(0).getAuthorId());
+ } else if (i == 1) {
+ assertNotNull(slide.getComments());
+ assertEquals(1, slide.getCommentsPart().getNumberOfComments());
+ assertEquals("test phrase", slide.getCommentsPart().getCommentAt(0).getText());
+ assertEquals(0, slide.getCommentsPart().getCommentAt(0).getAuthorId());
+ } else {
+ assertNull(slide.getCommentsPart());
+ assertTrue(slide.getComments().isEmpty());
+ }
}
}
-
- xmlComments.close();
- xml.close();
}
@Override
public XMLSlideShow reopen(SlideShow<XSLFShape, XSLFTextParagraph> show) throws IOException {
- BufAccessBAOS bos = new BufAccessBAOS();
- show.write(bos);
- return new XMLSlideShow(new ByteArrayInputStream(bos.getBuf()));
- }
-
- private static class BufAccessBAOS extends ByteArrayOutputStream {
- byte[] getBuf() {
- return buf;
- }
+ return writeOutAndReadBack((XMLSlideShow) show);
}
}
Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFExamples.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFExamples.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFExamples.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFExamples.java Fri May 14 00:37:50 2021
@@ -21,12 +21,10 @@ import static org.apache.poi.openxml4j.o
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.awt.Rectangle;
-import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
-import java.util.List;
import javax.xml.namespace.QName;
Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java Fri May 14 00:37:50 2021
@@ -16,6 +16,8 @@
==================================================================== */
package org.apache.poi.xslf.usermodel;
+import static org.apache.poi.xslf.XSLFTestDataSamples.openSampleDocument;
+import static org.apache.poi.xslf.XSLFTestDataSamples.writeOutAndReadBack;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -25,8 +27,6 @@ import static org.junit.jupiter.api.Asse
import static org.junit.jupiter.api.Assumptions.assumeFalse;
import java.awt.geom.Rectangle2D;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -41,7 +41,6 @@ import org.apache.poi.POIDataSamples;
import org.apache.poi.sl.usermodel.PictureData.PictureType;
import org.apache.poi.util.IOUtils;
import org.apache.poi.util.TempFile;
-import org.apache.poi.xslf.XSLFTestDataSamples;
import org.apache.poi.xslf.util.PPTX2PNG;
import org.junit.jupiter.api.Test;
import org.openxmlformats.schemas.presentationml.x2006.main.CTPicture;
@@ -51,245 +50,240 @@ class TestXSLFPictureShape {
@Test
void testCreate() throws Exception {
- XMLSlideShow ppt1 = new XMLSlideShow();
- assertEquals(0, ppt1.getPictureData().size());
- byte[] data1 = new byte[100];
- for(int i = 0;i < 100;i++) { data1[i] = (byte)i; }
- XSLFPictureData pdata1 = ppt1.addPicture(data1, PictureType.JPEG);
- assertEquals(0, pdata1.getIndex());
- assertEquals(1, ppt1.getPictureData().size());
-
- XSLFSlide slide = ppt1.createSlide();
- XSLFPictureShape shape1 = slide.createPicture(pdata1);
- assertNotNull(shape1.getPictureData());
- assertArrayEquals(data1, shape1.getPictureData().getData());
-
- byte[] data2 = new byte[200];
- for(int i = 0;i < 200;i++) { data2[i] = (byte)i; }
- XSLFPictureData pdata2 = ppt1.addPicture(data2, PictureType.PNG);
- XSLFPictureShape shape2 = slide.createPicture(pdata2);
- assertNotNull(shape2.getPictureData());
- assertEquals(1, pdata2.getIndex());
- assertEquals(2, ppt1.getPictureData().size());
- assertArrayEquals(data2, shape2.getPictureData().getData());
-
- XMLSlideShow ppt2 = XSLFTestDataSamples.writeOutAndReadBack(ppt1);
- ppt1.close();
- List<XSLFPictureData> pics = ppt2.getPictureData();
- assertEquals(2, pics.size());
- assertArrayEquals(data1, pics.get(0).getData());
- assertArrayEquals(data2, pics.get(1).getData());
-
- List<XSLFShape> shapes = ppt2.getSlides().get(0).getShapes();
- assertArrayEquals(data1, ((XSLFPictureShape) shapes.get(0)).getPictureData().getData());
- assertArrayEquals(data2, ((XSLFPictureShape) shapes.get(1)).getPictureData().getData());
- ppt2.close();
+ try (XMLSlideShow ppt1 = new XMLSlideShow()) {
+ assertEquals(0, ppt1.getPictureData().size());
+ byte[] data1 = new byte[100];
+ for (int i = 0; i < 100; i++) {
+ data1[i] = (byte) i;
+ }
+ XSLFPictureData pdata1 = ppt1.addPicture(data1, PictureType.JPEG);
+ assertEquals(0, pdata1.getIndex());
+ assertEquals(1, ppt1.getPictureData().size());
+
+ XSLFSlide slide = ppt1.createSlide();
+ XSLFPictureShape shape1 = slide.createPicture(pdata1);
+ assertNotNull(shape1.getPictureData());
+ assertArrayEquals(data1, shape1.getPictureData().getData());
+
+ byte[] data2 = new byte[200];
+ for (int i = 0; i < 200; i++) {
+ data2[i] = (byte) i;
+ }
+ XSLFPictureData pdata2 = ppt1.addPicture(data2, PictureType.PNG);
+ XSLFPictureShape shape2 = slide.createPicture(pdata2);
+ assertNotNull(shape2.getPictureData());
+ assertEquals(1, pdata2.getIndex());
+ assertEquals(2, ppt1.getPictureData().size());
+ assertArrayEquals(data2, shape2.getPictureData().getData());
+
+ try (XMLSlideShow ppt2 = writeOutAndReadBack(ppt1)) {
+ List<XSLFPictureData> pics = ppt2.getPictureData();
+ assertEquals(2, pics.size());
+ assertArrayEquals(data1, pics.get(0).getData());
+ assertArrayEquals(data2, pics.get(1).getData());
+
+ List<XSLFShape> shapes = ppt2.getSlides().get(0).getShapes();
+ assertArrayEquals(data1, ((XSLFPictureShape) shapes.get(0)).getPictureData().getData());
+ assertArrayEquals(data2, ((XSLFPictureShape) shapes.get(1)).getPictureData().getData());
+ }
+ }
}
@Test
void testCreateMultiplePictures() throws Exception {
- XMLSlideShow ppt1 = new XMLSlideShow();
- XSLFSlide slide1 = ppt1.createSlide();
- XSLFGroupShape group1 = slide1.createGroup();
-
-
- int pictureIndex = 0;
- // first add 20 images to the slide
- for (int i = 0; i < 20; i++, pictureIndex++) {
- byte[] data = new byte[]{(byte)pictureIndex};
- XSLFPictureData elementData = ppt1.addPicture(data, PictureType.PNG);
- assertEquals(pictureIndex, elementData.getIndex()); // added images have indexes 0,1,2....19
- XSLFPictureShape picture = slide1.createPicture(elementData);
- // POI saves images as image1.png, image2.png, etc.
- String fileName = "image" + (elementData.getIndex()+1) + ".png";
- assertEquals(fileName, picture.getPictureData().getFileName());
- assertArrayEquals(data, picture.getPictureData().getData());
- }
+ try (XMLSlideShow ppt1 = new XMLSlideShow()) {
+ XSLFSlide slide1 = ppt1.createSlide();
+ XSLFGroupShape group1 = slide1.createGroup();
+
+
+ int pictureIndex = 0;
+ // first add 20 images to the slide
+ for (int i = 0; i < 20; i++, pictureIndex++) {
+ byte[] data = new byte[]{(byte) pictureIndex};
+ XSLFPictureData elementData = ppt1.addPicture(data, PictureType.PNG);
+ assertEquals(pictureIndex, elementData.getIndex()); // added images have indexes 0,1,2....19
+ XSLFPictureShape picture = slide1.createPicture(elementData);
+ // POI saves images as image1.png, image2.png, etc.
+ String fileName = "image" + (elementData.getIndex() + 1) + ".png";
+ assertEquals(fileName, picture.getPictureData().getFileName());
+ assertArrayEquals(data, picture.getPictureData().getData());
+ }
- // and then add next 20 images to a group
- for (int i = 0; i < 20; i++, pictureIndex++) {
- byte[] data = new byte[]{(byte)pictureIndex};
- XSLFPictureData elementData = ppt1.addPicture(data, PictureType.PNG);
- XSLFPictureShape picture = group1.createPicture(elementData);
- // POI saves images as image1.png, image2.png, etc.
- assertEquals(pictureIndex, elementData.getIndex()); // added images have indexes 0,1,2....19
- String fileName = "image" + (pictureIndex + 1) + ".png";
- assertEquals(fileName, picture.getPictureData().getFileName());
- assertArrayEquals(data, picture.getPictureData().getData());
- }
+ // and then add next 20 images to a group
+ for (int i = 0; i < 20; i++, pictureIndex++) {
+ byte[] data = new byte[]{(byte) pictureIndex};
+ XSLFPictureData elementData = ppt1.addPicture(data, PictureType.PNG);
+ XSLFPictureShape picture = group1.createPicture(elementData);
+ // POI saves images as image1.png, image2.png, etc.
+ assertEquals(pictureIndex, elementData.getIndex()); // added images have indexes 0,1,2....19
+ String fileName = "image" + (pictureIndex + 1) + ".png";
+ assertEquals(fileName, picture.getPictureData().getFileName());
+ assertArrayEquals(data, picture.getPictureData().getData());
+ }
- // serialize, read back and check that all images are there
+ // serialize, read back and check that all images are there
- XMLSlideShow ppt2 = XSLFTestDataSamples.writeOutAndReadBack(ppt1);
- ppt1.close();
- // pictures keyed by file name
- Map<String, XSLFPictureData> pics = new HashMap<>();
- for(XSLFPictureData p : ppt2.getPictureData()){
- pics.put(p.getFileName(), p);
- }
- assertEquals(40, pics.size());
- for (int i = 0; i < 40; i++) {
- byte[] data1 = new byte[]{(byte)i};
- String fileName = "image" + (i + 1) + ".png";
- XSLFPictureData data = pics.get(fileName);
- assertNotNull(data);
- assertEquals(fileName, data.getFileName());
- assertArrayEquals(data1, data.getData());
+ try (XMLSlideShow ppt2 = writeOutAndReadBack(ppt1)) {
+ // pictures keyed by file name
+ Map<String, XSLFPictureData> pics = new HashMap<>();
+ for (XSLFPictureData p : ppt2.getPictureData()) {
+ pics.put(p.getFileName(), p);
+ }
+ assertEquals(40, pics.size());
+ for (int i = 0; i < 40; i++) {
+ byte[] data1 = new byte[]{(byte) i};
+ String fileName = "image" + (i + 1) + ".png";
+ XSLFPictureData data = pics.get(fileName);
+ assertNotNull(data);
+ assertEquals(fileName, data.getFileName());
+ assertArrayEquals(data1, data.getData());
+ }
+ }
}
- ppt2.close();
}
@Test
void testImageCaching() throws Exception {
- XMLSlideShow ppt = new XMLSlideShow();
- byte[] img1 = new byte[]{1,2,3};
- byte[] img2 = new byte[]{3,4,5};
- XSLFPictureData pdata1 = ppt.addPicture(img1, PictureType.PNG);
- assertEquals(0, pdata1.getIndex());
- assertEquals(0, ppt.addPicture(img1, PictureType.PNG).getIndex());
-
- XSLFPictureData idx2 = ppt.addPicture(img2, PictureType.PNG);
- assertEquals(1, idx2.getIndex());
- assertEquals(1, ppt.addPicture(img2, PictureType.PNG).getIndex());
-
- XSLFSlide slide1 = ppt.createSlide();
- assertNotNull(slide1);
- XSLFSlide slide2 = ppt.createSlide();
- assertNotNull(slide2);
-
- ppt.close();
+ try (XMLSlideShow ppt = new XMLSlideShow()) {
+ byte[] img1 = new byte[]{1, 2, 3};
+ byte[] img2 = new byte[]{3, 4, 5};
+ XSLFPictureData pdata1 = ppt.addPicture(img1, PictureType.PNG);
+ assertEquals(0, pdata1.getIndex());
+ assertEquals(0, ppt.addPicture(img1, PictureType.PNG).getIndex());
+
+ XSLFPictureData idx2 = ppt.addPicture(img2, PictureType.PNG);
+ assertEquals(1, idx2.getIndex());
+ assertEquals(1, ppt.addPicture(img2, PictureType.PNG).getIndex());
+
+ XSLFSlide slide1 = ppt.createSlide();
+ assertNotNull(slide1);
+ XSLFSlide slide2 = ppt.createSlide();
+ assertNotNull(slide2);
+ }
}
@Test
void testMerge() throws Exception {
- XMLSlideShow ppt1 = new XMLSlideShow();
- byte[] data1 = new byte[100];
- XSLFPictureData pdata1 = ppt1.addPicture(data1, PictureType.JPEG);
+ try (XMLSlideShow ppt1 = new XMLSlideShow()) {
+ byte[] data1 = new byte[100];
+ XSLFPictureData pdata1 = ppt1.addPicture(data1, PictureType.JPEG);
- XSLFSlide slide1 = ppt1.createSlide();
- XSLFPictureShape shape1 = slide1.createPicture(pdata1);
- CTPicture ctPic1 = (CTPicture)shape1.getXmlObject();
- ctPic1.getNvPicPr().getNvPr().addNewCustDataLst().addNewTags().setId("rId99");
+ XSLFSlide slide1 = ppt1.createSlide();
+ XSLFPictureShape shape1 = slide1.createPicture(pdata1);
+ CTPicture ctPic1 = (CTPicture) shape1.getXmlObject();
+ ctPic1.getNvPicPr().getNvPr().addNewCustDataLst().addNewTags().setId("rId99");
- XSLFPictureShape shape2 = slide1.createPicture(pdata1);
- CTPicture ctPic2 = (CTPicture)shape2.getXmlObject();
- ctPic2.getNvPicPr().getNvPr().addNewCustDataLst().addNewTags().setId("rId99");
+ XSLFPictureShape shape2 = slide1.createPicture(pdata1);
+ CTPicture ctPic2 = (CTPicture) shape2.getXmlObject();
+ ctPic2.getNvPicPr().getNvPr().addNewCustDataLst().addNewTags().setId("rId99");
- differentShapeName(shape1, shape2);
+ differentShapeName(shape1, shape2);
- XSLFGroupShape group = slide1.createGroup();
- XSLFTextBox tb1 = group.createTextBox();
- XSLFTextBox tb2 = group.createTextBox();
+ XSLFGroupShape group = slide1.createGroup();
+ XSLFTextBox tb1 = group.createTextBox();
+ XSLFTextBox tb2 = group.createTextBox();
- assertNotEquals("We should have different names now, but had: " + tb1.getShapeName() + " for both", tb1.getShapeName(), tb2.getShapeName());
+ differentShapeName(tb1, tb2);
- XMLSlideShow pptCopy = new XMLSlideShow();
+ try (XMLSlideShow pptCopy = new XMLSlideShow()) {
+ XSLFSlide slideCopy = pptCopy.createSlide().importContent(slide1);
+ XSLFPictureShape shapeCopy1 = (XSLFPictureShape) slideCopy.getShapes().get(0);
- XSLFSlide slideCopy = pptCopy.createSlide().importContent(slide1);
- XSLFPictureShape shapeCopy1 = (XSLFPictureShape)slideCopy.getShapes().get(0);
+ assertArrayEquals(data1, shapeCopy1.getPictureData().getData());
+ assertEquals(shape1.getShapeName(), shapeCopy1.getShapeName());
- assertArrayEquals(data1, shapeCopy1.getPictureData().getData());
- assertEquals(shape1.getShapeName(), shapeCopy1.getShapeName());
+ CTPicture ctPicCopy1 = (CTPicture) shapeCopy1.getXmlObject();
+ assertFalse(ctPicCopy1.getNvPicPr().getNvPr().isSetCustDataLst());
- CTPicture ctPicCopy1 = (CTPicture)shapeCopy1.getXmlObject();
- assertFalse(ctPicCopy1.getNvPicPr().getNvPr().isSetCustDataLst());
+ XSLFPictureShape shapeCopy2 = (XSLFPictureShape) slideCopy.getShapes().get(1);
- XSLFPictureShape shapeCopy2 = (XSLFPictureShape)slideCopy.getShapes().get(1);
+ assertArrayEquals(data1, shapeCopy2.getPictureData().getData());
+ assertEquals(shape2.getShapeName(), shapeCopy2.getShapeName());
- assertArrayEquals(data1, shapeCopy2.getPictureData().getData());
- assertEquals(shape2.getShapeName(), shapeCopy2.getShapeName());
+ CTPicture ctPicCopy2 = (CTPicture) shapeCopy2.getXmlObject();
+ assertFalse(ctPicCopy2.getNvPicPr().getNvPr().isSetCustDataLst());
- CTPicture ctPicCopy2 = (CTPicture)shapeCopy2.getXmlObject();
- assertFalse(ctPicCopy2.getNvPicPr().getNvPr().isSetCustDataLst());
+ differentShapeName(shapeCopy1, shapeCopy2);
- differentShapeName(shapeCopy1, shapeCopy2);
+ XSLFGroupShape groupCopy = (XSLFGroupShape) slideCopy.getShapes().get(2);
+ XSLFTextBox tbCopy1 = (XSLFTextBox) groupCopy.getShapes().get(0);
+ XSLFTextBox tbCopy2 = (XSLFTextBox) groupCopy.getShapes().get(1);
- XSLFGroupShape groupCopy = (XSLFGroupShape) slideCopy.getShapes().get(2);
- XSLFTextBox tbCopy1 = (XSLFTextBox) groupCopy.getShapes().get(0);
- XSLFTextBox tbCopy2 = (XSLFTextBox) groupCopy.getShapes().get(1);
+ assertEquals(group.getShapeName(), groupCopy.getShapeName());
+ assertEquals(tb1.getShapeName(), tbCopy1.getShapeName());
+ assertEquals(tb2.getShapeName(), tbCopy2.getShapeName());
- assertEquals(group.getShapeName(), groupCopy.getShapeName());
- assertEquals(tb1.getShapeName(), tbCopy1.getShapeName());
- assertEquals(tb2.getShapeName(), tbCopy2.getShapeName());
-
- differentShapeName(tb1, tb2);
-
- ppt1.close();
- pptCopy.close();
+ differentShapeName(tb1, tb2);
+ }
+ }
}
private void differentShapeName(XSLFShape shape1, XSLFShape shape2) {
- assertNotEquals("We should have different names now, but had: " + shape1.getShapeName() + " for both", shape1.getShapeName(), shape2.getShapeName());
+ assertNotEquals(shape1.getShapeName(), shape2.getShapeName(),
+ "We should have different names now, but had: " + shape1.getShapeName() + " for both");
}
@Test
void bug58663() throws IOException {
- InputStream is = _slTests.openResourceAsStream("shapes.pptx");
- XMLSlideShow ppt = new XMLSlideShow(is);
- is.close();
-
- XSLFSlide slide = ppt.getSlides().get(0);
- XSLFPictureShape ps = (XSLFPictureShape)slide.getShapes().get(3);
- slide.removeShape(ps);
-
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- ppt.write(bos);
- ppt.close();
-
- XMLSlideShow ppt2 = new XMLSlideShow(new ByteArrayInputStream(bos.toByteArray()));
- assertTrue(ppt2.getPictureData().isEmpty());
- ppt2.close();
+ try (XMLSlideShow ppt = openSampleDocument("shapes.pptx")) {
+ XSLFSlide slide = ppt.getSlides().get(0);
+ XSLFPictureShape ps = (XSLFPictureShape) slide.getShapes().get(3);
+ slide.removeShape(ps);
+
+ try (XMLSlideShow ppt2 = writeOutAndReadBack(ppt)) {
+ assertTrue(ppt2.getPictureData().isEmpty());
+ }
+ }
}
@Test
void testTiffImageBug59742() throws Exception {
- XMLSlideShow slideShow = new XMLSlideShow();
- final InputStream tiffStream = _slTests.openResourceAsStream("testtiff.tif");
- final byte[] pictureData = IOUtils.toByteArray(tiffStream);
- IOUtils.closeQuietly(tiffStream);
-
- XSLFPictureData pic = slideShow.addPicture(pictureData, PictureType.TIFF);
- assertEquals("image/tiff", pic.getContentType());
- assertEquals("image1.tiff", pic.getFileName());
-
- slideShow.close();
+ try (XMLSlideShow slideShow = new XMLSlideShow();
+ InputStream tiffStream = _slTests.openResourceAsStream("testtiff.tif")) {
+ final byte[] pictureData = IOUtils.toByteArray(tiffStream);
+
+ XSLFPictureData pic = slideShow.addPicture(pictureData, PictureType.TIFF);
+ assertEquals("image/tiff", pic.getContentType());
+ assertEquals("image1.tiff", pic.getFileName());
+ }
}
@Test
void renderSvgImage() throws Exception {
- XMLSlideShow ppt = new XMLSlideShow();
- XSLFSlide slide = ppt.createSlide();
+ try (XMLSlideShow ppt = new XMLSlideShow()) {
+ XSLFSlide slide = ppt.createSlide();
- try {
- XSLFPictureData svgPic = ppt.addPicture(POIDataSamples.getDocumentInstance().getFile("../project-header.svg"), PictureType.SVG);
- XSLFPictureShape shape = XSLFPictureShape.addSvgImage(slide, svgPic, PictureType.JPEG, null);
-
- Rectangle2D anchor = shape.getAnchor();
- anchor.setRect(100, 100, anchor.getWidth(), anchor.getHeight());
- shape.setAnchor(anchor);
-
- assertNotNull(shape.getSvgImage());
-
- final File tmpFile = TempFile.createTempFile("svgtest", ".pptx");
- System.out.println(tmpFile);
- try (FileOutputStream fos = new FileOutputStream(tmpFile)) {
- ppt.write(fos);
- }
+ try {
+ XSLFPictureData svgPic = ppt.addPicture(POIDataSamples.getDocumentInstance().getFile("../project-header.svg"), PictureType.SVG);
+ XSLFPictureShape shape = XSLFPictureShape.addSvgImage(slide, svgPic, PictureType.JPEG, null);
+
+ Rectangle2D anchor = shape.getAnchor();
+ anchor.setRect(100, 100, anchor.getWidth(), anchor.getHeight());
+ shape.setAnchor(anchor);
+
+ assertNotNull(shape.getSvgImage());
+
+ final File tmpFile = TempFile.createTempFile("svgtest", ".pptx");
+ System.out.println(tmpFile);
+ try (FileOutputStream fos = new FileOutputStream(tmpFile)) {
+ ppt.write(fos);
+ }
- String[] args = {
+ String[] args = {
"-format", "png", // png,gif,jpg or null for test
"-slide", "-1", // -1 for all
"-outdir", tmpFile.getParentFile().getCanonicalPath(),
"-quiet",
tmpFile.getAbsolutePath()
- };
- PPTX2PNG.main(args);
- } catch (IIOException ignore) {
- // Ignore all ImageIO related exceptions like "Can't create output stream!"
- // which fail often in maven builds because of missing/wrong temp directory
- } catch (NoClassDefFoundError ignore) {
- assumeFalse(true, "Batik doesn't work on th module-path");
+ };
+ PPTX2PNG.main(args);
+ } catch (IIOException ignored) {
+ // Ignore all ImageIO related exceptions like "Can't create output stream!"
+ // which fail often in maven builds because of missing/wrong temp directory
+ } catch (NoClassDefFoundError ignored) {
+ assumeFalse(true, "Batik doesn't work on th module-path");
+ }
}
}
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org