java后台导出pdf,基础用法和样例

1.首先添加依赖

		<dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.10</version>
            </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
           <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>

2.最基础的用法为:

		// 1.新建document对象
        Document document = new Document();

        // 2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。
        // 创建 PdfWriter 对象 第一个参数是对文档对象的引用,第二个参数是文件的实际名称,在该名称中还会给出其输出路径。
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("D:/test.pdf"));


        Anchor anchorTarget = new Anchor("ccccccccccccccccc");
        anchorTarget.setName("bbbbbbbbbbbbbbbb");
        Paragraph paragraph1 = new Paragraph();

        paragraph1.setSpacingBefore(50);

        paragraph1.add(anchorTarget);
        document.add(paragraph1);

        // 3.打开文档
        document.open();

        // 4.添加一个内容段落
        document.add(new Paragraph("Hello World!"));

        // 5.关闭文档
        document.close();

3.我曾经写过的一个项目中的例子(最后有效果图):

Map resultMap = new HashMap();

        resultMap.put("RWBH",rwbh);

        Map rwList = mybatisRepository.selectOne(this.namespace + "queryRwxx", resultMap);
        List<Map> ldList = mybatisRepository.selectByParams(this.namespace + "queryLdxx", resultMap);
        // 定义全局的字体静态变量
        Font titlefont;
        Font headfont;
        Font keyfont;
        Font textfont = null;
        // 最大宽度
        try {
            // 不同字体(这里定义为同一种字体:包含不同字号、不同style)
            BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
            titlefont = new Font(bfChinese, 16, Font.BOLD);
            headfont = new Font(bfChinese, 14, Font.BOLD);
            keyfont = new Font(bfChinese, 10, Font.BOLD);
            textfont = new Font(bfChinese, 15, Font.NORMAL);

        } catch (Exception e) {
            e.printStackTrace();
        }
        BaseFont bf;
        Font font = null;
        try {
            bf = BaseFont.createFont( "STSong-Light", "UniGB-UCS2-H",
                    BaseFont.NOT_EMBEDDED);//创建字体
            font = new Font(bf,20,Font.BOLD);//使用字体
        } catch (Exception e) {
            e.printStackTrace();
        }
        Document document = new Document(new RectangleReadOnly(842F, 595F));
        try {
            String filePath="E:/file/dzld/"+rwbh+".pdf";
            PdfWriter.getInstance(document, new FileOutputStream(filePath));
                document.open();
                Paragraph paragraph=new Paragraph("运输服务路单汇总表",font);
                paragraph.setAlignment(1);
                document.add(paragraph);//引用字体

                float[] widths = {25f,25f,25f,25f,25f,25f,25f,25f};// 设置表格的列宽和列数 默认是4列
                PdfPTable table = new PdfPTable(widths);// 建立一个pdf表格
                table.setSpacingBefore(20f);
                table.setWidthPercentage(100);// 设置表格宽度为100%

                PdfPCell cell = null;
                //第一行
                cell = new PdfPCell(new Paragraph("优选编号",textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setFixedHeight(50);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("RWBH")),textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph("任务名称",textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("RWMC")),textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                table.addCell(cell);

                //第2行
                cell = new PdfPCell(new Paragraph("车牌号",textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setFixedHeight(50);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("CPH")),textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph("车型",textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("CXMC")),textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                table.addCell(cell);

                //第3行
                cell = new PdfPCell(new Paragraph("用车单位",textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setFixedHeight(50);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("FQDWMC")),textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph("派车单位",textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("JDDWMC")),textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                table.addCell(cell);

                //第4行
                cell = new PdfPCell(new Paragraph("起止时间",textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setFixedHeight(50);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("ZZKGSJ"))+"至"+StringUtil.null2blank(rwList.get("ZWWGSJ")),textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph("总工作量",textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("ZGZL")),textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph("总运费",textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph(StringUtil.null2blank(rwList.get("ZYF")),textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(cell);



                //第5行
                cell = new PdfPCell(new Paragraph("开始时间",textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setFixedHeight(50);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph("结束时间",textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph("工作量",textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph("单价",textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph("运费(元)",textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph("桥路费(元)",textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph("甲方现场人员",textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(cell);

                cell = new PdfPCell(new Paragraph("路单复核人",textfont));//
                cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                table.addCell(cell);

                String LKGSJ="";
                String LWGSJ="";
                String GZL="";
                String DJ="";
                String YF="";
                String QLF="";
                String JFXCRY="";
                String FHRMC="";
                if (ldList.size()>0){
                    for (int i = 0; i <ldList.size(); i++) {
                        LKGSJ=StringUtil.null2blank(ldList.get(i).get("LKGSJ"));
                        LWGSJ=StringUtil.null2blank(ldList.get(i).get("LWGSJ"));
                        GZL=StringUtil.null2blank(ldList.get(i).get("FHGZL"));
                        DJ=StringUtil.null2blank(ldList.get(i).get("FHDJ"));
                        YF=StringUtil.null2blank(ldList.get(i).get("FHYF"));
                        QLF=StringUtil.null2blank(ldList.get(i).get("FHQLF"));
                        JFXCRY=StringUtil.null2blank(ldList.get(i).get("JFXCRY"));;
                        FHRMC=StringUtil.null2blank(ldList.get(i).get("FHRMC"));

                        //设置编号单元格
                        PdfPCell cell11=new PdfPCell(new Paragraph(LKGSJ,textfont));
                        PdfPCell cell22=new PdfPCell(new Paragraph(LWGSJ,textfont));
                        PdfPCell cell33=new PdfPCell(new Paragraph(GZL,textfont));
                        PdfPCell cell44=new PdfPCell(new Paragraph(DJ,textfont));
                        PdfPCell cell55=new PdfPCell(new Paragraph(YF,textfont));
                        PdfPCell cell66=new PdfPCell(new Paragraph(QLF,textfont));
                        PdfPCell cell77=new PdfPCell(new Paragraph(JFXCRY,textfont));
                        PdfPCell cell88=new PdfPCell(new Paragraph(FHRMC,textfont));

                        //单元格水平对齐方式
                        cell11.setHorizontalAlignment(Element.ALIGN_CENTER);
                        cell11.setVerticalAlignment(cell.ALIGN_MIDDLE);
                        cell11.setFixedHeight(50);
                        //单元格垂直对齐方式

                        cell22.setHorizontalAlignment(Element.ALIGN_CENTER);
                        cell22.setVerticalAlignment(Element.ALIGN_CENTER);
                        cell22.setVerticalAlignment(cell.ALIGN_MIDDLE);

                        cell33.setHorizontalAlignment(Element.ALIGN_CENTER);
                        cell33.setVerticalAlignment(Element.ALIGN_CENTER);
                        cell33.setVerticalAlignment(cell.ALIGN_MIDDLE);

                        cell44.setHorizontalAlignment(Element.ALIGN_CENTER);
                        cell44.setVerticalAlignment(Element.ALIGN_CENTER);
                        cell44.setVerticalAlignment(cell.ALIGN_MIDDLE);

                        cell55.setHorizontalAlignment(Element.ALIGN_CENTER);
                        cell55.setVerticalAlignment(Element.ALIGN_CENTER);
                        cell55.setVerticalAlignment(cell.ALIGN_MIDDLE);

                        cell66.setHorizontalAlignment(Element.ALIGN_CENTER);
                        cell66.setVerticalAlignment(Element.ALIGN_CENTER);
                        cell66.setVerticalAlignment(cell.ALIGN_MIDDLE);

                        cell77.setHorizontalAlignment(Element.ALIGN_CENTER);
                        cell77.setVerticalAlignment(Element.ALIGN_CENTER);
                        cell77.setVerticalAlignment(cell.ALIGN_MIDDLE);

                        cell88.setHorizontalAlignment(Element.ALIGN_CENTER);
                        cell88.setVerticalAlignment(Element.ALIGN_CENTER);
                        cell88.setVerticalAlignment(cell.ALIGN_MIDDLE);

                        table.addCell(cell11);
                        table.addCell(cell22);
                        table.addCell(cell33);
                        table.addCell(cell44);
                        table.addCell(cell55);
                        table.addCell(cell66);
                        table.addCell(cell77);
                        table.addCell(cell88);
                    }
                    document.add(table);
                    document.close();
                }
            upload(rwbh);
        } catch (Exception e) {
            System.out.println("file create exception");
        }

4.效果图
在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开始程序猿生涯的第二年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值