Itext 7 生成pdf带有背景图

Itext 7 生成pdf带有背景图并下载PDF到本地

引入jar包

		<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>itext7-core</artifactId>
			<version>7.0.3</version>
			<type>pom</type>
		</dependency>

代码实现

    @GetMapping(value = "itextPdfDownLoad")
    public void itextPdfDownLoad(HttpServletResponse response) throws IOException {
        response.reset();
        //设置文件编码
        response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
        response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("个人荣誉.PDF", "UTF-8"));
        response.setContentType("application/octet-stream;charset=UTF-8");
        OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
        PageSize pageSize = PageSize.A4.rotate();
        PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outputStream));
        Document doc = new Document(pdfDoc, pageSize);
        float[] f = new float[]{0.01f};
        Table table = new Table(UnitValue.createPercentArray(f));
        table.setWidth(745);
        Cell cell = new Cell();
        //设置表格边框颜色 这里设置的是白色
        cell.setBorder(new SolidBorder(new DeviceRgb(0xFFF, 0xFFF, 0xFFF),3));
        //设置插入字体
        PdfFont font = PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H",true);
        //背景图上写入汉字
        Paragraph p = new Paragraph("努尔哈赤")
                .setFont(font).setFontSize(13f).setFontColor(DeviceGray.BLACK);
        //写入汉字坐标
        p.setFirstLineIndent(140f);
        p.setFixedLeading(418f);
        cell.add(p);
        //获取表格背景图
        URL resource = this.getClass().getClassLoader().getResource("honour.png");
        assert resource != null;
        Image img = new Image(ImageDataFactory.create(resource.getPath()));

        cell.setNextRenderer(new ImageBackgroundCellRenderer(cell, img));
        cell.setHeight(590 * img.getImageHeight() / img.getImageWidth());

        table.addCell(cell);
        doc.add(table);

        doc.close();
        outputStream.flush();
    }

实现效果

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值