开发者

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模版:

    java实现word转pdf or直接生成pdf文件

    • 生成的pdf:

    java实现word转pdf or直接生成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()方法生成:

    java实现word转pdf or直接生成pdf文件

    生成纯表格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()方法生成

    java实现word转pdf or直接生成pdf文件

    生成图片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()

    java实现word转pdf or直接生成pdf文件

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜