【问题标题】:Apache POI convert DOCX to PDF with EMF picture format.Apache POI 将 DOCX 转换为具有 EMF 图片格式的 PDF。
【发布时间】:2016-03-27 08:08:01
【问题描述】:

我想将包含 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 访问图片 严重:字节数组不是可识别的图像格式。

【问题讨论】:

  • 您的描述似乎不准确,但您可能会发现此链接有帮助 -> pdfdownload19.blogspot.in/2015/06/…
  • 我在最新的 POI (3.14) 中添加了 WMF 支持,但目前仅用于幻灯片。对于 EMF,您可以尝试使用 FreeHep。

标签: java apache-poi docx


【解决方案1】:

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

对于 WMF,您可能能够成功使用 Batik。见here。对于 EMF,目前没有(免费)Java 实现 AFAIK。你能做的就是

  1. 使用this spec自己实现,
  2. 在 GDI 之上编写一些东西(取决于平台)或
  3. (简单的解决方案)将提取的 EMF 反馈回 Word(或 Office 系列的任何其他成员,例如 PowerPoint/Visio)并使用 VBA 将它们批处理成 PNG。

【讨论】:

    猜你喜欢
    • 2020-12-13
    • 2017-03-17
    • 2019-12-20
    • 2019-05-07
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 2016-05-23
    相关资源
    最近更新 更多