2015-12-21 156 views
1

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

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); 

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

Dec 21, 2015 10:26:56 AM org.apache.poi.xwpf.converter.pdf.internal.PdfMapper visitPicture SEVERE: The byte array is not a recognized imageformat.

+0

你的描述似乎并不准确,但你可能会发现此链接有用 - > http://pdfdownload19.blogspot.in/2015/06/how-to-add-clipart-images-to-pdf-in.html – Avis

+0

我已经在最新的POI(3.14)中添加了WMF支持,但是这仅仅用于幻灯片。对于EMF,您可以尝试使用FreeHep。 – kiwiwings

回答

0

可悲的是,POI不附带用于处理专门的支持WMF/EMF。但是,由于Windows GDI为呈现这些格式提供本机支持,因此Word始终将它们用作“预览图像”(尤其是嵌入式OLE)。

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

  1. 使用this spec
  2. 写点东西实现它自己的GDI或
  3. (简单的解决方案)的顶部(依赖于平台)喂提取电动势返回到Word中(或Office家族的任何其他成员,如PowerPoint/Visio),并使用VBA将它们批量处理为PNG。
相关问题