admin管理员组文章数量:1605301
1、需要引入的maven坐标
<!-- https://mvnrepository/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/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文件 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1728480839a1160084.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论