不为别的,只为做一个连自己都羡慕的人

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);
        }
    }
}

 

posted @ 2022-04-19 10:34  升级打怪  阅读(1125)  评论(0编辑  收藏  举报