首先要解决的是linux上没有中文字体的问题,这使得转换的pdf中字体有乱码。
其次要选择合适依赖文件,我使用的是免费开源的com.spire.doc.Document。
注意创建好相关目录:字体安装目录、pdf文件存储目录。

1. 上传中文字体

windows中文字体存放在:C:\Windows\Fonts

然后将字体打包上传到 /usr/share/fonts/chinese 下 (没有就创建目录) ,依次执行一下命令:

  • chmod 775 /usr/share/fonts/chinese
  • cd /usr/share/fonts/chinese
  • sudo mkfontscale
  • sudo mkfontdir
  • sudo fc-cache -fv

2. 创建pdf文件存储目录

mkdir /weaver/ecology/***/targetFilePath

3. 代码

/**
 * 将word转化成pdf并返回流
 *
 * @param inputStream
 * @return
 * @throws Exception
 */
private FileInputStream convertPdf(InputStream inputStream)  {
    FileInputStream fileInputStream = null;
    BaseBean baseBean = new BaseBean();
    try {
        com.spire.doc.Document doc = new  com.spire.doc.Document();
        doc.loadFromStream(inputStream, FileFormat.Docx);

        String filePath = GCONST.getRootPath() + "filesystem" + File.separatorChar + "targetFilePath" + File.separatorChar + "target.pdf";
        baseBean.writeLog(filePath);
        //保存为PDF格式
        doc.saveToFile(filePath, FileFormat.PDF);

        fileInputStream = new FileInputStream(filePath);
        return fileInputStream;
    } catch (Exception e) {
        baseBean.writeLog(e);
    }
    return fileInputStream;
}
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐