itextpdf 生成pdf

           //文档对象  实现A4纸页面
            Document document = new Document(PageSize.A4);
            //document.setMarginMirroring(true);
            //设置文档的页边距就是距离页面边上的距离,分别为:左边距,右边距,上边距,下边距
            document.setMargins(70, 70, 20, 10);
            //这个是生成破pdf的位置以及名称
            String fileName = "C:\\Users\\Desktop\\" + System.currentTimeMillis() + ".pdf";
            PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(fileName));
            //打开文档
            document.open();
            // 加载字体,因为我们标题和正文可能用的不是同一种字体,所以我们创建两种字体
            //有其他需求的就可以创建更多的字体
            //字体都是电脑自带的,如果你想要的电脑没有,就去网上下载
            //创建标题字体
 BaseFont title = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
            //创建正文字体

BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
            //上面是基础的字体,代表使用哪一种字体,下面设置的是字体的字号,粗细等等属性
            //使用上面的title 字体 加粗,这个是标题字体
            Font titleFont = new Font(title, 22, Font.BOLD);
            //使用字体,正文字体
            Font font = new Font(bf, 16);
            // 这个是我们动态填充的字体,Font.UNDERLINE带下划线的
            Font underlineFont = new Font(bf, 16, Font.UNDERLINE); 

            // -------------------设置 二维码图片 ----------------
            // 加入水印
            waterMar = pdfWriter.getDirectContentUnder();
            // 开始设置水印图片
            waterMar.beginText();
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            //QrCodeUtils.createQrCodeBufferdImage这个方法就是将网址变成二维码图片
            ImageIO.write(QrCodeUtils.createQrCodeBufferdImage("https://www.baidu.com",
                    100, 100), "png", out);
            byte[] b = out.toByteArray();
            Image itextimage = Image.getInstance(b);
            // 水印图片位置 第一个参数为x轴,第二个参数为y轴
            itextimage.setAbsolutePosition(120, 410);
            // 附件加上水印图片
            waterMar.addImage(itextimage);
            //结束设置
            waterMar.endText();
            waterMar.stroke();

            // -------------------设置 段落 ----------------
            //这里面可以设置段落和短语(块),如果是那种固定文字的段落就可以用段落
            //如果我们需要生成的段落里有需要动态填充的就用块,一点一点的拼起来,直到达到我们的效果
            //段落
            Paragraph p = null;
            p = new Paragraph("哈哈哈哈哈哈哈哈哈哈哈哈哈哈", titleFont);
            p.setLeading(30);
            p.setAlignment(Element.ALIGN_CENTER);//设置对齐方式,这个是居中对齐
            document.add(p);
            p = new Paragraph("哈哈哈哈哈哈哈", titleFont);
            p.setLeading(30);
            p.setAlignment(Element.ALIGN_CENTER);//设置对齐方式
            document.add(p);

            p = new Paragraph();
            //短语
            Phrase ph = new Phrase();
            //块
            ph.add(new Chunk("哈哈哈哈哈哈哈", font));
            ph.add(new Chunk("2022" + " ", underlineFont));//年份
            ph.add(new Chunk("第", font));
            ph.add(new Chunk("100" + " ", underlineFont));// 号数
            ph.add(new Chunk("号", font));
            p.add(ph);
            p.setSpacingBefore(20);//段落与段落的间距,我们一个ph就组成一个段落
            p.setAlignment(Element.ALIGN_RIGHT);//设置对齐方式,右对齐
            p.setLeading(20);//行间距
            document.add(p);

            p = new Paragraph();
            ph = new Phrase();
            ph.add(new Chunk("哈哈哈哈哈哈哈:", underlineFont));//机构名称
            p.add(ph);
            //设置和上行的间隔
            p.setSpacingBefore(10);
            //p.setLeading(20);
            document.add(p);

            p = new Paragraph();
            ph = new Phrase();
            ph.add(new Chunk("    哈哈哈哈哈哈哈", font));
            ph.add(new Chunk("哈哈哈哈哈哈哈1", underlineFont));//项目名称
            ph.add(new Chunk("哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈2", font));
            ph.add(new Chunk("哈哈哈哈哈哈哈3", underlineFont));//医院名称
            ph.add(new Chunk("哈哈哈哈哈哈哈4", font));
            ph.add(new Chunk("哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈5", underlineFont));//建设项目名称
            ph.add(new Chunk("哈哈哈哈哈哈哈哈哈哈哈哈哈哈6", font));
            ph.add(new Chunk("哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈7", underlineFont));//号
            ph.add(new Chunk("哈哈哈哈哈哈哈8", font));
            //ph.setMultipliedLeading(20);
            p.add(ph);
            p.setSpacingBefore(5);
            p.setLeading(30);
            document.add(p);

            p = new Paragraph();
            ph = new Phrase();
            ph.add(new Chunk("    哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈9", font));
            ph.add(new Chunk("哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈10", underlineFont));//项目名称
            ph.add(new Chunk("哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈11", font));
            p.add(ph);
            p.setSpacingBefore(5);
            p.setLeading(30);
            document.add(p);

            p = new Paragraph();
            ph = new Phrase();
            ph.add(new Chunk("    哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈12。", font));
            p.add(ph);
            p.setSpacingBefore(5);
            p.setLeading(30);
            document.add(p);


            p = new Paragraph();
            ph = new Phrase();
            ph.add(new Chunk("    此复", font));
            p.add(ph);
            p.setSpacingBefore(5);
            p.setLeading(30);
            document.add(p);


            p = new Paragraph();
            ph = new Phrase();
            ph.add(new Chunk("哈哈哈哈哈哈哈哈哈哈哈哈哈哈13", font));
            p.add(ph);
            p.setSpacingBefore(5);
            p.setAlignment(Element.ALIGN_RIGHT);//设置对齐方式
            p.setLeading(30);
            document.add(p);

            p = new Paragraph();
            ph = new Phrase();
            String date = DateUtil.now();
            ph.add(new Chunk(date.substring(0, 4) + " ", underlineFont));//年
            ph.add(new Chunk("年", font));
            ph.add(new Chunk(date.substring(5, 7) + " ", underlineFont));//月
            ph.add(new Chunk("月", font));
            ph.add(new Chunk(date.substring(8, 10) + " ", underlineFont));//日
            ph.add(new Chunk("日", font));
            p.add(ph);
            p.setSpacingBefore(5);
            p.setAlignment(Element.ALIGN_RIGHT);//设置对齐方式
            p.setLeading(30);
            document.add(p);

            document.close();
            pdfWriter.close();
            System.out.println("创建成功!");

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

    }
}
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值