我尝试了这个简单的单元测试,但没有达到我的期望:
@Test
public void testReadPowerpoint() throws Exception {
PowerPointSystem pps=new PowerPointSystem();
pps.connect();
SimpleNode slideShowNode =
pps.moveTo("https://www.its.leeds.ac.uk/fileadmin/documents/alumni/Michele_Dix_Leeds_University_-_FINAL.PPTX");
List<SimpleNode> slides = slideShowNode.out("slides")
.collect(Collectors.toCollection(ArrayList::new));
debug=true;
if (debug)
slides.forEach(slide -> slide.printNameValues(System.out));
assertEquals(44, slides.size());
}
不起作用-我得到0张幻灯片而不是44张幻灯片。这是Bug还是存在解决方法?
最佳答案
我叫Wolfgang Fahl,我是SimpleGraph OpenSource Project的提交人之一。
我认为这是一个错误/缺失功能。基本问题是在基于文件/输入流的模块的情况下moveTo应该接受哪些参数。可以使用Apache POI模块从任何输入输入流中读取Powerpoint文件。 SimpleGraph需要一种一致的方式来处理输入的不同情况,我认为这是一个有效的讨论,应该在SimpleGraph讨论小组中进行。
为了解决您当前的问题,我修改了代码,以确保运行单元测试,并将您的单元测试添加到TestPowerPoint。
当前解决方法
以下是Commit to fix your issue的一部分
/**
* create a SlideShow
*
* @param simpleGraph
* @param nodeQuery
* @throws Exception
*/
public SlideShowNode(SimpleGraph simpleGraph, String pathOrUrl,
String... keys) {
super(simpleGraph, "slideshow", keys);
InputStream is = null;
try {
try {
URL url = new URL(pathOrUrl);
is = url.openStream();
} catch (MalformedURLException e1) {
this.pathOrUl = pathOrUrl;
pptFile = new File(pathOrUl);
if (pptFile.canRead())
is = new FileInputStream(pathOrUl);
}
if (is != null)
slideshow = new XMLSlideShow(is);
else
slideshow = new XMLSlideShow();
} catch (IOException e) {
throw new RuntimeException(e);
}
super.setVertexFromMap();
}