欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用itextpdf完成打印预览功能

程序员文章站 2022-06-01 08:36:22
...

使用itextpdf完成打印预览功能

1、在pom文件添加itextpdf的jar(版本可以根据项目里面取定)

		<dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.10</version>
        </dependency>
        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.4</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>

2、编写代码 (直接上我写的小案例了)

@GetMapping("/caseMixPrint")
    public void caseMixPrint(HttpServletResponse response) {
        try {
            //设置中文
            BaseFont bfComic = BaseFont.createFont("STSong-Light",
                    "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
            //字体
            Font font1 = new Font(bfComic, 8, Font.NORMAL);
            //字体
            Font font2 = new Font(bfComic, 15, Font.NORMAL);
            // 告诉浏览器用什么软件可以打开此文件
            response.setHeader("content-Type", "application/pdf");
            response.setCharacterEncoding("utf-8");
            // 下载文件的默认名称
            Paragraph par = new Paragraph("这是标题啊" + "\n\n", new Font(bfComic, 18, Font.BOLD));
            //设置局中对齐
            par.setAlignment(Element.ALIGN_CENTER);
            PdfPCell pdfPCell19 = new PdfPCell(par);
            Document document = new Document();
            //将纸张设置为A4纸
            document.setPageSize(PageSize.A4);
            //设置上下左右边距
            //document.setMargins(35,30,0,0);
            PdfWriter.getInstance(document, response.getOutputStream());
            document.open();
            document.add(par);
            //每列宽度
            int widths[] = {10, 10, 10, 10};
            //列
            PdfPTable table = new PdfPTable(4);
            table.setWidthPercentage(98);
            PdfPCell pdfPCell = new PdfPCell();
            table.setWidths(widths);


            pdfPCell = new PdfPCell(new Paragraph("统计日期:" + new Date(), font2));
            pdfPCell.setVerticalAlignment(Element.ALIGN_LEFT);
            pdfPCell.setPaddingBottom(20);
            share(pdfPCell);
            pdfPCell.setColspan(2);
            table.addCell(pdfPCell);


            pdfPCell = new PdfPCell(new Paragraph("打印日期:" + new Date(), font2));
            pdfPCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
            pdfPCell.setVerticalAlignment(Element.ALIGN_RIGHT);
            pdfPCell.setPaddingBottom(20);
            pdfPCell.setPaddingLeft(20);
            share(pdfPCell);
            pdfPCell.setColspan(2);
            table.addCell(pdfPCell);
            
            /** 第一行 表头*/
            pdfPCell = new PdfPCell(new Paragraph("编号", font1));
            pdfPCell.setHorizontalAlignment(Element.ALIGN_CENTER);
            pdfPCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
            pdfPCell.setBorderWidthRight(0);
            table.addCell(pdfPCell);

            pdfPCell = new PdfPCell(new Paragraph("姓名", font1));
            pdfPCell.setHorizontalAlignment(Element.ALIGN_CENTER);
            pdfPCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
            pdfPCell.setBorderWidthRight(0);
            pdfPCell.setFixedHeight(20);
            table.addCell(pdfPCell);

            pdfPCell = new PdfPCell(new Paragraph("性别", font1));
            pdfPCell.setHorizontalAlignment(Element.ALIGN_CENTER);
            pdfPCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
            pdfPCell.setBorderWidthRight(0);
            pdfPCell.setFixedHeight(20);
            table.addCell(pdfPCell);

            pdfPCell = new PdfPCell(new Paragraph("年龄", font1));
            pdfPCell.setHorizontalAlignment(Element.ALIGN_CENTER);
            pdfPCell.setVerticalAlignment(Element.ALIGN_CENTER);
            pdfPCell.setFixedHeight(20);
            table.addCell(pdfPCell);


            /** 添加数据*/
            pdfPCell = new PdfPCell(new Paragraph("01", font1));
            pdfPCell.setHorizontalAlignment(Element.ALIGN_CENTER);
            pdfPCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
            pdfPCell.setBorderWidthRight(0);
            pdfPCell.setBorderWidthTop(0);
            table.addCell(pdfPCell);

            pdfPCell = new PdfPCell(new Paragraph("张三", font1));
            pdfPCell.setHorizontalAlignment(Element.ALIGN_CENTER);
            pdfPCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
            pdfPCell.setBorderWidthRight(0);
            pdfPCell.setBorderWidthTop(0);
            pdfPCell.setFixedHeight(20);
            table.addCell(pdfPCell);

            pdfPCell = new PdfPCell(new Paragraph("男", font1));
            pdfPCell.setHorizontalAlignment(Element.ALIGN_CENTER);
            pdfPCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
            pdfPCell.setBorderWidthRight(0);
            pdfPCell.setBorderWidthTop(0);
            pdfPCell.setFixedHeight(20);
            table.addCell(pdfPCell);

            pdfPCell = new PdfPCell(new Paragraph("12", font1));
            pdfPCell.setHorizontalAlignment(Element.ALIGN_CENTER);
            pdfPCell.setVerticalAlignment(Element.ALIGN_CENTER);
            pdfPCell.setFixedHeight(20);
            pdfPCell.setBorderWidthTop(0);
            table.addCell(pdfPCell);

            document.add(table);
            document.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
 public static void share(PdfPCell pdfPCell) {
        //去除上下左右的边框
        pdfPCell.setBorderWidthRight(0);
        pdfPCell.setBorderWidthBottom(0);
        pdfPCell.setBorderWidthLeft(0);
        pdfPCell.setBorderWidthTop(0);
    }

3、注意:

  1. 你可以在纸上大概画出来你想要的模样,每行有几列等

  2. 第一行的统计日期和打印日期一定要沾满设计的列(我这里是四列)使用itextpdf完成打印预览功能这个属性是合并列 后面数字是合并几列 两个刚好四列

  3. 在变写成功之后可能会出现列重合,也就是有的线条粗有的线条细,可以通过 pdfPCell.setBorderWidthRight(0);
    pdfPCell.setBorderWidthBottom(0);
    pdfPCell.setBorderWidthLeft(0);
    pdfPCell.setBorderWidthTop(0);来设置那里为0

还可以pdfPCel.setVerticalAlignment(PdfPCell.ALIGN_CENTER);//设置单元格的垂直对齐方式
pdfPCel.setHorizontalAlignment(Element.ALIGN_RIGHT);//设置单元格的水平对齐方式
里面还有很多属性,目前用的就是这么多,需要的还可以继续查询,祝你成功!

相关标签: itextpdf打印 java