iText操作pdf

最近有个任务是动态的创建pdf根据获取到的内容,百度到的知识点都比较零散,官方文档想必大家也不容易看懂。下文是我做出的汇总``

    <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.24</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13.3</version>
        </dependency>
public class CreatePdfUtils {

    public static void create(){
    	//准备
        File file = new File("C:\\code\\base-project-backend\\pdf\\"+"1.pdf");
        Document document = new Document();
        PdfWriter.getInstance(document,new FileOutputStream(file));
        document.open();
        document.setPageSize(PageSize.A4);        //这是第一页的尺寸大小
        document.add(new Paragraph("hello"));        //这是第一页的内容
        Rectangle rectangle = new Rectangle(1111, 1111); //这是第二页的尺寸大小
        rectangle.setBackgroundColor(new BaseColor(11,11,11));//这是第二页的背景颜色
        document.setPageSize(rectangle); //在这里设置第二页
        document.newPage();    //这里是真正创建第二页
        document.add(new Paragraph("wordld"));//第二页增加内容
        //结束
        document.close();
   

    }
}

接下来还会继续完善

 public static void createPdf(){
        File file = new File("C:\\code\\base-project-backend\\shiting-module-system\\shiting-module-system-biz\\src\\main\\java\\com\\shiting\\basic\\module\\system\\controller\\admin\\pdf1.pdf");
        Document document = new Document(PageSize.B4.rotate());
        try {
        //引入中文字体,一般从c:\\windows\\Fonts下找到
            BaseFont bfChinese = BaseFont.createFont("shiting-module-system/shiting-module-system-biz/src/main/java/com/shiting/basic/module/system/util/simfang.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            Font fontH1 = new Font(bfChinese, 25, Font.BOLD);//字体1
            Font fontH2 = new Font(bfChinese, 12, Font.NORMAL);//字体2
            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
            document.open();
            Paragraph p3 = new Paragraph("黄河流域历史遗留矿山调查送检样品交接表单",fontH1);
            p3.setAlignment(Element.ALIGN_CENTER);
            p3.setSpacingAfter(25);
            document.add(p3);
            PdfPTable pdfPTable = new PdfPTable(4);
            pdfPTable.setHorizontalAlignment(Element.ALIGN_CENTER);
            pdfPTable.setWidthPercentage(100);
            pdfPTable.setTotalWidth(new float[]{200,200,240,240});
            pdfPTable.setLockedWidth(true);
            //开始填充表格
            PdfPCell pdfPCell1 = new PdfPCell(new Phrase("批次编号:" + "20231019172338", fontH2));
            pdfPCell1.setBorderColor(new BaseColor(255,255,255));
            pdfPTable.addCell(pdfPCell1);
            PdfPCell pdfPCell2 = new PdfPCell(new Phrase("样品总数:" + "12", fontH2));
            pdfPCell2.setBorderColor(new BaseColor(255,255,255));
            pdfPTable.addCell(pdfPCell2 );
            PdfPCell pdfPCell3 = new PdfPCell(new Phrase("开始采样开始时间:" + "2023-10-10 13:31:12", fontH2));
            pdfPCell3.setBorderColor(new BaseColor(255,255,255));
            pdfPTable.addCell( pdfPCell3);
            PdfPCell pdfPCell4 = new PdfPCell(new Phrase("收样完成时间:" + "2024-10-10 13:31:12", fontH2));
            pdfPCell4.setBorderColor(new BaseColor(255,255,255));
            pdfPTable.addCell( pdfPCell4);
            PdfPCell pdfPCell5 = new PdfPCell(new Phrase("固体废物样品总数:" + "10", fontH2));
            pdfPCell5.setBorderColor(new BaseColor(255,255,255));
            pdfPTable.addCell( pdfPCell5);
            PdfPCell pdfPCell6 = new PdfPCell(new Phrase("酸性废水样品总数:" + "1", fontH2));
            pdfPCell6.setBorderColor(new BaseColor(255,255,255));
            pdfPTable.addCell( pdfPCell6);
            PdfPCell pdfPCell7 = new PdfPCell(new Phrase("灌溉水总样:" + "0", fontH2));
            pdfPCell7.setBorderColor(new BaseColor(255,255,255));
            pdfPTable.addCell(pdfPCell7);
            PdfPCell pdfPCell8 = new PdfPCell(new Phrase("底泥样总数:" + "0", fontH2));
            pdfPCell8.setBorderColor(new BaseColor(255,255,255));
            pdfPTable.addCell(pdfPCell8);
            PdfPCell pdfPCell9 = new PdfPCell(new Phrase("土壤样总数:" + "0", fontH2));
            pdfPCell9.setBorderColor(new BaseColor(255,255,255));
            pdfPTable.addCell( pdfPCell9);
            PdfPCell pdfPCell10 = new PdfPCell(new Phrase("收样退回重新采样数量:" + "0", fontH2));
            pdfPCell10.setBorderColor(new BaseColor(255,255,255));
            pdfPTable.addCell( pdfPCell10);
            PdfPCell pdfPCell11 = new PdfPCell(new Phrase("承运单位:" + "", fontH2));
            pdfPCell11.setBorderColor(new BaseColor(255,255,255));
            pdfPTable.addCell(pdfPCell11);
            PdfPCell pdfPCell12 = new PdfPCell(new Phrase("运输方式:" + "汽车运输", fontH2));
            pdfPCell12.setBorderColor(new BaseColor(255,255,255));
            pdfPTable.addCell(pdfPCell12);
            pdfPTable.setSpacingAfter(10);
            document.add(pdfPTable);
            PdfPTable pdfPTable2 = new PdfPTable(10);
            pdfPTable2.setHorizontalAlignment(Element.ALIGN_CENTER);

            pdfPTable2.setWidthPercentage(100);
            pdfPTable2.setTotalWidth(new float[]{20,120,70,40,95,95,95,95,50,200});
            pdfPTable2.setLockedWidth(true);
            PdfPCell pCell1 = new PdfPCell(new Phrase("序号", fontH2));
            pCell1.setVerticalAlignment(Element.ALIGN_CENTER);
            pCell1.setHorizontalAlignment(Element.ALIGN_CENTER);
            pdfPTable2.addCell(pCell1 );
            PdfPCell pCell2 = new PdfPCell(new Phrase("字样编号", fontH2));
            pCell2.setVerticalAlignment(Element.ALIGN_CENTER);
            pCell2.setHorizontalAlignment(Element.ALIGN_CENTER);
            pdfPTable2.addCell(pCell2 );
            PdfPCell pCell3 = new PdfPCell(new Phrase("样品类型", fontH2));
            pCell3.setVerticalAlignment(Element.ALIGN_CENTER);
            pCell3.setHorizontalAlignment(Element.ALIGN_CENTER);
            pdfPTable2.addCell( pCell3);
            PdfPCell pCell4 = new PdfPCell(new Phrase("容器与保护剂", fontH2));
            pCell4.setHorizontalAlignment(Element.ALIGN_CENTER);
            pCell4.setVerticalAlignment(Element.ALIGN_CENTER);
            pdfPTable2.addCell(pCell4 );
            PdfPCell pCell5 = new PdfPCell(new Phrase("测试项目分类", fontH2));
            pCell5.setVerticalAlignment(Element.ALIGN_CENTER);
            pCell5.setHorizontalAlignment(Element.ALIGN_CENTER);
            pdfPTable2.addCell( pCell5);
            PdfPCell pCell6 = new PdfPCell(new Phrase("取样时间", fontH2));
            pCell6.setVerticalAlignment(Element.ALIGN_CENTER);
            pCell6.setHorizontalAlignment(Element.ALIGN_CENTER);
            pdfPTable2.addCell( pCell6);
            PdfPCell pCell7 = new PdfPCell(new Phrase("收样时间", fontH2));
            pCell7.setHorizontalAlignment(Element.ALIGN_CENTER);
            pCell7.setVerticalAlignment(Element.ALIGN_CENTER);
            pdfPTable2.addCell(pCell7);
            PdfPCell pCell8 = new PdfPCell(new Phrase("有效保存时间", fontH2));
            pCell8.setVerticalAlignment(Element.ALIGN_CENTER);
            pCell8.setHorizontalAlignment(Element.ALIGN_CENTER);
            pdfPTable2.addCell( pCell8);
            PdfPCell pCell9 = new PdfPCell(new Phrase("是否合格样品", fontH2));
            pCell9.setHorizontalAlignment(Element.ALIGN_CENTER);
            pCell9.setVerticalAlignment(Element.ALIGN_CENTER);
            pdfPTable2.addCell( pCell9);
            PdfPCell pCell10 = new PdfPCell(new Phrase("不合格情况说明", fontH2));
            pCell10.setVerticalAlignment(Element.ALIGN_CENTER);
            pCell10.setHorizontalAlignment(Element.ALIGN_CENTER);
            pdfPTable2.addCell( pCell10);
            ArrayList<jiaojiebiao> jiaojiebiaos = new ArrayList<>();
            for (int i = 0; i <12 ; i++) {
                jiaojiebiao jiaojiebiao = new jiaojiebiao();
                jiaojiebiao.setId(String.valueOf(i));
                jiaojiebiao.setChildNum("522023z4G2j8Zjx"+i);
                jiaojiebiao.setType("酸性废水");
                jiaojiebiao.setCategory("酸性废水pH和重金属八项"+i);
                jiaojiebiao.setDate1("2023-10-10 14:12:48");
                jiaojiebiao.setDate2("2023-11-10 14:12:48");
                jiaojiebiao.setDate3("2023-12-10 14:12:48");
                jiaojiebiao.setPass("是");
                if(i==6){
                    jiaojiebiao.setPass("否");
                    jiaojiebiao.setDetail("这个不合格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                }
                jiaojiebiaos.add(jiaojiebiao);
            }
            for (jiaojiebiao jiaojiebiao : jiaojiebiaos) {
                PdfPCell cell1 = new PdfPCell(new Phrase(jiaojiebiao.getId(), fontH2));
                cell1.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell1.setVerticalAlignment(Element.ALIGN_CENTER);
                pdfPTable2.addCell(cell1);
                PdfPCell cell2 = new PdfPCell(new Phrase(jiaojiebiao.getChildNum(), fontH2));
                cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell2.setVerticalAlignment(Element.ALIGN_CENTER);
                pdfPTable2.addCell(cell2);
                PdfPCell cell3 = new PdfPCell(new Phrase(jiaojiebiao.getType(), fontH2));
                cell3.setHorizontalAlignment(Element.ALIGN_CENTER);
                pdfPTable2.addCell(cell3);
                pdfPTable2.addCell(new Phrase(jiaojiebiao.getContainer(),fontH2));
                pdfPTable2.addCell(new Phrase(jiaojiebiao.getCategory(),fontH2));
                PdfPCell cell6 = new PdfPCell(new Phrase(String.valueOf(jiaojiebiao.getDate1()), fontH2));
                cell6.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell6.setVerticalAlignment(Element.ALIGN_CENTER);
                pdfPTable2.addCell(cell6);
                PdfPCell cell7 = new PdfPCell(new Phrase(String.valueOf(jiaojiebiao.getDate2()), fontH2));
                cell7.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell7.setVerticalAlignment(Element.ALIGN_CENTER);
                pdfPTable2.addCell(cell7);
                PdfPCell cell8 = new PdfPCell(new Phrase(String.valueOf(jiaojiebiao.getDate3()), fontH2));
                cell8.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell8.setVerticalAlignment(Element.ALIGN_CENTER);
                pdfPTable2.addCell(cell8);
                PdfPCell cell9= new PdfPCell(new Phrase(jiaojiebiao.getPass(), fontH2));
                cell9.setVerticalAlignment(Element.ALIGN_CENTER);
                cell9.setHorizontalAlignment(Element.ALIGN_CENTER);
                pdfPTable2.addCell(cell9);
                pdfPTable2.addCell(new Phrase(jiaojiebiao.getDetail(),fontH2));
            }
            pdfPTable2.setSpacingAfter(10);
            document.add(pdfPTable2);
            PdfPTable pdfPTable3 = new PdfPTable(4);
            pdfPTable3.setHorizontalAlignment(Element.ALIGN_CENTER);
            pdfPTable3.setWidthPercentage(100);
            pdfPTable3.setTotalWidth(new float[]{70,470,200,140});
            pdfPTable3.setLockedWidth(true);
            PdfPCell bCell1 = new PdfPCell(new Phrase("收样单位:",fontH2));
            bCell1.setBorderColor(new BaseColor(255,255,255));
            pdfPTable3.addCell(bCell1);
            PdfPCell bCell2 = new PdfPCell(new Phrase("贵州绿环科技检测有限公司",fontH2));
            bCell2.setBorderColor(new BaseColor(255,255,255));
            pdfPTable3.addCell(bCell2);
            PdfPCell bCell3 = new PdfPCell(new Phrase("收样人(签字):",fontH2));
            bCell3.setBorderColor(new BaseColor(255,255,255));
            pdfPTable3.addCell(bCell3);
            PdfPCell bCell4 = new PdfPCell(new Phrase(""));
            bCell4.setBorderColor(new BaseColor(255,255,255));
            pdfPTable3.addCell(bCell4);
            PdfPCell bCell5 = new PdfPCell(new Phrase("送样单位:",fontH2));
            bCell5.setBorderColor(new BaseColor(255,255,255));
            pdfPTable3.addCell(bCell5);
            PdfPCell bCell6 = new PdfPCell(new Phrase("贵州黔大生态环境与健康研究院有限公司",fontH2));
            bCell6.setBorderColor(new BaseColor(255,255,255));
            pdfPTable3.addCell(bCell6);
            PdfPCell bCell7 = new PdfPCell(new Phrase("送样人(签字):",fontH2));
            bCell7.setBorderColor(new BaseColor(255,255,255));
            pdfPTable3.addCell(bCell7);
            PdfPCell bCell8= new PdfPCell(new Phrase(""));
            bCell8.setBorderColor(new BaseColor(255,255,255));
            pdfPTable3.addCell(bCell8);
            document.add(pdfPTable3);
            document.close();

        } catch (DocumentException e) {
            throw new RuntimeException(e);
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值