使用aspose将word转为pdf

   实际工作中我们常常会遇到这样的业务需求,比如说:根据模板生成文件,将生成的文档发送邮件到指定的邮箱。实现这一需求我们可以采用根据模板生成word文档(参照前一篇文章),然后再将word文档转为PDF文档。

        到这里就用到我今天要说的知识了,其实已经有很多优秀的博客写过了,所以这篇文章的主要目的还是借鉴、学习,掌握这个方法,用到自己的实际业务中去。

前置条件:准备aspose-words-15.8.0-jdk16.jar 、 license.xml 文件(破解版)

1、需要在项目中引入该jar包,如果要是本地使用的话可以直接将jar放在/WEB-INF/lib/ 目录下。

2、另一种方式是在pom文件中配置本地依赖;在项目中新建pom文件平级的文件夹lib,将aspose-words-15.8.0-jdk16.jar放入lib中,然后在pom文件中加入如下依赖

<dependency>
     <groupId>com.aspose</groupId>
     <artifactId>aspose-words</artifactId>
     <version>15.8.0-jdk16</version>
     <scope>system</scope>
     <systemPath>${project.basedir}/lib/aspose-words-15.8.0-jdk16.jar</systemPath>
</dependency>

PS:POM文件里面可以引用一些内置属性(Maven预定义可以直接使用)  

${basedir} 项目根目录   

${version}表示项目版本;  

${project.basedir}同${basedir};  

${project.version}表示项目版本,与${version}相同;  

${project.build.directory} 构建目录,缺省为target  

${project.build.sourceEncoding}表示主源码的编码格式;  

${project.build.sourceDirectory}表示主源码路径;  

${project.build.finalName}表示输出文件名称;  

${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes

代码结构:

  /***
     * 去除生成PDF的水印
     * @return
     */
    public static boolean getLicense() {
        boolean result = false;
        try {
            //  license.xml应放在..\WebRoot\WEB-INF\classes路径下
            InputStream is = FreeMarkerWordUtil.class.getClassLoader().getResourceAsStream("license.xml");
            log.info("InputStreamInputStreamInputStream=======" + is);
            License aposeLic = new License();
            aposeLic.setLicense(is);
            result = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

    /***
     * word转pdf
     * @param wordPath
     * @param pdfPath
     */
    public static boolean word2Pdf(String wordPath, String pdfPath) {
        boolean flag = false;
        // 验证License 若不验证则转化出的pdf文档会有水印产生
        if (!getLicense()) {
            return false;
        }
        try {
            //新建一个pdf文档
            File file = new File(pdfPath);
            FileOutputStream os = new FileOutputStream(file);
            //Address是将要被转化的word文档
            Document doc = new Document(wordPath, null);
            //全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换
            doc.save(os, SaveFormat.PDF);
            os.close();
            flag = true;
        } catch (Exception e) {
            e.printStackTrace();
            flag = false;
        }
        return flag;
    }

实际遇到的问题:

1)license.xml 要用破解版,否则会在 aposeLic.setLicense(is);这块代码出行异常。

猜你喜欢

转载自www.cnblogs.com/4king/p/11892068.html