900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java将word转化为pdf_java-如何将Word文档转换为PDF?

java将word转化为pdf_java-如何将Word文档转换为PDF?

时间:2023-01-20 07:33:02

相关推荐

java将word转化为pdf_java-如何将Word文档转换为PDF?

java-如何将Word文档转换为PDF?

如何将Word文档转换为PDF,其中文档包含各种内容,例如表格。 尝试使用iText时,原始文档看起来与转换后的PDF不同。 有没有我可以使用的开源API /库,而不是调用可执行文件?

magh asked -07-20T02:14:33Z

11个解决方案

46 votes

这是一项艰巨的任务,如果您想要完美的结果(在不使用Word的情况下是不可能的话),那么难度就更大了,因为仅使用纯Java即可为您完成所有操作并且都是开源的API数量为零,我相信(更新:我错了 , 见下文)。

基本选项如下:

使用JNI / C#Web服务/等脚本MS Office(仅100%完美结果的选择)

使用可用的API脚本Open Office(90%完美)

使用Apache POI和iText(非常大的工作,永远不会是完美的)。

更新--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-截至2月11日已死使用Apache POI读取Word文档,使用iText编写PDF。 完全免费,100%Java,但有一些限制。

Michael Lloyd Lee mlk answered -07-20T02:15:42Z

8 votes

您可以为此目的使用JODConverter。 它可用于在不同办公格式之间转换文档。 如:

Microsoft Office到OpenDocument,反之亦然

任何格式的PDF

并支持更多转换

它还可以将MS Office 文档转换为几乎所有格式的PDF。

可以在这里找到有关它的更多详细信息: [/opensource/jodconverter]

Nodexpert answered -07-20T02:16:23Z

5 votes

在github上查看docs-to-pdf-converter。 它是专为将文档转换为pdf而设计的轻量级解决方案。

为什么?

我想要一个可以转换Microsoft Office文档的简单程序 到PDF,但没有像LibreOffice这样的依赖项或昂贵的依赖项 专有解决方案。 视为代码和库如何转换 每个单独的格式都散布在网上,我决定 将所有这些解决方案组合到一个程序中。 一路上,我 由于我也遇到了代码,因此决定也增加对ODT的支持。

Sudarshan_SMD answered -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 -07-20T02:17:26Z

1 votes

我同意将OpenOffice列为具有Java API的word / pdf文档的高保真导入/导出工具的海报,它也适用于各种平台。 OpenOffice导入/导出过滤器功能强大,并且在转换为包括PDF在内的各种格式的过程中可以保留大多数格式。 与直接学习OpenOffice API相比,Docmosis和JODReports的增值使生活变得更轻松,由于UNO api的样式和与崩溃相关的错误,这可能具有挑战性。

Paul Jowett answered -07-20T02:17:48Z

1 votes

我认为JOD Converter是最容易实现的方法,请参考以下链接以获取更多信息。

[HTTP://没有特长比特数.blogspot.in//10/convert-documents-to-PDF-in-Java.HTML]

Selvakumar Ponnusamy answered -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 -07-20T02:18:54Z

0 votes

我尚未尝试将其用于MS Word,但使用Apache POI读取MS Excel文档取得了成功-[/]

Curtis answered -07-20T02:19:14Z

0 votes

查看脚本为您完成这项工作。

Thorbjørn Ravn Andersen answered -07-20T02:19:33Z

0 votes

unoconv,它是在UNIX中使用的python工具。当我使用Java调用UNIX中的shell时,它对我来说是完美的。 我的源代码:UnoconvTool.java。 据说JODConverter和unoconv都使用开放式办公室/自由办公室。

docx4j / docxreport,POI,PDFBox很好,但是它们在转换中缺少某些格式。

leef answered -07-20T02:19:59Z

0 votes

已经到了,我不敢相信将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 -07-20T02:20:50Z

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。