admin管理员组

文章数量:1605636

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()

本文标签: 文件JavawordPDF