一次word转pdf打印预览实战经历easypoi+docx4j

本文档介绍了在SpringBoot项目中使用Easypoi和docx4j将Word(docx)转换为PDF时遇到的中文渲染失败问题。在Linux服务器上,由于字体支持不足导致中文显示不正常。解决方法是确保服务器安装了支持中文的字体,并在转换过程中正确配置。通过WordExportUtil和Docx4J库实现了列表和变量的渲染,但需要进一步完善以适配Linux环境。
摘要由CSDN通过智能技术生成

摘要:word转pdf、easypoi、docx4j、springboot

使用相关依赖:

        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>org.docx4j</groupId>
            <artifactId>docx4j-export-fo</artifactId>
            <version>6.1.0</version>
        </dependency>

本次功能数据需要前端传递数据到后端直接模板打印预览

springboot接口:

    @ApiOperation(value = "打印预览接口",notes = "打印预览接口")
    public void previewByTemp(@PathVariable("tempId")String tempId, @RequestBody String body, HttpServletResponse response){
         pubCoverConfigService.previewByTemp(tempId,body,response);
    }

实际处理方法:

//使用模板渲染参数
XWPFDocument document = WordExportUtil.exportWord07(tempFile.getAbsolutePath(), map);
//读取刚才渲染好的docx文件
FileInputStream tempIns=new FileInputStream(tempFile);
WordprocessingMLPackage mlPackage = WordprocessingMLPackage.load(tempIns);
//载入字体
mlPackage.setFontMapper(mapper);
FOSettings foSettings = Docx4J.createFOSettings();
foSettings.setWmlPackage(mlPackage);
//开始转换
Docx4J.toFO(foSettings, fos, Docx4J.FLAG_EXPORT_PREFER_XSL);

目前实现功能:列表及变量渲染

问题:

        docx4j渲染在linux服务器上,会产生中文渲染失败,需要在服务器中支持中文字体

Docx4j是一个用于处理Word文档的Java库,它提供了丰富的功能,包括创建、修改和Word文档等。要将Word文档换为PDF,可以使用Docx4j提供的功能。 首先,你需要在项目中引入Docx4j库的依赖。你可以在Maven或Gradle中添加以下依赖: Maven: ```xml <dependency> <groupId>org.docx4j</groupId> <artifactId>docx4j</artifactId> <version>8.2.9</version> </dependency> ``` Gradle: ```groovy implementation 'org.docx4j:docx4j:8.2.9' ``` 接下来,你可以使用以下代码将Word文档换为PDF: ```java import org.docx4j.Docx4J; import org.docx4j.convert.out.FOSettings; public class WordToPdfConverter { public static void main(String[] args) throws Exception { // 加载Word文档 String inputFilePath = "path/to/input.docx"; org.docx4j.openpackaging.packages.WordprocessingMLPackage wordMLPackage = Docx4J.load(new java.io.File(inputFilePath)); // 创建FOSettings对象,并设置输出格式为PDF FOSettings foSettings = Docx4J.createFOSettings(); foSettings.setWmlPackage(wordMLPackage); foSettings.setApacheFopMime("application/pdf"); // 设置输出路径 String outputFilePath = "path/to/output.pdf"; java.io.OutputStream outputStream = new java.io.FileOutputStream(outputFilePath); // 执行Docx4J.toFO(foSettings, outputStream, Docx4J.FLAG_EXPORT_PREFER_XSL); // 关闭输出流 outputStream.close(); System.out.println("Word文档换为PDF成功!"); } } ``` 以上代码中,你需要将`inputFilePath`替换为要换的Word文档的路径,将`outputFilePath`替换为要保存的PDF文件的路径。执行代码后,将会生成对应的PDF文件。 希望以上信息对你有所帮助!如果你有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值