java使用Aspose.words实现word文档转pdf文件_aspose.words转pdf_tomwangyf的博客-CSDN博客 - 好东西

引入原因:

感觉openOffice问题还是比较多的。

1. 比如经常出现8100端口问题,虽然kill了就行,但是还是多了一份操作。

2. 出现少数docx无法预览的问题。(已经修改过源码兼容docx,但是还有极少数docx无法转换为pdf)

最近正好碰到第二个问题了,之前使用的是:

<dependency>    <groupId>com.github.livesense</groupId>    <artifactId>jodconverter-core</artifactId>    <version>1.0.5</version></dependency>

 后来尝试也不行,并且都修改过源码:

<dependency>    <groupId>com.artofsolving</groupId>    <artifactId>jodconverter</artifactId>    <version>2.2.2</version></dependency>

所以引入了Aspose.words 版本是 19.5  据说低版本对字体样式等兼容不好,所以用的这个版本。

1. 下载jar

链接:https://pan.baidu.com/s/1ACFCkJiE6cqjrIhVSkK-6w 
提取码:9999

2. 安装到本地:执行mvn命令,要是报错mvn不是外部或内部命令那种,就找到本地maven文件夹

 命令行窗口输入命令:

mvn install:install-file -DgroupId=com.aspose.words -DartifactId=aspose-words -Dversion=19.5 -Dpackaging=jar -Dfile=写入文件所在地址

例如:

mvn install:install-file -DgroupId=com.aspose.words -DartifactId=aspose-words -Dversion=19.5 -Dpackaging=jar -Dfile=D:\software\apache-maven-3.8.6\bin\aspose-words-19.5.jar

 3. 引入jar包

<!-- 一些docx无法使用openOffice进行转换。转为使用Aspose.words -->        <dependency>            <groupId>com.aspose.words</groupId>            <artifactId>aspose-words</artifactId>            <version>19.5</version>        </dependency>

4. 在resources目录新建license.xml。文件放在哪里都可以,后边代码有指定的引用路径(后边有getResourceAsStream("license.xml"); 代表的引用路径),所以放在哪里都可以

 license.xml文件内容:

<?xml version="1.0" encoding="UTF-8"?><!-- --><License>    <Data>        <Products>            <Product>Aspose.Total for Java</Product>            <Product>Aspose.Words for Java</Product>        </Products>        <EditionType>Enterprise</EditionType>        <SubscriptionExpiry>20991231</SubscriptionExpiry>        <LicenseExpiry>20991231</LicenseExpiry>        <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>    </Data>    <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature></License>

 5.创建一个工具类:这个我是参考直接拿过来用的:JAVA使用aspose实现word文档转pdf文件

import com.aspose.words.Document;import com.aspose.words.FontSettings;import com.aspose.words.License;import com.aspose.words.SaveFormat; import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.InputStream; public class AsposeUtil {     /**     * 验证License 若不验证则转化出的pdf文档会有水印产生     * @return     */    public boolean getLicense() {        boolean result = false;        try {            InputStream is =this.getClass().getClassLoader().getResourceAsStream("license.xml");            License aposeLic = new License();            aposeLic.setLicense(is);            result = true;        } catch (Exception e) {            e.printStackTrace();        }        return result;    }     public static void main(String[] args) throws Exception {        AsposeUtil bean = new AsposeUtil();        bean.word2Pdf2("D:\\进修审批表.docx","D:\\test.pdf");    }     /**     * word转pdf     * inpath: 输入word的路径     * outpath: 输出pdf的路径     */    public void word2Pdf2(String inpath,String outpath) throws Exception {        if (!getLicense()) {            System.out.println("非法------------");            return;        }         System.out.println("开始使用Aspose.words进行转换");         long old = System.currentTimeMillis();        File file = new File(outpath);         FileOutputStream os = new FileOutputStream(file);         //解决乱码        //如果是windows执行,不需要加这个        String osName = System.getProperty("os.name", "");        if (osName.startsWith("Mac OS")) {        } else if (osName.startsWith("Windows")) {        } else { // assume Unix or Linux            //如果是linux执行,需要添加这个 ,如果还有乱码,可以把/usr/share/fonts/chinese路径下的所有文件拷贝到有问题的环境。并且再执行:source /etc/profile            new FontSettings().setFontsFolder("/usr/share/fonts/chinese",true);        }         Document doc = new Document(inpath);         //全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换        doc.save(os, SaveFormat.PDF);        long now = System.currentTimeMillis();        System.out.println("Aspose.words转换结束,共耗时:" + ((now - old) / 1000.0) + "秒");    }      /**     * word转pdf     * @param path      pdf输出路径     * @param wordInput word输入流     * @param wordName  word文档的名称     */    public void word2pdf(String path, InputStream wordInput, String wordName) throws FileNotFoundException {        if (!getLicense()) {            System.out.println("非法");            return;        }         //新建一个空白pdf文档        long old = System.currentTimeMillis();        File file = new File(path + wordName + ".pdf");        FileOutputStream os = new FileOutputStream(file);         //Address是将要被转化的word文档        Document doc = null;        try {            doc = new Document(wordInput);        } catch (Exception e) {            e.printStackTrace();        }        try {            //全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换            doc.save(os, SaveFormat.PDF);        } catch (Exception e) {            e.printStackTrace();        }        long now = System.currentTimeMillis();        //转化用时        System.out.println("共耗时:" + ((now - old) / 1000.0) + "秒");    }}

6. 可以使用main方法进行测试了。


原网址: 访问
创建于: 2023-05-10 00:47:19
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论