高效实现Word转PDF的Java工具类

使用easyPoi导出word文档并使用openoffice把word转换为pdf格式 easyPoi官网:http://www.wupaas.com/ 一.制作要导出的word模板(使用Word软件制作模板),把模板里的变量用{{字段名}}代替,把制作好的模版放到,如下图我放到static下的template中 模板 导入所需jar包 <!-- easypoi依赖 --> <dependency> <groupId>cn.afterturn</groupId> <artifactId&gt.. 阅读详情

依赖文件

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

文件转换工具类

import cn.afterturn.easypoi.word.WordExportUtil;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.docx4j.Docx4J;
import org.docx4j.convert.out.FOSettings;
import org.docx4j.fonts.IdentityPlusMapper;
import org.docx4j.fonts.PhysicalFonts;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.fonts.Mapper;
import org.springframework.util.Assert;
import java.io.*;
import java.util.Map;

public class FileUtils {
   
   
    /**
     *
     * @param templatePath
     * @param saveDir
     * @param fileName
     * @param params
     * @return
     */
    public static String exportWord(String templatePath, String saveDir, String fileName, Map<String, Object> params)  {
   
   
        Assert.notNull(templatePath, "模板路径不能为空");
        Assert.notNull(saveDir, "临时文件路径不能为空");
        Assert.notNull(fileName, "导出文件名不能为空");
        Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式");
        if (!saveDir.endsWith("/")) {
   
   
            saveDir = saveDir + File.separator;
        }

        File dir = new File(saveDir);
        if (!dir.exists()) {
   
   
            dir.mkdirs();
        }
        String savePath = saveDir + fileName;

        try {
   
   
            XWPFDocument doc = WordExportUtil.exportWord07(templatePath, params);
            FileOutputStream fos = new FileOutputStream(savePath);
            doc.write(fos);
            fos.flush();
            fos.close();
        } catch (Exception e) {
   
   
            e.printStackTrace();
        }
        return savePath;
    }



    /**
     * @param wordPath word文件路径
     * @param pdfPath  pdf输出路径
     * @return
     */
    public static String convertDocx2Pdf(String wordPath, String pdfPath) {
   
   
   
word转pdf方案 java中,五种word转pdf方案对比 阅读详情

相关推荐

使用Java代码实现Word到PDF的高效转换

在数字化转型与信息处理的浪潮中,文档格式转换是信息处理的基本需求之一。尤其是对于企业而言,将Word文档转换成PDF格式是文档处理和归档的常用操作。Java作为一种成熟的开发语言,其强大的跨平台性和丰富的库支持使其在文档处理中扮演着重要角色。利用Java实现Word到PDF的转换不仅能保持文档格式的完整性和一致性,还能提升文档的安全性和可移植性。在本章中,我们将探讨Java实现Word转PDF的基本概念、优势、应用场景以及转换流程。

weixin_36464343的博客 1318

Java实现Word转PDF、HTML教程

在信息技术的高速发展下,不同格式的文档转换需求日益增长。对于Java开发者而言,Word到PDF和HTML的转换是常见的应用场景。这种转换不仅关乎文档格式的适配,也涉及到用户阅读体验的优化和多平台兼容性的提升。本章将概述Java环境下实现Word文档转换为PDF和HTML格式的基本概念、应用场景以及转换流程,为后续章节的技术细节和实践操作提供宏观指导和背景铺垫。

weixin_30838971的博客 961

Java实现的高效Word到PDF转换工具

文件转换是IT行业常见的任务之一,特别是在处理文档文件时,将Word转换为PDF格式是许多业务流程中不可或缺的一环。这种转换过程涉及到了文件格式的解析、内容提取和重新渲染等步骤。理论上讲,文件转换流程可以被拆解为以下几个基本步骤:读取源文件:首先需要使用适当的库来读取Word文档,这包括解析文档的结构和内容。内容提取:将读取到的内容按照逻辑结构(如段落、表格、图片等)进行分离和提取。格式处理:对于提取出的内容,需要进行格式上的处理和转换,以确保在新格式中能够得到正确显示。

weixin_36300623的博客 1175

Java实现Word转PDF完整解决方案

在现代企业级应用开发中,文档格式转换是一项常见且关键的任务,尤其是在处理办公文档(如Word、PDF等)时更为突出。Java作为后端开发的主流语言,其生态中涌现出多个高效的文档处理库,满足不同场景下的转换需求。其中,Word转PDF的应用尤为广泛,如报表导出、合同生成、文档归档等场景,均对格式保留、转换效率和跨平台兼容性提出了较高要求。在众多文档处理方案中,Apache POI、iText、Docx4j等开源库虽然具备一定的文档操作能力,但在复杂格式转换与渲染方面存在局限。

weixin_42327217的博客 2533

easypoi的使用demo,包含Excel模板导出,html导出Excel,Excel导出pdf等

使用Easy POI的API实现POI对Excel的所有操作,并且它的封装类可以让你快速上手,无需编写大量的Excel格式设置等复杂代码,高效,完善,高并发

导出 Excel 以及转化为 PDF 导出

导出 Excel 用的是 easypoi, 导出 PDF 是用 spire.xls.free 将 Excel 流转化为 PDF 流导出.

easypoi教程总结

easypoi操作excel导出 导入,word文档导出,HTML导出,PDF导出

EasyPoi教程.pdf

EasyPoi教程.pdf

实战拆解:RAG vs Agent在金融风控中的性能对比

2024年上半年我帮某华东地区城商行做零售交易反欺诈系统升级时,技术团队曾发生过一次激烈争论:一派认为应该优先上RAG(检索增强生成)方案,成本低、落地快、合规性好;另一派坚持要上Agent(智能体)方案,推理能力强、能应对复杂新型欺诈。最终我们做了完整的AB测试,结论是两者没有绝对的优劣,只有场景适配的差异:RAG适合高并发、低时延的实时风控场景,Agent适合低并发、高准确率要求的事后核查/大额审批场景,两者结合的 hybrid 方案能覆盖95%以上的风控需求。本文我会结合真实项目的测试数据,从核心概念

AI天才研究院 251

Ruoyi-Cloud-Plus新手必看:Gateway启动失败的两种解决方案(Nacos配置空间问题)

本文详细解析了Ruoyi-Cloud-Plus框架中Gateway启动失败的常见原因及解决方案,重点围绕Nacos配置空间问题展开。针对新手开发者,提供了两种实用方案:快速切换到public空间或规范创建dev空间并迁移配置,帮助开发者高效解决网关启动故障,确保微服务项目顺利运行。

weixin_30872499的博客 492

QCC5125/QCC5144----LDAC 44.1K 48K 96K 192K 输出

QCC5125/QCC5144----LDAC 44.1K 48K 96K 192K 输出。而且还不需要license限制。

Alex_886的博客 1975

雷达回波仿真

文章目录前言一、基础理解1.慢时间维度和快时间维度2.脉冲压缩3.MTI4. 脉冲多普勒处理5.cacfar检测二、具体流程1.产生回波信息加入目标时延以及噪声2.解调回波得到基带信号3.脉冲压缩 MTI MTD cafar检测 前言 雷达算法仿真学习,主要流程包括生成目标回波,将基带信号加在载波上其次是加上目标信息和干扰信号后发射,解调回波信号得到基带信号然后MTI,MTD,最后再检测。 一、基础理解 1.慢时间维度和快时间维度 连续M个脉冲回波经过相干解调之后的基带数据形成的一个二维数据矩阵,.

qq_42961235的博客 1万+

【WLAN】【调试】再谈如何使用Wireshark解密WiFi数据包——使用TK信息

- 本文介绍了一种wireshark使用TK信息解密空口报文的方式,该方式对是否有关联过程的报文没有要求。

一介草民,只为生活。 1188

RK3399平台开发系列讲解(外设篇)交换芯片RTL8306M

网络:交换芯片RTL8306M 电路: make menuconfig 配置: 目录:arch/arm64/configs/rk3399_b201_defconfig CONFIG_FIXED_PHY=y 设备树: arch/arm64/boot/dts/rockchip/rk3399-b201-rev1.dts 时钟: Open之后首先校验网卡mac地址是否正确(stmmac_chec...

内核笔记 2391

知道LPDDR和DDR什么关系吗?

话不多说,先上大白话,一个网友总结的很好:简单地说DRR4是标准电压版的PC和服务器内存,LPDDR4属于手机等嵌入式移动设备使用的低电压低功耗内存,LPDDR4X则是LPDDR4的升级版,下面详细看看老哥的博客。LPDDR4是与DDR4内存等效的移动设备。。LPDDR4具有两个16位通道,从而使每个DIMM的总线总长度为32位。相比之下,DDR4每个DIMM具有64位通道。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 2806

总结目前开源的视频生成/视频编辑大模型

随着Sora的爆火,视频生成和视频编辑受到了越来越多的关注。这篇博客总结一下目前开源的视频生成和视频编辑的大模型,并分析他们各自的优缺点,以及在自己进行科研任务或者工作中应该如何选用对应的开源模型,希望能给从事这一领域研究和使用的小伙伴们帮助。

沉迷单车的追风少年 3544

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: 快速上手:用IDEA创建Spring Web项目
下一篇: 自定义静态资源过滤策略与文件上传全攻略
「已注销」
博客等级 码龄7年 158粉丝 76原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值