自定义PDF导出

Posted 根目录97

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义PDF导出相关的知识,希望对你有一定的参考价值。

package com.tutor.teacherservice.service;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
import java.io.FileOutputStream;

/**
 * @Auther Anear
 * @Date 2021/6/1
 */
public class PdfTest {

    public static void main(String[] args) throws Exception {
        createAllPdf();
    }

    /**
     * 抠模板
     *
     * @throws Exception
     */
    public static void createAllPdf() throws Exception {  // 第一步,实例化一个document对象
        Document document = new Document();
        // 第二步,设置要到出的路径
        FileOutputStream out = new FileOutputStream("D:/workbook111.pdf");
        //如果是浏览器通过request请求需要在浏览器中输出则使用下面方式
        //OutputStream out = response.getOutputStream();
        // 第三步,设置字符
        BaseFont bfChinese = BaseFont.createFont("C:/Users/Anear/IdeaProjects/tutor-system/tutor-teacher-service/src/main/resources/ttf/SIMHEI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
        Font fontZH = new Font(bfChinese, 12.0F, 0);
        Font fontChinese1 = new Font(bfChinese, 16, Font.BOLD);
        // 第四步,将pdf文件输出到磁盘
        PdfWriter writer = PdfWriter.getInstance(document, out);
        // 第五步,打开生成的pdf文件

        document.open();
        // 第六步,设置内容
        String title = "上汽通用汽车员工租车申请表";
        //document.add(new Paragraph(new Chunk("Logo", fontZH)));
        //document.add(new Paragraph(new Chunk(title, fontZH).setLocalDestination(title)));
        PdfPTable titleTable = new PdfPTable(5);
        titleTable.setWidthPercentage(100.0F);

        PdfPCell logoCell = new PdfPCell(new Phrase("LOGO", fontZH));
        logoCell.setColspan(1);
        logoCell.setBorderWidthTop(0);//取消边框展示
        logoCell.setBorderWidthRight(0);
        logoCell.setBorderWidthBottom(0);
        logoCell.setBorderWidthLeft(0);

        //ClassPathResource classPathResource = new ClassPathResource("C:/Users/Anear/IdeaProjects/tutor-system/tutor-teacher-service/src/main/resources/logo/logo.png");
        Image image = Image.getInstance("C:/Users/Anear/IdeaProjects/tutor-system/tutor-teacher-service/src/main/resources/logo/logo.png");
        logoCell.setImage(image);//展示图片logo
        logoCell.setBorderWidth(120);
        logoCell.setFixedHeight(40);
        titleTable.addCell(logoCell);

        PdfPCell titleCell = new PdfPCell(new Phrase(title, fontChinese1));
        titleCell.setColspan(3);
        titleCell.setBorderWidthTop(0);
        titleCell.setBorderWidthRight(0);
        titleCell.setBorderWidthBottom(0);
        titleCell.setBorderWidthLeft(0);
        titleCell.setVerticalAlignment(Element.ALIGN_MIDDLE);//水平垂直居中
        titleCell.setHorizontalAlignment(Element.ALIGN_CENTER);
        titleTable.addCell(titleCell);
        document.add(titleTable);

        PdfPCell kongCell = new PdfPCell(new Phrase("", fontChinese1));
        kongCell.setBorderWidthTop(0);
        kongCell.setBorderWidthRight(0);
        kongCell.setBorderWidthBottom(0);
        kongCell.setBorderWidthLeft(0);
        titleTable.addCell(kongCell);
        document.add(titleTable);

        document.add(new Paragraph(new Chunk("申请日期:2021-06-01", fontZH)));
        document.add(new Paragraph("\\n"));
        // 创建table,注意这里的2是两列的意思,下面通过table.addCell添加的时候必须添加整行内容的所有列
        PdfPTable table = new PdfPTable(6);
        table.setWidthPercentage(100.0F);
        table.setHeaderRows(1);
        table.getDefaultCell().setHorizontalAlignment(1);

        PdfPCell cell = new PdfPCell(new Phrase("个人信息", fontZH));
        cell.setColspan(6);
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(cell);


        table.addCell(new Paragraph("员工姓名", fontZH));
        table.addCell(new Paragraph("张亮Zhang Liang", fontZH));
        table.addCell(new Paragraph("工号", fontZH));
        table.addCell(new Paragraph("2849", fontZH));
        table.addCell(new Paragraph("工作部门", fontZH));
        table.addCell(new Paragraph("上汽通用JQSP", fontZH));
        table.addCell(new Paragraph("身份证号", fontZH));
        table.addCell(new Paragraph("320322199711125310", fontZH));
        table.addCell(new Paragraph("联系电话", fontZH));
        table.addCell(new Paragraph("17601251600", fontZH));
        table.addCell(new Paragraph("单位联系电话", fontZH));
        table.addCell(new Paragraph("18994131575", fontZH));
        PdfPCell cell2 = new PdfPCell(new Phrase("车辆需求信息", fontZH));
        cell2.setColspan(6);
        cell2.setVerticalAlignment(Element.ALIGN_MIDDLE);
        cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(cell2);
        table.addCell(new Paragraph("申购车型", fontZH));
        table.addCell(new Paragraph("全新一代别克君威豪华型", fontZH));
        table.addCell(new Paragraph("颜色", fontZH));
        table.addCell(new Paragraph("天空蓝", fontZH));
        table.addCell(new Paragraph("价格(指导价)", fontZH));
        table.addCell(new Paragraph("888888", fontZH));
        PdfPCell cell3 = new PdfPCell(new Phrase("审核情况", fontZH));
        cell3.setColspan(6);
        cell3.setVerticalAlignment(Element.ALIGN_MIDDLE);
        cell3.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(cell3);
        table.addCell(new Paragraph("最终购车价格", fontZH));
        PdfPCell cell4 = new PdfPCell(new Phrase("88888", fontZH));
        cell4.setColspan(3);
        table.addCell(cell4);
        table.addCell(new Paragraph("部门审核盖章", fontZH));
        table.addCell(new Paragraph("", fontZH));
        PdfPCell cell5 = new PdfPCell(new Phrase("开票信息", fontZH));
        cell5.setColspan(6);
        cell5.setVerticalAlignment(Element.ALIGN_MIDDLE);
        cell5.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(cell5);
        table.addCell(new Paragraph("与员工关系", fontZH));
        PdfPCell cell6 = new PdfPCell(new Phrase("本人", fontZH));
        cell6.setColspan(5);
        table.addCell(cell6);
        table.addCell(new Paragraph("开票人姓名", fontZH));
        PdfPCell cell7 = new PdfPCell(new Phrase("张亮", fontZH));
        cell7.setColspan(5);
        table.addCell(cell7);
        table.addCell(new Paragraph("身份证号", fontZH));
        PdfPCell cell8 = new PdfPCell(new Phrase("320322199711125310", fontZH));
        cell8.setColspan(5);
        table.addCell(cell8);
        document.add(table);
        document.add(new Paragraph(new Chunk("( 注:本身清单自申请日的当季内有效)", fontZH).setLocalDestination(title)));
        document.add(new Paragraph("\\n"));
        // 第七步,关闭document
        document.close();
        System.out.println(out);
        System.out.println("导出pdf成功~");
    }
}

添加jar包


<!--pdf-->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.9</version>
</dependency>

以上是关于自定义PDF导出的主要内容,如果未能解决你的问题,请参考以下文章

自定义PDF导出

如何在 gui python 中使用自定义名称导出 pdf?

如何自定义 jquery 数据表导出,例如 PDF Excel Print 和 CSV?

Winform中使用FastReport实现简单的自定义PDF导出

Thymeleaf实现自定义模板导出pdf或word

Adobe Acrobat DC 自定义批量动作(pdf 批量导出图片)