我想将包含EMF图片的DOCX文件转换为PDF文件。 Apache POI检测到EMF图片类型,但是在转换为PDF时使用com.lowagie.text.Image类。不幸的是,它不支持EMF格式。
您是否知道如何将EMF图片替换为完全受支持的JPG / GIF / BMP格式?
org.apache.poi.xwpf.converter.pdf版本:1.0.5

FileInputStream fis = new FileInputStream("file.docx");
XWPFDocument document = new XWPFDocument(OPCPackage.open(fis));
File outFile = new File("file.pdf");
OutputStream out = new FileOutputStream(outFile);
PdfOptions options = PdfOptions.create().fontEncoding("windows-1250");
PdfConverter.getInstance().convert(document, out, options);


上面的代码给出了一个错误:


  2015年12月21日,上午10:26:56
  org.apache.poi.xwpf.converter.pdf.internal.PdfMapper visitPicture
  严重:字节数组不是可识别的图像格式。

最佳答案

遗憾的是,POI没有附带专门的支持来处理WMF / EMF。但是,由于Windows GDI提供了呈现这些格式的本机支持,因此Word一直都将它们用作“预览图像”(尤其是嵌入式OLE)。

对于WMF,您可以成功使用蜡染。请参见here。对于EMF,当前没有(免费)Java实现AFAIK。您所能做的就是


使用this spec自己实现,
在GDI上写一些内容(取决于平台),或者
(一种简单的解决方案),将提取的EMF反馈回Word(或Office系列的任何其他成员,如PowerPoint / Visio),然后使用VBA将其批处理为PNG。

关于java - Apache POI将EMF图片格式的DOCX转换为PDF。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34392485/

10-10 08:33