首先要解决的是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

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐