java8通过 poi+text 将word转为pdf
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相关推荐
- word中存储矢量图,word转为PDF时矢量图不失真。以及Visio图片放入word后有大量空白
一.使用draw.io绘制好,然后导出为vsdx 1.我们可以在Visio中绘制图形(或者使用diagrams.net:Flowchart Maker & Online Diagram Sof ...
- aspose将word转为pdf
aspose文件转换功能非常方便,文件也不会出现乱码,内容丢失的情况. 相关jar和license.xml下载地址:https://download.csdn.net/download/qq_3167 ...
- Java 将Word转为PDF、PNG、SVG、RTF、XPS、TXT、XML
同一文档在不同的编译或阅读环境中,需要使用特定的文档格式来打开,通常需要通过转换文档格式的方式来实现.下面将介绍在Java程序中如何来转换Word文档为其他几种常见文档格式,如PDF.图片png.sv ...
- java 将word转为pdf文件的两种方式【spire.doc.free】【documents4j】
场景 如资产证明等场景下,一般要求同时生成word与pdf两种格式的证明文件,且两者格式需保持一致,可以各自单独生成,但那样可能需要维护两个模板文件,所以也可以仅定义一份word的模板文件,使用模板生 ...
- 使用python批量将word转为pdf
前言 最近遇到一个问题,打印大量的word,自知word在不同打印店格式可能会发生变化,于是就想去将其转为pdf,在百度上去搜索,无奈搜不到相关程序,于是就使用英语去搜索,".doc to ...
- 记一次文件从Word转为PDF(documents4j和aspose)
前言: 两种方法:documents4j和aspose 最开始是用documents4j,在本地使用很方便,但是部署到LINUX上面之后,抛出异常,就看了下官方文档,documents4j是使用本地的 ...
- 使用Aspose.Words.dll把word转为pdf(C#)
当然使用Aspose.Words.dll不仅仅可以操作word,还可以操作Excel, PowerPoint等office文档以及PDF文档,不用安装任何的支持插件都能运行,使用它操作word转pdf ...
- linux下将word转为PDF
在Linux中,可以使用libreoffice来将word文档转为PDF格式. 下面是一个简单的命令行示例: libreoffice --convert-to pdf --outdir /path/t ...
- 如何快速实现word转为pdf
Word2010可以直接另存为PDF格式,方便了Word和PDF之间的格式转换,但在一般默认情况下,Word直接另存为PDF时,是不创建书签信息的,这样长文档在没有书签标题导航实在不方便阅读.在Goo ...
最新文章
- 【推荐】iOS汉字转拼音第三方库
- arraylist切割_JAVA List和Map切割工具详解
- java线程中的常用方法_[多线程] 线程中的常用方法-最详细
- [SOJ] 畅通工程续
- linux版本wannacry,Wannacry勒索软件解决方案
- 【Linux学习】Linux的文件权限(一)
- 两个数组的交集 II---简单
- Linux中的date、cal、bc三个简单命令
- JAVA 面向对象程序设计的继承举例
- javascript 数组过滤重复对象
- Java设计模式笔记--------工厂模式------抽象工厂模式
- android 自定义pickerview,Simple PickerView for Android - 这是一个高仿 IOS PickerView 控件的库...
- 新路由3鸡血版固件_NEWIFI3老毛子鸡血驱动版固件
- 云计算是什么,主要具有哪些特点
- 服务器画图plots不显示,Rstudio的Plots不显示图形
- C++ std::make_shared是什么怎么用
- 下班后10条最佳放松方法
- 手机玻璃盖板玻璃logo字符丝印视觉检测系统
- 微信公众号最佳实践 ( 4.7)获取用户地理位置
- ofbiz实战8——实验室预约管理系统功能介绍
热门文章
- 直播终端技术比较:Native vs H5 vs WebRTC vs 小程序
- python里面title_python中title=(.*?)是什么意思
- mysql查询and和or同时使用
- 翻译Stairway to SQL Server Security Level 3: Principals and Securables
- linux红帽分区安装教程,RedHat Linux 9.0 硬盘安装教程手把手全部详细教程
- 韩国社交软件Kakao Talk要开网络银行,社交软件+银行的模式会怎么转?
- T0001.数据结构面试题---栈---获取最小值
- Apache Storm-2.0.0 Trident 新版
- 只用手机,我学会了编程!
- 虚拟机增加磁盘空间后lv扩容详细流程,linux扩容根目录详细流程【openstack和VMware虚拟机方法同理】,centos重装系统lvm后不可用处理流程,2021尾声祝福送上。