如何使用java api将doc转换为pdf.其中document包含各种格式,如ms中的表格.使用iText转换为pdf时.实际文件看起来与转换后的pdf不同.请提供任何api而不是安装转换的exe.必须是开源的
Mic*_*mlk 46
这是一项相当艰巨的任务,如果你想要完美的结果(不可能不使用Word)就更难了,因为在纯Java中为你完成这一切的API的数量是开源的我认为是零(更新:我错了) ,见下文).
您的基本选项如下:
更新 - 2016-02-11 这是我关于此主题的博客文章的简要副本,其中概述了支持Java中的Word-to-PDF的现有产品.
将Microsoft Office(Word,Excel)文档转换为Java中的PDF
我所知道的三种产品可以呈现Office文档:
yeokm1/docs-to-pdf-converter 不规则维护,纯Java,开源 将许多库捆绑在一起执行转换.
xdocreport 积极开发,纯Java,开源 它是Java API,用于将使用MS Office(docx)或OpenOffice(odt)创建的XML文档,LibreOffice(odt)与Java模型合并生成报告,并在需要其他格式时将其转换( PDF,XHTML ......).
Snowbound Imaging SDK 封闭源代码,Pure Java Snowbound似乎是100%Java解决方案,成本超过2,500美元.它包含描述如何在评估下载中转换文档的示例.
OpenOffice API 开源,非纯Java - 需要安装Open Office OpenOffice是一个支持Java API的本机Office套件.这支持阅读Office文档和编写PDF文档.SDK包含文档转换中的示例(examples/java/DocumentHandling/DocumentConverter.java).要编写PDF,您需要传递"writer_pdf_Export"编写器而不是"MS Word 97"编写器.或者您可以使用包装器API JODConverter.
JDocToPdf - 死于2016-02-11 使用Apache POI读取Word文档和iText编写PDF.完全免费,100%Java但有一些限制.
Docx4j 是开源的,是将 Docx 转换为 pdf 的最佳 API,无需任何对齐或字体问题。
Maven 依赖项:
<dependency>
<groupId>org.docx4j</groupId>
<artifactId>docx4j-JAXB-Internal</artifactId>
<version>8.0.0</version>
</dependency>
<dependency>
<groupId>org.docx4j</groupId>
<artifactId>docx4j-JAXB-ReferenceImpl</artifactId>
<version>8.0.0</version>
</dependency>
<dependency>
<groupId>org.docx4j</groupId>
<artifactId>docx4j-JAXB-MOXy</artifactId>
<version>8.0.0</version>
</dependency>
<dependency>
<groupId>org.docx4j</groupId>
<artifactId>docx4j-export-fo</artifactId>
<version>8.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
代码:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import org.docx4j.Docx4J;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
public class DocToPDF {
public static void main(String[] args) {
try {
InputStream templateInputStream = new FileInputStream("D:\\\\Workspace\\\\New\\\\Sample.docx");
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(templateInputStream);
MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
String outputfilepath = "D:\\\\Workspace\\\\New\\\\Sample.pdf";
FileOutputStream os = new FileOutputStream(outputfilepath);
Docx4J.toPDF(wordMLPackage,os);
os.flush();
os.close();
} catch (Throwable e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 8
您可以使用JODConverter来实现此目的.它可用于在不同的办公室格式之间转换文档.如:
有关它的更多详细信息,请访问:http: //www.artofsolving.com/opensource/jodconverter
已经是 2019 年了,我不敢相信仍然没有最简单、最方便的方法将 Java 世界中最流行的 Micro$oft Word 文档转换为 Adobe PDF 格式。
我几乎尝试了上面答案提到的所有方法,我发现最好的也是唯一能满足我的要求的方法是使用 OpenOffice 或 LibreOffice。其实我不太清楚它们之间的区别,似乎它们都提供soffice命令行。
我的要求是:
首先想到的是doc-to-pdf-converter,但它缺乏维护,上次更新发生在 4 年前,我不会使用无人维护的解决方案。Xdocreport似乎是一个有前途的选择,但它只能转换docx,但不能转换doc二进制文件,这对我来说是强制性的。使用Java调用OpenOffice API看起来不错,但是对于如此简单的需求来说太复杂了。
最后我找到了最好的解决方案:使用 OpenOffice 命令行来完成工作:
Runtime.getRuntime().exec("soffice --convert-to pdf -outdir . /path/some.doc");
Run Code Online (Sandbox Code Playgroud)
我始终相信最短的代码就是最好的代码(当然应该是可以理解的),就是这样。
查看github上的docs-to-pdf-converter.它是一个轻量级的解决方案,专门用于将文档转换为pdf.
为什么?
我想要一个简单的程序,可以将Microsoft Office文档转换为PDF,但不需要像LibreOffice或昂贵的专有解决方案那样的依赖项.看到转换每种格式的代码和库如何分散在Web上,我决定将所有这些解决方案组合到一个单独的程序中.在此过程中,我也决定添加ODT支持,因为我也遇到了代码.
| 归档时间: |
|
| 查看次数: |
88325 次 |
| 最近记录: |