JAVA针对word转pdf(多种方式) 您所在的位置:网站首页 word2003导出pdf JAVA针对word转pdf(多种方式)

JAVA针对word转pdf(多种方式)

#JAVA针对word转pdf(多种方式)| 来源: 网络整理| 查看: 265

针对java转pdf有很多中方法,而且实现方式也各种各样。有的实现起来很麻烦,也不知道是不是因为其实现过程中的方法是通用方法,然后看起来有点费劲。而且有些也有各自的局限(比如添加字体到系统或者只针对docx格式并不适用doc格式又或者要系统中要装office)。下面我主要介绍几种我尝试过的方法,都是简单的小白级操作。本文只针对word转pdf,即单纯预览功能,并不适用word转html再转pdf,个人感觉功能点已经具有针对性,就没有必要再弄那么复杂,如果有其他的需求则可以考虑这种两次转换的方式。

第一种 aspose.word进行转换(doc和docx都可以)

首先下好aspose.word(下载地址:提取码: i51v :不保证长期有效)aspose-words-15.8.0-jdk16.jar,网上搜下应该能找到,而且看了下,貌似相似的版本也是可以用的,直接搜一个maven仓库也能找到jar包下载(参考文章)。

1.如果是普通的工程直接添加到项目中目录下,右键Build Path->Add to Build Path。添加到项目中。

2.如果是maven工程,如果自己找到的maven版本能用就最好,不能用的话就用我下载地址提供的也可以,直接再CMD下运行下面的命令添加jar包到maven的本地仓库。(记得替换为自己的版本)

mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -DartifactId=上面的artifactId -Dversion=上面的version -Dpackaging=jar

添加到本地仓库后pom里面添加

com.aspose aspose-words 15.8.0

至此,jar包已经准备好,剩下的就是运行代码。

简化版本:

try { String s = "Aspose.Total for JavaAspose.Words for JavaEnterprise20991231209912318bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU="; ByteArrayInputStream is = new ByteArrayInputStream(s.getBytes()); License license = new License(); license.setLicense(is); com.aspose.words.Document document = new com.aspose.words.Document("替换为你的输入word文档绝对位置.doc"); document.save(new FileOutputStream(new File("替换为你的输出pdf文档绝对位置.pdf"); } catch (Exception e) { e.printStackTrace(); }

以上代码直接添加到main函数就可以运行的,也可以添加到具体的函数或者单独抽取成一个方法。缺少的包都引入aspose.words的。以上代码相当于是加载了license,字符串s中的可以单独复制出来转化成一个license.xml,然后用代码加载,此处就不作详细描述(有简单的为毛要用复杂的)。

至此第一种方法已经算是说完了,最后评价一下优缺点。优点:doc和docx文档都能转化为pdf,并且使用方法简单且有效。缺点:不知道license是否是有有效期,所以最好还是用稍微低版本的,至少我测试的这个版本是没有问题的。

第二种 POI操作进行word转pdf(仅适用docx格式)

第一步操作还是引入包,至于具体的包就不给下载链接了,我给了maven依赖,直接去maven仓库里下载就可以了

org.apache.poi poi-scratchpad 3.11 org.apache.poi ooxml-schemas 1.1 com.itextpdf itextpdf 5.4.3 fr.opensagres.xdocreport org.apache.poi.xwpf.converter.pdf 1.0.6

执行转化过程的代码(有环境的话直接放函数中运行就可以,或者单独抽成一个函数也可以)

XWPFDocument doc = new XWPFDocument(new FileInputStream("替换为你的输出docx路径.docx");// docx PdfOptions options = PdfOptions.create(); // 中文字体处理 options.fontProvider(new IFontProvider() { @Override public Font getFont(String familyName, String encoding, float size, int style, java.awt.Color color) { try { BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); Font fontChinese = new Font(bfChinese, 12, style, color); if (familyName != null) fontChinese.setFamily(familyName); return fontChinese; } catch (Exception e) { e.printStackTrace(); return null; } } }); PdfConverter.getInstance().convert(doc, new FileOutputStream("替换为你的输出pdf路径.pdf"), options);// pdf

此时写完运行代码还不行,可能会报空指针错误什么的。原因是我们还没有加字体,我的解决办法是去maven仓库下载itext-asian,解压jar包中字体资源文件添加到resources下面(即将整个com包里面的字体都添加到resources下)。可能还有其他的方法,但是我用的这个可行,并且我再maven的pom文件中添加了itext-asian去运行,却没有用,但是把资源文件解压出来放到对应文件夹下倒是可以用。

此时运行代码应该就可以成功了,最后评价一下这种方式的优缺点。优点:不依赖付费第三方,安全又保障。缺点:只能转换docx,不能转换doc。

第三种 使用spire.doc(有水印,doc和docx都可以)

相关网址

打开上面的网址,安装和使用都说的挺明白的,但是我却没有从远程仓库下到自己本地来,原因我也搜了好久,但是没有解决。最后还是从他们的仓库直接下载的。他们官网给出的远程仓库地址可以直接用浏览器打开。

http://repo.e-iceblue.com/nexus/content/groups/public/

打开后可以直接查看相关jar包。官网提供的免费版本spire.doc.free我用了下,只能转换三页,好像网上说免费版的操作只能三页,而且第四页就是他们自己的宣传。我们如果通过maven下载不了对应的jar可以浏览器下载。而且更加直观的看到对应的版本。

下完之后可以通过上面第一种方法说到的CMD命令把jar包导到我们本地的仓库就可以使用了。不要使用免费版本,虽然都有水印,不是免费版的能操作全部pdf页面。然后按照他们API操作就可以了(链接)

Document doc = new Document(); doc.loadFromFile("你的输入doc、docx文档地址.doc"); doc.saveToFile("你的输出pdf地址.pdf", FileFormat.PDF); doc.close();

这种方法的优缺点也很明显了。优点:操作简单,代码简单,简直不能再简单了。缺点,有水印,但是感觉个人用起来还能接受。而且好像样式什么的保持的也还不错。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有