将包含图表的docx转换为PDF

时间:2015-06-03 11:42:03

标签: java pdf charts docx docx4j

我有一个docx4j生成的文件,其中包含多个表格,标题,最后是一个excel生成的曲线图。

为了将此文件转换为PDF,我尝试了很多方法,但没有取得任何成功的结果。

  1. docx4j与xsl-fo不起作用,docx文件中包含的大部分内容尚未实现,并以红色文本显示为“未实现”。
  2. JODConverter也没有工作,我得到了一个PDF,其中一切都很好(只是很少的格式/样式问题)但图表没有显示。
  3. 最后,最接近的方法是使用Apache POI:生成的PDF与我的docx文件相同,但仍然没有显示图表。
  4. 我已经知道Aspose很容易解决这个问题,但我正在寻找一个开源的免费解决方案。
  5. 我在Apache POI中使用的代码如下:

    public static void convert(String inputPath, String outputPath)
            throws XWPFConverterException, IOException {
        PdfConverter converter = new PdfConverter();
        converter.convert(new XWPFDocument(new FileInputStream(new File(
                inputPath))), new FileOutputStream(new File(outputPath)),
                PdfOptions.create());
    }
    

    我不知道如何在PDF中获取图表,有人可以告诉我如何继续吗?

    提前致谢。

1 个答案:

答案 0 :(得分:3)

我不知道这对你有帮助,但你可以使用" jacob" (我不知道apache poi或docx4j是否可能) 使用此解决方案,您可以打开" Word"自己并将其导出为pdf。

需要在计算机上安装Word

下载页面:http://sourceforge.net/projects/jacob-project/

try {           
        if (System.getProperty("os.arch").contains("64")) {
            System.load(DLL_64BIT_PATH);
        } else {
            System.load(DLL_32BIT_PATH);
        }
    } catch (UnsatisfiedLinkError e) {
        //TODO          
    } catch (IOException e) {
        //TODO          
    }

 ActiveXComponent oleComponent = new ActiveXComponent("Word.Application");
 oleComponent.setProperty("Visible", false);
 Variant var = Dispatch.get(oleComponent, "Documents");
 Dispatch document = var.getDispatch();

 Dispatch activeDoc = Dispatch.call(document, "Open", fileName).toDispatch();

// https://msdn.microsoft.com/EN-US/library/office/ff845579.aspx
Dispatch.call(activeDoc, "ExportAsFixedFormat", new Object[] { "path to pdfFile.pdf", new Integer(17), false, 0 });
Object args[] = { new Integer(0) };//private static final int DO_NOT_SAVE_CHANGES = 0;
Dispatch.call(activeDoc, "Close", args); 
Dispatch.call(oleComponent, "Quit");