admin管理员组文章数量:1638921
java-如何将Word文档转换为PDF?
如何将Word文档转换为PDF,其中文档包含各种内容,例如表格。 尝试使用iText时,原始文档看起来与转换后的PDF不同。 有没有我可以使用的开源API /库,而不是调用可执行文件?
magh asked 2020-07-20T02:14:33Z
11个解决方案
46 votes
这是一项艰巨的任务,如果您想要完美的结果(在不使用Word的情况下是不可能的话),那么难度就更大了,因为仅使用纯Java即可为您完成所有操作并且都是开源的API数量为零,我相信(更新:我错了 , 见下文)。
基本选项如下:
使用JNI / C#Web服务/等脚本MS Office(仅100%完美结果的选择)
使用可用的API脚本Open Office(90%完美)
使用Apache POI和iText(非常大的工作,永远不会是完美的)。
更新-2016-02-11这是我关于此主题的博客文章的精简副本,概述了支持Java中Word到PDF的现有产品。
将Microsoft Office(Word,Excel)文档转换为Java中的PDF
我知道的三种产品可以呈现Office文档:
yeokm1 / docs-to-pdf-converter维护不定期,纯Java,开源将许多库链接在一起以执行转换。
xdocreport积极开发,纯Java,开源它是Java API,用于将使用MS Office(docx)或OpenOffice(odt),LibreOffice(odt)创建的XML文档与Java模型进行合并,以生成报告并将报告转换为其他格式(PDF,XHTML ...)。
雪域成像SDK封闭源,纯JavaSnowbound似乎是100%的Java解决方案,价格超过2500美元。 它包含描述如何在评估下载中转换文档的样本。
OpenOffice API开源而非纯Java-需要安装Open OfficeOpenOffice是本机Office套件,支持Java API。 这支持阅读Office文档和编写PDF文档。 该SDK包含一个文档转换示例(examples / java / DocumentHandling / DocumentConverter.java)。 要编写PDF,您需要传递“ writer_pdf_Export”作家而不是“ MS Word 97”。或者,您可以使用包装器API JODConverter。
JDocToPdf-截至2016年2月11日已死使用Apache POI读取Word文档,使用iText编写PDF。 完全免费,100%Java,但有一些限制。
Michael Lloyd Lee mlk answered 2020-07-20T02:15:42Z
8 votes
您可以为此目的使用JODConverter。 它可用于在不同办公格式之间转换文档。 如:
Microsoft Office到OpenDocument,反之亦然
任何格式的PDF
并支持更多转换
它还可以将MS Office 2007文档转换为几乎所有格式的PDF。
可以在这里找到有关它的更多详细信息: [http://www.artofsolving/opensource/jodconverter]
Nodexpert answered 2020-07-20T02:16:23Z
5 votes
在github上查看docs-to-pdf-converter。 它是专为将文档转换为pdf而设计的轻量级解决方案。
为什么?
我想要一个可以转换Microsoft Office文档的简单程序 到PDF,但没有像LibreOffice这样的依赖项或昂贵的依赖项 专有解决方案。 视为代码和库如何转换 每个单独的格式都散布在网上,我决定 将所有这些解决方案组合到一个程序中。 一路上,我 由于我也遇到了代码,因此决定也增加对ODT的支持。
Sudarshan_SMD answered 2020-07-20T02:16:52Z
2 votes
您可以使用Cloudmersive本机Java库。 它每月最多可免费进行50,000次转换,并且根据我的经验,其保真度比其他类似iText或基于Apache POI的方法要高得多。 这些文档实际上与它们在Microsoft Word中的外观相同,这对我来说是关键。 顺便说一句,它也可以将XLSX,PPTX和旧式DOC,XLS和PPT转换为PDF。
代码如下所示,首先添加导入:
import com.cloudmersive.client.invoker.ApiClient;
import com.cloudmersive.client.invoker.ApiException;
import com.cloudmersive.client.invoker.Configuration;
import com.cloudmersive.client.invoker.auth.*;
import com.cloudmersive.client.ConvertDocumentApi;
然后转换一个文件:
ApiClient defaultClient = Configuration.getDefaultApiClient();
// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
ConvertDocumentApi apiInstance = new ConvertDocumentApi();
File inputFile = new File("/path/to/input.docx"); // File to perform the operation on.
try {
byte[] result = apiInstance.convertDocumentDocxToPdf(inputFile);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ConvertDocumentApi#convertDocumentDocxToPdf");
e.printStackTrace();
}
您可以从门户网站免费获得文档转换API密钥。
Johnny answered 2020-07-20T02:17:26Z
1 votes
我同意将OpenOffice列为具有Java API的word / pdf文档的高保真导入/导出工具的海报,它也适用于各种平台。 OpenOffice导入/导出过滤器功能强大,并且在转换为包括PDF在内的各种格式的过程中可以保留大多数格式。 与直接学习OpenOffice API相比,Docmosis和JODReports的增值使生活变得更轻松,由于UNO api的样式和与崩溃相关的错误,这可能具有挑战性。
Paul Jowett answered 2020-07-20T02:17:48Z
1 votes
我认为JOD Converter是最容易实现的方法,请参考以下链接以获取更多信息。
[HTTP://没有特长比特数.blogspot.in/2014/10/convert-documents-to-PDF-in-Java.HTML]
Selvakumar Ponnusamy answered 2020-07-20T02:18:12Z
1 votes
使用JACOB呼叫Office Word是100%完美的解决方案。 但是它仅在Windows平台上支持,因为需要安装Office Word。
下载JACOB存档(最新版本为1.19);
将jacob.jar添加到您的项目类路径中;
将jacob-1.19-x32.dll或jacob-1.19-x64.dll(取决于您的jdk版本)添加到... \ Java \ jdk1.x.x_xxx \ jre \ bin
使用JACOB API调用Office Word将doc / docx转换为pdf。
public void convertDocx2pdf(String docxFilePath) {
File docxFile = new File(docxFilePath);
String pdfFile = docxFilePath.substring(0, docxFilePath.lastIndexOf(".docx")) + ".pdf";
if (docxFile.exists()) {
if (!docxFile.isDirectory()) {
ActiveXComponent app = null;
long start = System.currentTimeMillis();
try {
ComThread.InitMTA(true);
app = new ActiveXComponent("Word.Application");
Dispatch documents = app.getProperty("Documents").toDispatch();
Dispatch document = Dispatch.call(documents, "Open", docxFilePath, false, true).toDispatch();
File target = new File(pdfFile);
if (target.exists()) {
target.delete();
}
Dispatch.call(document, "SaveAs", pdfFile, 17);
Dispatch.call(document, "Close", false);
long end = System.currentTimeMillis();
logger.info("============Convert Finished:" + (end - start) + "ms");
} catch (Exception e) {
logger.error(e.getLocalizedMessage(), e);
throw new RuntimeException("pdf convert failed.");
} finally {
if (app != null) {
app.invoke("Quit", new Variant[] {});
}
ComThread.Release();
}
}
}
}
Charles Wang answered 2020-07-20T02:18:54Z
0 votes
我尚未尝试将其用于MS Word,但使用Apache POI读取MS Excel文档取得了成功-[http://poi.apache/]
Curtis answered 2020-07-20T02:19:14Z
0 votes
查看脚本OpenOffice为您完成这项工作。
Thorbjørn Ravn Andersen answered 2020-07-20T02:19:33Z
0 votes
unoconv,它是在UNIX中使用的python工具。当我使用Java调用UNIX中的shell时,它对我来说是完美的。 我的源代码:UnoconvTool.java。 据说JODConverter和unoconv都使用开放式办公室/自由办公室。
docx4j / docxreport,POI,PDFBox很好,但是它们在转换中缺少某些格式。
leef answered 2020-07-20T02:19:59Z
0 votes
已经到2019年了,我不敢相信将Java世界中最流行的Micro $ oft Word文档转换为Adobe PDF格式仍然没有最简便的方法。
我几乎尝试了上面提到的答案的每种方法,并且发现可以满足我的要求的最好,唯一的方法是使用OpenOffice或LibreOffice。 其实我并不完全知道它们之间的区别,似乎它们都提供了doc-to-pdf-converter命令行。
我的要求是:
它必须在Linux(尤其是CentOS)上运行,而不是在Windows上运行,因此我们无法在其上安装Microsoft Office。
它必须支持中文字符,因此不能选择ISO-8859-1字符编码,它必须支持Unicode。
首先想到的是doc-to-pdf-converter,但是它缺乏维护,最后一次更新发生在4年前,我将不使用无人维护的解决方案。 Xdocreport似乎是一个有前途的选择,但它只能转换docx,而不能转换doc二进制文件,这对我来说是必需的。 使用Java调用OpenOffice API看起来不错,但是对于这样简单的要求来说太复杂了。
最后,我找到了最佳解决方案:使用OpenOffice命令行完成工作:
Runtime.getRuntime().exec("soffice --convert-to pdf -outdir . /path/some.doc");
我一直认为最短的代码就是最好的代码(当然这应该是可以理解的),就是这样。
Zhang Buzz answered 2020-07-20T02:20:50Z
版权声明:本文标题:java将word转化为pdf_java-如何将Word文档转换为PDF? 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1729281633a1194054.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论