mirror of https://github.com/apache/poi.git
#60427 - Creating pictures in PowerPoint slides requires scratchpad-jar for adding WMF images
more cases git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1771832 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
3553698c3a
commit
1575f3d263
|
@ -339,7 +339,7 @@ under the License.
|
|||
<!-- classes are omitted on test cases outside the xml-dsign area to avoid classpath poisioning -->
|
||||
<!--path refid="ooxml.xmlsec.classpath"/-->
|
||||
<!-- Used only for ExtractorFactory, see #57963 -->
|
||||
<pathelement location="${scratchpad.output.dir}"/>
|
||||
<pathelement location="${scratchpad.output.dir}" unless:true="${scratchpad.ignore}"/>
|
||||
</path>
|
||||
|
||||
<path id="test.classpath">
|
||||
|
@ -1415,11 +1415,12 @@ under the License.
|
|||
<exclude name="**/All*Tests.java"/>
|
||||
<exclude name="**/TestSignatureInfo.java"/>
|
||||
<exclude name="**/${testexcludepattern}.java"/>
|
||||
<exclude name="**/TestExtractorFactory.java" if:true="${scratchpad.ignore}"/>
|
||||
</fileset>
|
||||
</batchtest>
|
||||
</junit>
|
||||
</jacoco:coverage>
|
||||
<jacoco:coverage enabled="${coverage.enabled}" excludes="${coverage.excludes}" destfile="build/jacoco-@{type}-xmlsec.exec">
|
||||
<jacoco:coverage enabled="${coverage.enabled}" excludes="${coverage.excludes}" destfile="build/jacoco-@{type}-xmlsec.exec">
|
||||
<junit printsummary="yes" fork="yes" forkmode="once" haltonfailure="${halt.on.test.failure}"
|
||||
failureproperty="ooxml.xmlsec.test.failed">
|
||||
<classpath>
|
||||
|
|
|
@ -19,63 +19,85 @@
|
|||
|
||||
package org.apache.poi.sl;
|
||||
|
||||
import static org.apache.poi.sl.TestTable.openSampleSlideshow;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.apache.poi.sl.TestTable.openSampleSlideshow;
|
||||
import static org.junit.Assume.assumeFalse;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.poi.hslf.model.HeadersFooters;
|
||||
import org.apache.poi.hslf.usermodel.HSLFSlide;
|
||||
import org.apache.poi.hslf.usermodel.HSLFSlideShow;
|
||||
import org.apache.poi.hslf.usermodel.HSLFTextParagraph;
|
||||
import org.apache.poi.sl.usermodel.Shape;
|
||||
import org.apache.poi.sl.usermodel.Slide;
|
||||
import org.apache.poi.sl.usermodel.SlideShow;
|
||||
import org.apache.poi.sl.usermodel.TextParagraph;
|
||||
import org.apache.poi.sl.usermodel.TextShape;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
public class TestHeadersFooters {
|
||||
@Test
|
||||
public void bug58144() throws IOException {
|
||||
SlideShow<?,?> ppt1 = openSampleSlideshow("bug58144-headers-footers-2003.ppt");
|
||||
HSLFSlide sl1 = (HSLFSlide)ppt1.getSlides().get(0);
|
||||
HeadersFooters hfs1 = sl1.getHeadersFooters();
|
||||
assertNull(hfs1.getHeaderText());
|
||||
assertEquals("Confidential", hfs1.getFooterText());
|
||||
List<List<HSLFTextParagraph>> llp1 = sl1.getTextParagraphs();
|
||||
assertEquals("Test", HSLFTextParagraph.getText(llp1.get(0)));
|
||||
assertFalse(llp1.get(0).get(0).isHeaderOrFooter());
|
||||
ppt1.close();
|
||||
private static boolean xslfOnly = false;
|
||||
|
||||
String ppt2007s[] = {
|
||||
"bug58144-headers-footers-2007.ppt", "bug58144-headers-footers-2007.pptx"
|
||||
};
|
||||
|
||||
for (String pptName : ppt2007s) {
|
||||
SlideShow<?,?> ppt2 = openSampleSlideshow(pptName);
|
||||
Slide<?,?> sl2 = ppt2.getSlides().get(0);
|
||||
|
||||
if (ppt2 instanceof HSLFSlideShow) {
|
||||
HeadersFooters hfs2 = ((HSLFSlide)sl2).getHeadersFooters();
|
||||
assertNull(hfs2.getHeaderText());
|
||||
assertEquals("Slide footer", hfs2.getFooterText());
|
||||
}
|
||||
|
||||
List<? extends Shape<?,?>> shapes = sl2.getShapes();
|
||||
TextShape<?,?> ts0 = (TextShape<?,?>)shapes.get(0);
|
||||
assertEquals("Test file", ts0.getText());
|
||||
TextShape<?,?> ts1 = (TextShape<?,?>)shapes.get(1);
|
||||
assertEquals("Has some text in the headers and footers", ts1.getText());
|
||||
TextShape<?,?> ts2 = (TextShape<?,?>)shapes.get(2);
|
||||
assertEquals("Slide footer", ts2.getText());
|
||||
List<? extends TextParagraph<?,?,?>> ltp2 = ts2.getTextParagraphs();
|
||||
assertTrue(ltp2.get(0).isHeaderOrFooter());
|
||||
ppt2.close();
|
||||
@BeforeClass
|
||||
public static void checkHslf() {
|
||||
try {
|
||||
Class.forName("org.apache.poi.hslf.usermodel.HSLFSlideShow");
|
||||
} catch (Exception e) {
|
||||
xslfOnly = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void bug58144a() throws IOException {
|
||||
assumeFalse(xslfOnly);
|
||||
SlideShow<?,?> ppt = openSampleSlideshow("bug58144-headers-footers-2003.ppt");
|
||||
HSLFSlide sl = (HSLFSlide)ppt.getSlides().get(0);
|
||||
HeadersFooters hfs = sl.getHeadersFooters();
|
||||
assertNull(hfs.getHeaderText());
|
||||
assertEquals("Confidential", hfs.getFooterText());
|
||||
List<List<HSLFTextParagraph>> llp = sl.getTextParagraphs();
|
||||
assertEquals("Test", HSLFTextParagraph.getText(llp.get(0)));
|
||||
assertFalse(llp.get(0).get(0).isHeaderOrFooter());
|
||||
ppt.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void bug58144b() throws IOException {
|
||||
assumeFalse(xslfOnly);
|
||||
SlideShow<?,?> ppt = openSampleSlideshow("bug58144-headers-footers-2007.ppt");
|
||||
Slide<?,?> sl = ppt.getSlides().get(0);
|
||||
HeadersFooters hfs2 = ((HSLFSlide)sl).getHeadersFooters();
|
||||
assertNull(hfs2.getHeaderText());
|
||||
assertEquals("Slide footer", hfs2.getFooterText());
|
||||
|
||||
testSlideShow(ppt);
|
||||
ppt.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void bug58144c() throws IOException {
|
||||
SlideShow<?,?> ppt = openSampleSlideshow("bug58144-headers-footers-2007.pptx");
|
||||
testSlideShow(ppt);
|
||||
ppt.close();
|
||||
}
|
||||
|
||||
private void testSlideShow(SlideShow<?,?> ppt) {
|
||||
Slide<?,?> sl = ppt.getSlides().get(0);
|
||||
|
||||
List<? extends Shape<?,?>> shapes = sl.getShapes();
|
||||
TextShape<?,?> ts0 = (TextShape<?,?>)shapes.get(0);
|
||||
assertEquals("Test file", ts0.getText());
|
||||
TextShape<?,?> ts1 = (TextShape<?,?>)shapes.get(1);
|
||||
assertEquals("Has some text in the headers and footers", ts1.getText());
|
||||
TextShape<?,?> ts2 = (TextShape<?,?>)shapes.get(2);
|
||||
assertEquals("Slide footer", ts2.getText());
|
||||
List<? extends TextParagraph<?,?,?>> ltp = ts2.getTextParagraphs();
|
||||
assertTrue(ltp.get(0).isHeaderOrFooter());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
package org.apache.poi.sl;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assume.assumeFalse;
|
||||
|
||||
import java.awt.geom.Rectangle2D;
|
||||
import java.io.ByteArrayInputStream;
|
||||
|
@ -35,10 +36,22 @@ import org.apache.poi.sl.usermodel.TableCell;
|
|||
import org.apache.poi.sl.usermodel.TableShape;
|
||||
import org.apache.poi.sl.usermodel.TextShape.TextDirection;
|
||||
import org.apache.poi.xslf.usermodel.XMLSlideShow;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
public class TestTable {
|
||||
private static POIDataSamples _slTests = POIDataSamples.getSlideShowInstance();
|
||||
private static boolean xslfOnly = false;
|
||||
|
||||
@BeforeClass
|
||||
public static void checkHslf() {
|
||||
try {
|
||||
Class.forName("org.apache.poi.hslf.usermodel.HSLFSlideShow");
|
||||
} catch (Exception e) {
|
||||
xslfOnly = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/** a generic way to open a sample slideshow document **/
|
||||
public static SlideShow<?,?> openSampleSlideshow(String sampleName) throws IOException {
|
||||
|
@ -54,6 +67,8 @@ public class TestTable {
|
|||
|
||||
@Test
|
||||
public void testColWidthRowHeight() throws IOException {
|
||||
assumeFalse(xslfOnly);
|
||||
|
||||
// Test of table dimensions of same slideshow saved as ppt/x
|
||||
// to check if both return similar (points) value
|
||||
SlideShow<?,?> ppt = openSampleSlideshow("table_test.ppt");
|
||||
|
@ -95,7 +110,21 @@ public class TestTable {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testTextDirection() throws IOException {
|
||||
public void testTextDirectionHSLF() throws IOException {
|
||||
assumeFalse(xslfOnly);
|
||||
SlideShow<?,?> ppt1 = new HSLFSlideShow();
|
||||
testTextDirection(ppt1);
|
||||
ppt1.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTextDirectionXSLF() throws IOException {
|
||||
SlideShow<?,?> ppt1 = new XMLSlideShow();
|
||||
testTextDirection(ppt1);
|
||||
ppt1.close();
|
||||
}
|
||||
|
||||
private void testTextDirection(SlideShow<?,?> ppt1) throws IOException {
|
||||
|
||||
TextDirection tds[] = {
|
||||
TextDirection.HORIZONTAL,
|
||||
|
@ -104,34 +133,31 @@ public class TestTable {
|
|||
// TextDirection.STACKED is not supported on HSLF
|
||||
};
|
||||
|
||||
for (int i=0; i<2; i++) {
|
||||
SlideShow<?,?> ppt1 = (i == 0) ? new HSLFSlideShow() : new XMLSlideShow();
|
||||
TableShape<?,?> tbl1 = ppt1.createSlide().createTable(1, 3);
|
||||
tbl1.setAnchor(new Rectangle2D.Double(50, 50, 200, 200));
|
||||
|
||||
int col = 0;
|
||||
for (TextDirection td : tds) {
|
||||
TableCell<?,?> c = tbl1.getCell(0, col++);
|
||||
if (c != null) {
|
||||
c.setTextDirection(td);
|
||||
c.setText("bla");
|
||||
}
|
||||
TableShape<?,?> tbl1 = ppt1.createSlide().createTable(1, 3);
|
||||
tbl1.setAnchor(new Rectangle2D.Double(50, 50, 200, 200));
|
||||
|
||||
int col = 0;
|
||||
for (TextDirection td : tds) {
|
||||
TableCell<?,?> c = tbl1.getCell(0, col++);
|
||||
if (c != null) {
|
||||
c.setTextDirection(td);
|
||||
c.setText("bla");
|
||||
}
|
||||
|
||||
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||
ppt1.write(bos);
|
||||
ppt1.close();
|
||||
|
||||
InputStream is = new ByteArrayInputStream(bos.toByteArray());
|
||||
SlideShow<?,?> ppt2 = SlideShowFactory.create(is);
|
||||
TableShape<?,?> tbl2 = (TableShape<?,?>)ppt2.getSlides().get(0).getShapes().get(0);
|
||||
|
||||
col = 0;
|
||||
for (TextDirection td : tds) {
|
||||
TableCell<?,?> c = tbl2.getCell(0, col++);
|
||||
assertEquals(td, c.getTextDirection());
|
||||
}
|
||||
ppt2.close();
|
||||
}
|
||||
|
||||
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||
ppt1.write(bos);
|
||||
ppt1.close();
|
||||
|
||||
InputStream is = new ByteArrayInputStream(bos.toByteArray());
|
||||
SlideShow<?,?> ppt2 = SlideShowFactory.create(is);
|
||||
TableShape<?,?> tbl2 = (TableShape<?,?>)ppt2.getSlides().get(0).getShapes().get(0);
|
||||
|
||||
col = 0;
|
||||
for (TextDirection td : tds) {
|
||||
TableCell<?,?> c = tbl2.getCell(0, col++);
|
||||
assertEquals(td, c.getTextDirection());
|
||||
}
|
||||
ppt2.close();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ package org.apache.poi.sl.draw;
|
|||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assume.assumeFalse;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.geom.Rectangle2D;
|
||||
|
@ -35,10 +36,22 @@ import org.apache.poi.sl.usermodel.Slide;
|
|||
import org.apache.poi.sl.usermodel.SlideShow;
|
||||
import org.apache.poi.sl.usermodel.SlideShowFactory;
|
||||
import org.apache.poi.util.Units;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
public class TestDrawPictureShape {
|
||||
final static POIDataSamples ssSamples = POIDataSamples.getSlideShowInstance();
|
||||
|
||||
private static boolean xslfOnly = false;
|
||||
|
||||
@BeforeClass
|
||||
public static void checkHslf() {
|
||||
try {
|
||||
Class.forName("org.apache.poi.hslf.usermodel.HSLFSlideShow");
|
||||
} catch (Exception e) {
|
||||
xslfOnly = true;
|
||||
}
|
||||
}
|
||||
|
||||
/** a generic way to open a sample slideshow document **/
|
||||
public static SlideShow<?,?> openSampleDocument(String sampleName) throws IOException {
|
||||
|
@ -53,41 +66,49 @@ public class TestDrawPictureShape {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testResize() throws Exception {
|
||||
String files[] = { "pictures.ppt", "shapes.pptx" };
|
||||
for (String file : files) {
|
||||
SlideShow<?,?> ss = openSampleDocument(file);
|
||||
|
||||
Slide<?,?> slide = ss.getSlides().get(0);
|
||||
PictureShape<?,?> picShape = null;
|
||||
for (Shape<?,?> shape : slide.getShapes()) {
|
||||
if (shape instanceof PictureShape) {
|
||||
picShape = (PictureShape<?,?>)shape;
|
||||
break;
|
||||
}
|
||||
public void testResizeHSLF() throws IOException {
|
||||
assumeFalse(xslfOnly);
|
||||
testResize("pictures.ppt");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResizeXSLF() throws IOException {
|
||||
testResize("shapes.pptx");
|
||||
}
|
||||
|
||||
|
||||
public void testResize(String file) throws IOException {
|
||||
SlideShow<?,?> ss = openSampleDocument(file);
|
||||
|
||||
Slide<?,?> slide = ss.getSlides().get(0);
|
||||
PictureShape<?,?> picShape = null;
|
||||
for (Shape<?,?> shape : slide.getShapes()) {
|
||||
if (shape instanceof PictureShape) {
|
||||
picShape = (PictureShape<?,?>)shape;
|
||||
break;
|
||||
}
|
||||
assertNotNull(picShape);
|
||||
PictureData pd = picShape.getPictureData();
|
||||
Dimension dimPd = pd.getImageDimension();
|
||||
new DrawPictureShape(picShape).resize();
|
||||
Dimension dimShape = new Dimension(
|
||||
(int)picShape.getAnchor().getWidth(),
|
||||
(int)picShape.getAnchor().getHeight()
|
||||
);
|
||||
assertEquals(dimPd, dimShape);
|
||||
|
||||
double newWidth = (dimPd.getWidth()*(100d/dimPd.getHeight()));
|
||||
// ... -1 is a rounding error
|
||||
Rectangle2D expRect = new Rectangle2D.Double(rbf(50+300-newWidth, picShape), 50, rbf(newWidth, picShape), 100);
|
||||
Rectangle2D target = new Rectangle2D.Double(50,50,300,100);
|
||||
new DrawPictureShape(picShape).resize(target, RectAlign.BOTTOM_RIGHT);
|
||||
Rectangle2D actRect = picShape.getAnchor();
|
||||
assertEquals(expRect.getX(), actRect.getX(), .0001);
|
||||
assertEquals(expRect.getY(), actRect.getY(), .0001);
|
||||
assertEquals(expRect.getWidth(), actRect.getWidth(), .0001);
|
||||
assertEquals(expRect.getHeight(), actRect.getHeight(), .0001);
|
||||
ss.close();
|
||||
}
|
||||
assertNotNull(picShape);
|
||||
PictureData pd = picShape.getPictureData();
|
||||
Dimension dimPd = pd.getImageDimension();
|
||||
new DrawPictureShape(picShape).resize();
|
||||
Dimension dimShape = new Dimension(
|
||||
(int)picShape.getAnchor().getWidth(),
|
||||
(int)picShape.getAnchor().getHeight()
|
||||
);
|
||||
assertEquals(dimPd, dimShape);
|
||||
|
||||
double newWidth = (dimPd.getWidth()*(100d/dimPd.getHeight()));
|
||||
// ... -1 is a rounding error
|
||||
Rectangle2D expRect = new Rectangle2D.Double(rbf(50+300-newWidth, picShape), 50, rbf(newWidth, picShape), 100);
|
||||
Rectangle2D target = new Rectangle2D.Double(50,50,300,100);
|
||||
new DrawPictureShape(picShape).resize(target, RectAlign.BOTTOM_RIGHT);
|
||||
Rectangle2D actRect = picShape.getAnchor();
|
||||
assertEquals(expRect.getX(), actRect.getX(), .0001);
|
||||
assertEquals(expRect.getY(), actRect.getY(), .0001);
|
||||
assertEquals(expRect.getWidth(), actRect.getWidth(), .0001);
|
||||
assertEquals(expRect.getHeight(), actRect.getHeight(), .0001);
|
||||
ss.close();
|
||||
}
|
||||
|
||||
// round back and forth - points -> master -> points
|
||||
|
|
|
@ -19,50 +19,84 @@
|
|||
|
||||
package org.apache.poi.xslf.usermodel;
|
||||
|
||||
import static org.junit.Assume.assumeFalse;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileFilter;
|
||||
import java.util.Collection;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.apache.poi.POIDataSamples;
|
||||
import org.apache.poi.xslf.util.PPTX2PNG;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Parameterized;
|
||||
import org.junit.runners.Parameterized.Parameter;
|
||||
import org.junit.runners.Parameterized.Parameters;
|
||||
|
||||
/**
|
||||
* Date: 10/26/11
|
||||
*
|
||||
* @author Yegor Kozlov
|
||||
* Test class for testing PPTX2PNG utility which renderes .ppt and .pptx slideshows
|
||||
*/
|
||||
@RunWith(Parameterized.class)
|
||||
public class TestPPTX2PNG {
|
||||
private static boolean xslfOnly = false;
|
||||
private static final POIDataSamples samples = POIDataSamples.getSlideShowInstance();
|
||||
private static final File basedir = null;
|
||||
private static final String files =
|
||||
"53446.ppt, alterman_security.ppt, alterman_security.pptx, KEY02.pptx, themes.pptx, backgrounds.pptx, layouts.pptx, sample.pptx, shapes.pptx";
|
||||
|
||||
|
||||
|
||||
@BeforeClass
|
||||
public static void checkHslf() {
|
||||
try {
|
||||
Class.forName("org.apache.poi.hslf.usermodel.HSLFSlideShow");
|
||||
} catch (Exception e) {
|
||||
xslfOnly = true;
|
||||
}
|
||||
}
|
||||
|
||||
// use filename instead of File object to omit full pathname in test name
|
||||
@Parameter(value = 0)
|
||||
public String pptFile;
|
||||
|
||||
@Parameters(name="{0}")
|
||||
public static Collection<String> data() {
|
||||
final Set<String> data = new TreeSet<String>();
|
||||
for (String f : files.split(", ?")) {
|
||||
if (basedir == null) {
|
||||
data.add(f);
|
||||
} else {
|
||||
final Pattern p = Pattern.compile(f);
|
||||
basedir.listFiles(new FileFilter(){
|
||||
public boolean accept(File pathname) {
|
||||
String name = pathname.getName();
|
||||
if (p.matcher(name).matches()) {
|
||||
data.add(name);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void render() throws Exception {
|
||||
POIDataSamples samples = POIDataSamples.getSlideShowInstance();
|
||||
|
||||
// File testFilesX[] = new File("tmp_ppt").listFiles(new FileFilter() {
|
||||
// public boolean accept(File pathname) {
|
||||
// return pathname.getName().toLowerCase().contains("ppt");
|
||||
// }
|
||||
// });
|
||||
// String testFiles[] = new String[testFilesX.length];
|
||||
// for (int i=0; i<testFilesX.length; i++) {
|
||||
// testFiles[i] = testFilesX[i].getPath();
|
||||
// }
|
||||
assumeFalse("ignore HSLF / .ppt files in no-scratchpad run", xslfOnly && pptFile.toLowerCase().endsWith("ppt"));
|
||||
|
||||
|
||||
String[] testFiles = {"53446.ppt", "alterman_security.ppt","alterman_security.pptx","KEY02.pptx","themes.pptx","backgrounds.pptx","layouts.pptx", "sample.pptx", "shapes.pptx",};
|
||||
String[] args = {
|
||||
"-format", "null", // png,gif,jpg or null for test
|
||||
"-slide", "-1", // -1 for all
|
||||
"-outdir", new File("build/tmp/").getCanonicalPath(),
|
||||
"-quiet",
|
||||
"dummyfile"
|
||||
(basedir == null ? samples.getFile(pptFile) : new File(basedir, pptFile)).getAbsolutePath()
|
||||
};
|
||||
for(String sampleFile : testFiles){
|
||||
args[args.length-1] = samples.getFile(sampleFile).getCanonicalPath();
|
||||
// args[args.length-1] = new File(sampleFile).getCanonicalPath();
|
||||
try {
|
||||
PPTX2PNG.main(args);
|
||||
} catch (IllegalStateException e) {
|
||||
throw new IllegalStateException("While reading file " + sampleFile, e);
|
||||
}
|
||||
}
|
||||
PPTX2PNG.main(args);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue