从XWPF文档获取图像大小(Apache POI)

Ave*_*yan 4 apache parsing ms-word docx apache-poi

有没有经验用Apache poi解析docx文件?从CharacterRun使用中提取图像

paragraph.getRun().getEmbeddedPictures();
Run Code Online (Sandbox Code Playgroud)

我无法找到获得图片缩放或/和宽度/高数据的方法.

那有功能吗?

谢谢.

Ave*_*yan 8

弄清楚了!

我不确定这是否是官方方式,但是,这就是你如何做到的.

XWPFRun并没有特别为你提供任何信息,但是XWPFPicture有一个名为getCTPicture的方法,它将使用你最喜欢的XML解析器返回docx文件中的XML部分图片,你只需找到这个"/ xml-fragment/pic:spPr"/a:xfrm/a:ext"(xpath)在XML结构中,该标签将具有cx和cy属性,这些基本上是EMU英制公制单位中图像的显示宽度和高度.如果你谷歌,你可以找到EMUS_PER_INCH = 914400所以你可以将其转换为英寸(或稍后将英寸转换为像素,如果我没有错误应该是每英寸96像素)所以做一些计算,你可以找出新的宽度和图片的高度.

有点复杂,但它是它的本质.它有效.

希望对某人有所帮助.

  • 真是棒极了!非常感谢,Avetis,你救了我的一天!这非常有效:`picture.getCTPicture().getSpPr().getXfrm().getExt().getCx()`(对于Cy来说是一样的).然后我们甚至不需要使用像`Units.toEMU()`或`Units.toPoints`这样的东西,因为方法`run.addPicture()`采用EMU格式的宽度和高度(第4和第5个参数). (3认同)