java实现word转pdf or直接生成pdf文件
目录
- 1、需要引入的maven坐标
- 2、读取word转换为pdf
- 3、自己设置格式生成 共有三种格式、直接上util类
- 4、方法调用
- 生成纯文本pdf
- 生成纯表格pdf
- 生成图片pdf
- 总结
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、读取wpPLpjUYord转换为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(rhttp://www.devze.comow -> { 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测试.jpg"); Image img = new Image(imageData); document.add(img.setAutoScale(true)); document.close(); } catch (Exception e) { e.printStackTrace(); } } }
4、方法调用
生成纯文本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); PdfDocumentandroid 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(); } }
- createFile()方法生成:
生成纯表格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.addHeadpPLpjUYerCell("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(); } }
- createWordTableFile()方法生成
生成图片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.crpPLpjUYeate("/Users/chenjx/Downloads/图片/1616377073865测试.jpg"); Image img = new Image(imageData); document.add(img.setAutoScale(true)); document.close(); } catch (Exception e) { e.printStackTrace(); } }
- createPictureFile()
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论