Apache POI将DOCX转换为EMF图片格式的PDF



我想将包含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:56org.apache.poi.xwpf.converter.pdf.internal.PdfMapper visitPicture严重:字节数组不是可识别的图像格式。

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

就WMF而言,您可能能够成功地使用蜡染。请参见此处。对于EMF,目前没有(免费的)Java实现AFAIK。你所能做的就是

  1. 使用这个规范自己实现它
  2. 在GDI或
  3. (简单解决方案)将提取的EMF反馈到Word(或Office系列的任何其他成员,如PowerPoint/Visio)中,并使用VBA将其批处理为PNG

相关内容

  • 没有找到相关文章

最新更新