java实现word转pdf


package cn.net.cobot.health.web.export.helper;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;

import org.apache.commons.lang3.StringUtils;
import org.apache.tika.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.aspose.words.Document;
import com.aspose.words.License;
import com.aspose.words.PdfSaveOptions;
import com.aspose.words.SaveFormat;

import cn.net.cobot.health.web.util.report.AsposeUtil;

public class AsposeHelper {
    private static Logger logger = LoggerFactory.getLogger(AsposeHelper.class);

    /**
     * word转pdf
     *
     * @param wordPath        word文件路径-含扩展名
     * @param pdfPath         转换后pdf文件保存的路径-含扩展名
     * @param includeBookmark 转换后的pdf文件中是否包含目录
     * @return String<br>
     *         为null,成功<br>
     *         不是null,失败信息
     */
    public static String convertWord2Pdf(String wordPath, String pdfPath, boolean includeBookmark) {
        try {
            getLicense();
        } catch (Exception e) {
            //if (logger.isErrorEnabled()) {
                logger.error("aspose license无效", e);
            //}
            return "aspose license无效";
        }
        if (StringUtils.isBlank(wordPath) || StringUtils.isBlank(pdfPath)) {
            String err = "参数无效:请指定word文件名或者pdf文件名";
            //if (logger.isErrorEnabled()) {
                logger.error(err);
            //}
            return err;
        }
        String ret = null;
        long st = System.currentTimeMillis();
        File pdfFile = new File(pdfPath);
        Document asposeDoc = null;
        FileOutputStream outputStream = null;
        try {
            outputStream = new FileOutputStream(pdfFile);
            asposeDoc = new Document(wordPath);
            PdfSaveOptions pdfSaveOptions = new PdfSaveOptions();
            // 输出pdf格式文档
            pdfSaveOptions.setSaveFormat(SaveFormat.PDF);
            if (includeBookmark) {
                // 设置3级doc书签需要保存到pdf的heading中
                pdfSaveOptions.getOutlineOptions().setHeadingsOutlineLevels(4);
                // 设置pdf中默认展开1级
                pdfSaveOptions.getOutlineOptions().setExpandedOutlineLevels(1);
            }
            asposeDoc.save(outputStream, pdfSaveOptions);
            long end = System.currentTimeMillis();
            if (logger.isInfoEnabled()) {
                logger.info("word转pdf[{}目录]:{},用时{}ms", (includeBookmark ? "" : "不含"), wordPath, (end - st));
            }
            ret = null;
        } catch (Exception e) {
            //if (logger.isErrorEnabled()) {
                logger.info("word转pdf异常[" + (includeBookmark ? "" : "不含") + "目录]:" + wordPath, e);
            //}
            ret = "word转pdf异常";
        } finally {
            IOUtils.closeQuietly(outputStream);
        }
        return ret;
    }

    private static void getLicense() throws Exception {
        try (InputStream is = AsposeUtil.class.getClassLoader()
                .getResourceAsStream("Aspose.Total.Product.Family.lic")) {
            License license = new License();
            license.setLicense(is);
        }
    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM