1、需要引入的maven坐标

<!-- https://mvnrepository.com/artifact/com.itextpdf/kernel --><dependency><groupId>com.itextpdf</groupId><artifactId>kernel</artifactId><version>7.2.4</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>RELEASE</version><scope>compile</scope></dependency><!-- https://mvnrepository.com/artifact/com.itextpdf/layout --><dependency><groupId>com.itextpdf</groupId><artifactId>layout</artifactId><version>7.2.4</version></dependency>

2、读取word转换为pdf

/*** 文件*/public void createFile() {XWPFDocument xwpfDocument = null;try {xwpfDocument = new XWPFDocument(new FileInputStream("/Users/chenjx/Downloads/zipceshi/createYuWord.docx"));} catch (IOException e) {throw new RuntimeException(e);};List<XWPFParagraph> paragraphs = xwpfDocument.getParagraphs();List<XWPFTable> tables = xwpfDocument.getTables();//   创建 一个 PdfWriter,用于定义 pdf 的路径地址String filename = String.format("/Users/chenjx/Downloads/zipceshi/pdf/%s.pdf", UUID.randomUUID() + "===1111");try {PdfWriter pdfWriter = new PdfWriter(filename);PdfDocument pdfDocument = new PdfDocument(pdfWriter);PdfFont font = PdfFontFactory.createFont(FONTS);Document document = new Document(pdfDocument).setFont(font);//通过读取word进行转换//读取文本内容for (XWPFParagraph paragraph : paragraphs) {String text = paragraph.getText();document.add(new Paragraph(text));}//读取表格内容for (XWPFTable table : tables) {final Table[] table1 = {null};List<XWPFTableRow> rows = table.getRows();rows.forEach(row -> {int i = rows.indexOf(row);List<XWPFTableCell> tableCells = row.getTableCells();if (i == 0) {table1[0] = new Table(tableCells.size());}tableCells.stream().map(XWPFTableCell::getParagraphs).forEach(x -> x.stream().map(XWPFParagraph::getRuns).forEach(runs -> {if (i == 0) {table1[0].setWidth(500);table1[0].addHeaderCell(runs.stream().map(XWPFRun::text).collect(Collectors.joining()));} else {table1[0].addCell(runs.stream().map(XWPFRun::text).collect(Collectors.joining()));}}));});document.add(table1[0]);}document.close();} catch (Exception e) {e.printStackTrace();}}

生成效果:

word模版:

生成的pdf:

3、自己设置格式生成 共有三种格式、直接上util类

package com.zjjw.jxtest.util.util;import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Image;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFStyle;
import org.apache.poi.xwpf.usermodel.XWPFStyles;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;/*** @author: chenjiaxiang* @create: 2022/11/21 17:00**/
public class FilePreviewUtil {private static final String FONTS1 = "/Users/chenjx/Library/Fonts/SIMFANG.TTF";private static final String FONTS = "/Users/chenjx/Library/Fonts/SIMSUN.TTC,1";public static void main(String[] args) {new FilePreviewUtil().createFile();new FilePreviewUtil().createWordTableFile();new FilePreviewUtil().createPictureFile();}/*** 文本*/public void createFile() {//   创建 一个 PdfWriter,用于定义 pdf 的路径地址String filename = String.format("/Users/chenjx/Downloads/zipceshi/pdf/%s.pdf", UUID.randomUUID() + "===1111");try {PdfWriter pdfWriter = new PdfWriter(filename);PdfDocument pdfDocument = new PdfDocument(pdfWriter);PdfFont font = PdfFontFactory.createFont(FONTS);Document document = new Document(pdfDocument).setFont(font);//纯英文document.add(new Paragraph(("Hello China")));document.add(new Paragraph(("Hello China 中文")));document.close();} catch (Exception e) {e.printStackTrace();}}/*** word表格*/public void createWordTableFile() {try {String filename = String.format("/Users/chenjx/Downloads/zipceshi/pdf/%s.pdf", UUID.randomUUID() + "===222");PdfWriter pdfWriter = new PdfWriter(filename);PdfDocument pdfDocument = new PdfDocument(pdfWriter);//这里不要搞错,找到你电脑上的这个文件,复制这个文件的绝对路径PdfFont font = PdfFontFactory.createFont(FONTS);Document document = new Document(pdfDocument).setFont(font);Table table = new Table(4);table.setWidth(500);table.addHeaderCell("header 1").addHeaderCell("header 2").addHeaderCell("header 3").addHeaderCell("header 4");for (int i = 0; i < 16; i++) {table.addCell("cell " + i);}document.add(table);document.close();} catch (Exception e) {e.printStackTrace();}}/*** 图片*/public void createPictureFile() {try {String filename = String.format("/Users/chenjx/Downloads/zipceshi/pdf/%s.pdf", UUID.randomUUID() + "===3333");PdfWriter pdfWriter = new PdfWriter(filename);PdfDocument pdfDocument = new PdfDocument(pdfWriter);PdfFont font = PdfFontFactory.createFont(FONTS);Document document = new Document(pdfDocument).setFont(font);ImageData imageData = ImageDataFactory.create("/Users/chenjx/Downloads/图片/1616377073865测试.png");Image img = new Image(imageData);document.add(img.setAutoScale(true));document.close();} catch (Exception e) {e.printStackTrace();}}}

4、方法调用

1、生成纯文本pdf

/*** 文本*/public void createFile() {//   创建 一个 PdfWriter,用于定义 pdf 的路径地址String filename = String.format("/Users/chenjx/Downloads/zipceshi/pdf/%s.pdf", UUID.randomUUID() + "===1111");try {PdfWriter pdfWriter = new PdfWriter(filename);PdfDocument pdfDocument = new PdfDocument(pdfWriter);PdfFont font = PdfFontFactory.createFont(FONTS);Document document = new Document(pdfDocument).setFont(font);//纯英文document.add(new Paragraph(("Hello China")));document.add(new Paragraph(("Hello China 中文")));document.close();} catch (Exception e) {e.printStackTrace();}}

1) createFile()方法生成:

2、生成纯表格pdf

private static final String FONTS = "/Users/chenjx/Library/Fonts/SIMSUN.TTC,1";/*** word表格*/public void createWordTableFile() {try {String filename = String.format("/Users/chenjx/Downloads/zipceshi/pdf/%s.pdf", UUID.randomUUID() + "===222");PdfWriter pdfWriter = new PdfWriter(filename);PdfDocument pdfDocument = new PdfDocument(pdfWriter);//这里不要搞错,找到你电脑上的这个文件,复制这个文件的绝对路径PdfFont font = PdfFontFactory.createFont(FONTS);Document document = new Document(pdfDocument).setFont(font);Table table = new Table(4);table.setWidth(500);table.addHeaderCell("header 1").addHeaderCell("header 2").addHeaderCell("header 3").addHeaderCell("header 4");for (int i = 0; i < 16; i++) {table.addCell("cell " + i);}document.add(table);document.close();} catch (Exception e) {e.printStackTrace();}}

2)createWordTableFile()方法生成

3、生成图片pdf

 /*** 图片*/public void createPictureFile() {try {String filename = String.format("/Users/chenjx/Downloads/zipceshi/pdf/%s.pdf", UUID.randomUUID() + "===3333");PdfWriter pdfWriter = new PdfWriter(filename);PdfDocument pdfDocument = new PdfDocument(pdfWriter);PdfFont font = PdfFontFactory.createFont(FONTS);Document document = new Document(pdfDocument).setFont(font);ImageData imageData = ImageDataFactory.create("/Users/chenjx/Downloads/图片/1616377073865测试.png");Image img = new Image(imageData);document.add(img.setAutoScale(true));document.close();} catch (Exception e) {e.printStackTrace();}}

3、createPictureFile()

java word 转pdf or 直接生成pdf文件相关推荐

  1. java根据pdf模版动态生成pdf

    java根据pdf模版动态生成pdf packagecom.utils;importjava.io.ByteArrayOutputStream;importjava.io.File;importjav ...

  2. Java使用Itext5与html模板生成pdf并支持下载

    Java使用Itext5与html模板生成pdf 文章目录 Java使用Itext5与html模板生成pdf 前言 一.引入依赖 二.相关使用说明 1.工具类 2.模板配置 3.模板的抽象类(定义了相 ...

  3. django生成文件txt、pdf(在生成 PDF 文件之前,需要安装 ReportLab 库)

    from django.http import HttpResponse def download_file(request): # Text file #response = HttpRespons ...

  4. 编译java程序时用于指定生成class_(15 )在编译 Java 程序时,用于指定生成 .class 文件位置的选项是A ) -g B ) -d C ) -verbose D...

    (15 )在编译 Java 程序时,用于指定生成 .class 文件位置的选项是A ) -g B ) -d C ) -verbose D 更多相关问题 如图①,在△ABC中,AB=AC,∠BAC=90 ...

  5. java pdf 中文_java-pdf-itext 生成pdf 文档(支持中文字体)

    java-pdf-itext 生成pdf 文档(支持中文字体) itext 版本:2.1.7 package com.demo.preview; import java.io.ByteArrayOut ...

  6. Java word动态数据填充并转为pdf最详细的讲解附带项目

    Java Word数据动态填充,并将word转为pdf 适用范围: 1.已有word模板,word中的一些数据需要动态生成. 2.word转为pdf 本文章讲解的内容是一个完整的适用流程.就是首先是一 ...

  7. 硬核!Java 实现数据动态插入,生成 PDF、EXECL,完美导出功能!

    >>号外:关注"Java精选"公众号,回复"面试资料",免费领取资料!"Java精选面试题"小程序,3000+ 道面试题在线刷, ...

  8. 【Java中级篇】使用itextpdf生成PDF

    我们可以发现很多求职网站都会将我们录入的信息来生成一个PDF简历文件.所以我这里提供了用itextpdf生成的PDF的代码. 一.步骤 1.1.使用Adobe Acrobat Pro工具编辑PDF模板 ...

  9. 自动生成PDF文件(Java通过PDF模板自动生成PDF)

    思路: 1.创建PDF模板(先创建对应的excel文件,创建好后另存为PDF文件)即可. 2.使用Adobe Acrobat DC工具打开PDF文件,设置自己想要替换的内容. 3.maven项目引入依 ...

  10. 【生成PDF】Java如何根据前台Echarts图表生成PDF,并下载

    文章目录 前言 一.如何通过java代码生成PDF? 1.依赖 二.如何在PDF中画前台的echarts图? 1.如何拿到前台echarts图的信息? 前台代码: 后台逻辑:生成PDF,并下载 PDF ...

最新文章

  1. 如何训练2457亿参数量的中文巨量模型“源1.0”
  2. 谈谈对 Canal( 增量数据订阅与消费 )的理解--大数据平台技术栈系列(3)
  3. 动手写一款简单的chrome天气插件
  4. numpy生成随机数
  5. python数组排序(递归实现)
  6. __attribute__编绎属性、关于__init、__initdata、__exit、__exitdata及类似的宏、关于initcall的一些宏定义、__setup宏的来源及使用...
  7. 内涝预测过程的噪音_提高人工智能模型准确率的测试过程中需要注意什么?
  8. 少走弯路的十条忠告收藏
  9. 浏览器本地存储(cookie、sessionStorage和localStorage)
  10. Jmeter接口测试实例图文示例
  11. C++编程基础一 28-编程练习一
  12. pdo oracle extension php.ini,php,pdo怎么连接oracle数据库?
  13. 十大著名黑客-----凯文-米特尼克
  14. 金蝶KIS专业版V14.1即时库存查询表添加字段条形码|商品描述|最低最高存量
  15. 系统架构设计笔记(19)—— 网络存储技术
  16. Mask RCNN综述以及建筑物实例分割
  17. 数值分析Matlab三维数据网格图
  18. 听说一个漂亮的小姐姐图片是程序员无法抗拒的
  19. qt获取网卡流量_智能手机变成台式电脑的无线网卡来使用并连接WIFI上网的方法...
  20. 量子通信与计算机网络,中科大90后团队搭建 “量子鹊桥”,可将量子通信速率提升四倍,相关研究登上 Nature 封面 | 专访...

热门文章

  1. 一位AI博士对人工智能学习的建议
  2. 2021贵州高考口试成绩查询,2021贵州高考英语口语考试
  3. 怎样用计算机产生均匀随机数,掌握利用计算器计算机产生均匀随机数的方法.PPT...
  4. AEG在线式单相UPS系统D.6000
  5. 码云的使用教程(Windows系统下)
  6. ElasticSearch基本原理和分布式文件系统
  7. ecos 自带的Microwindows中加入mwin的支持
  8. 关于XMind软件文件格式的一些思考
  9. python学习签到
  10. windows7安装.net framework 4.6遇到“0x80096005 时间戳签名和/或证书无法验证或已损坏“问题