1、jar包:

        <dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>org.apache.poi.xwpf.converter.pdf</artifactId><version>1.0.6</version></dependency>

2、代码util类(部分文档转换后会有格式问题,暂未解决)

package com.zjjw.jxtest.util.util;import com.lowagie.text.Font;
import com.lowagie.text.pdf.BaseFont;
import fr.opensagres.xdocreport.itext.extension.font.IFontProvider;
import org.apache.poi.xwpf.converter.pdf.PdfConverter;
import org.apache.poi.xwpf.converter.pdf.PdfOptions;
import org.apache.poi.xwpf.usermodel.XWPFDocument;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;/*** @author: chenjiaxiang* @create: 2022/11/22 14:40**/
public class WordToPdfUtils {private static final String FONTS1 = "/Users/chenjx/Library/Fonts/SIMSUN.TTC,1";private static final String FONTS2 = "/Users/chenjx/Library/Fonts/SIMFANG.TTF";private static final String FONTS_NAME = "仿宋";public static void main(String[] args) throws Exception {String filePath = "/Users/chenjx/Downloads/zipceshi/createYuWord.docx";String outPath = "/Users/chenjx/Downloads/zipceshi/pdf/a.pdf";WordToPdfUtils wordPdfUtils = new WordToPdfUtils();wordPdfUtils.wordToPdf(filePath, outPath);}public void wordToPdf(String wordPath, String pdfPath) {InputStream in = null;OutputStream outPDF = null;XWPFDocument document;try {in = Files.newInputStream(Paths.get(wordPath));document = new XWPFDocument(in);// 将word转成pdfPdfOptions options = PdfOptions.create();outPDF = Files.newOutputStream(Paths.get(pdfPath));options.fontProvider(new IFontProvider() {@Overridepublic Font getFont(String familyName, String encoding, float size, int style, java.awt.Color color) {try {String prefixFont;String os = System.getProperties().getProperty("os.name");if (os.startsWith("win") || os.startsWith("Win")) {/*windows字体*/prefixFont = "C:\\Windows\\Fonts\\simsun.ttc,0";} else {/*linux字体*/prefixFont = FONTS1;}BaseFont stChinese = BaseFont.createFont(prefixFont, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);BaseFont fsChinese = BaseFont.createFont(FONTS2, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);Font stFontChinese = new Font(stChinese, size, style, color);Font fsFontChinese = new Font(fsChinese, size, style, color);if (familyName != null) {if (FONTS_NAME.equals(familyName)) {fsFontChinese.setFamily(familyName);return fsFontChinese;} else {stFontChinese.setFamily(familyName);}}return stFontChinese;} catch (Exception e) {e.printStackTrace();return null;}}});PdfConverter.getInstance().convert(document, outPDF, options);} catch (IOException e) {e.printStackTrace();} finally {try {if (in != null) {in.close();}if (outPDF != null) {outPDF.close();}} catch (IOException e) {e.printStackTrace();}}}}

3、word格式:

4、导出pdf样式:

java8通过 poi+text 将word转为pdf相关推荐

  1. word中存储矢量图,word转为PDF时矢量图不失真。以及Visio图片放入word后有大量空白

    一.使用draw.io绘制好,然后导出为vsdx 1.我们可以在Visio中绘制图形(或者使用diagrams.net:Flowchart Maker & Online Diagram Sof ...

  2. aspose将word转为pdf

    aspose文件转换功能非常方便,文件也不会出现乱码,内容丢失的情况. 相关jar和license.xml下载地址:https://download.csdn.net/download/qq_3167 ...

  3. Java 将Word转为PDF、PNG、SVG、RTF、XPS、TXT、XML

    同一文档在不同的编译或阅读环境中,需要使用特定的文档格式来打开,通常需要通过转换文档格式的方式来实现.下面将介绍在Java程序中如何来转换Word文档为其他几种常见文档格式,如PDF.图片png.sv ...

  4. java 将word转为pdf文件的两种方式【spire.doc.free】【documents4j】

    场景 如资产证明等场景下,一般要求同时生成word与pdf两种格式的证明文件,且两者格式需保持一致,可以各自单独生成,但那样可能需要维护两个模板文件,所以也可以仅定义一份word的模板文件,使用模板生 ...

  5. 使用python批量将word转为pdf

    前言 最近遇到一个问题,打印大量的word,自知word在不同打印店格式可能会发生变化,于是就想去将其转为pdf,在百度上去搜索,无奈搜不到相关程序,于是就使用英语去搜索,".doc to ...

  6. 记一次文件从Word转为PDF(documents4j和aspose)

    前言: 两种方法:documents4j和aspose 最开始是用documents4j,在本地使用很方便,但是部署到LINUX上面之后,抛出异常,就看了下官方文档,documents4j是使用本地的 ...

  7. 使用Aspose.Words.dll把word转为pdf(C#)

    当然使用Aspose.Words.dll不仅仅可以操作word,还可以操作Excel, PowerPoint等office文档以及PDF文档,不用安装任何的支持插件都能运行,使用它操作word转pdf ...

  8. linux下将word转为PDF

    在Linux中,可以使用libreoffice来将word文档转为PDF格式. 下面是一个简单的命令行示例: libreoffice --convert-to pdf --outdir /path/t ...

  9. 如何快速实现word转为pdf

    Word2010可以直接另存为PDF格式,方便了Word和PDF之间的格式转换,但在一般默认情况下,Word直接另存为PDF时,是不创建书签信息的,这样长文档在没有书签标题导航实在不方便阅读.在Goo ...

最新文章

  1. 【推荐】iOS汉字转拼音第三方库
  2. arraylist切割_JAVA List和Map切割工具详解
  3. java线程中的常用方法_[多线程] 线程中的常用方法-最详细
  4. [SOJ] 畅通工程续
  5. linux版本wannacry,Wannacry勒索软件解决方案
  6. 【Linux学习】Linux的文件权限(一)
  7. 两个数组的交集 II---简单
  8. Linux中的date、cal、bc三个简单命令
  9. JAVA 面向对象程序设计的继承举例
  10. javascript 数组过滤重复对象
  11. Java设计模式笔记--------工厂模式------抽象工厂模式
  12. android 自定义pickerview,Simple PickerView for Android - 这是一个高仿 IOS PickerView 控件的库...
  13. 新路由3鸡血版固件_NEWIFI3老毛子鸡血驱动版固件
  14. 云计算是什么,主要具有哪些特点
  15. 服务器画图plots不显示,Rstudio的Plots不显示图形
  16. C++ std::make_shared是什么怎么用
  17. 下班后10条最佳放松方法
  18. 手机玻璃盖板玻璃logo字符丝印视觉检测系统
  19. 微信公众号最佳实践 ( 4.7)获取用户地理位置
  20. ofbiz实战8——实验室预约管理系统功能介绍

热门文章

  1. 直播终端技术比较:Native vs H5 vs WebRTC vs 小程序
  2. python里面title_python中title=(.*?)是什么意思
  3. mysql查询and和or同时使用
  4. 翻译Stairway to SQL Server Security Level 3: Principals and Securables
  5. linux红帽分区安装教程,RedHat Linux 9.0 硬盘安装教程手把手全部详细教程
  6. 韩国社交软件Kakao Talk要开网络银行,社交软件+银行的模式会怎么转?
  7. T0001.数据结构面试题---栈---获取最小值
  8. Apache Storm-2.0.0 Trident 新版
  9. 只用手机,我学会了编程!
  10. 虚拟机增加磁盘空间后lv扩容详细流程,linux扩容根目录详细流程【openstack和VMware虚拟机方法同理】,centos重装系统lvm后不可用处理流程,2021尾声祝福送上。