2015-12-21 188 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。
相關問題