使用ApachePOI5.0.0从pptx文件获取简单文本框的线宽的正确方法是什么?我用maven apache poi、poi ooxml和poi scratchpad创建了一个小项目。
当我创建一个名为 test.pptx
有三个文本框
无边框(宽度为0.0)
默认边框(宽度为0.75)
宽度为2.0的边框
然后输出以下代码
FileInputStream fis = new FileInputStream("test.pptx");
XMLSlideShow ppt = new XMLSlideShow(fis);
fis.close();
for (XSLFSlide slide : ppt.getSlides()) {
for (XSLFShape shape : slide.getShapes()) {
if (shape instanceof XSLFTextBox) {
XSLFTextBox textBox = (XSLFTextBox) shape;
String text = textBox.getText();
System.out.println(text);
double borderWidth = textBox.getLineWidth();
System.out.println("line: "+borderWidth+", "+textBox.getLineColor());
}
}
}
无边框: line: 0.0, null
违约: line: 0.0, java.awt.Color[r=91,g=155,b=213]
边框2.0: line: 2.0, java.awt.Color[r=91,g=155,b=213]
在文件中说宽度 0.0
没有边界。但是,当两者都返回时,如何区分无边框和默认边框呢 0.0
. 从颜色来看,此值不应为空。
1条答案
按热度按时间ut6juiuv1#
如果
PowerPoint
形状使用默认线宽设置线条,则不设置宽度。只有线条本身设置了颜色设置。在形状中XML
这看起来像:但是一条线也可能有渐变色,那么这个看起来像:
然后不设置显式线条颜色
XSLFSimpleShape.getLineColor
会回来的null
.因此,检查是否设置了线条颜色并不总是得到是否有线条。
正确的方法是检查形状属性中是否设置了线。但在高层次上还没有这样的方法
apache poi
班级。所以只有使用底层的低层org.openxmlformats.schemas.presentationml.x2006.main.*
班级。检查形状是否具有线集的方法示例: