起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4012|回复: 6

[结贴] 请问itext7怎么插入透明图片或印章

[复制链接]

73

主题

345

帖子

1695

积分

金牌会员

Rank: 6Rank: 6

积分
1695
QQ
发表于 2016-11-1 08:26:38 | 显示全部楼层 |阅读模式
本帖最后由 kenminkajp 于 2016-11-1 08:37 编辑

业务需要,需往已有PDF模板中填入数据。同时还要在指定位置划圈(想通过插入圆圈的png图片来实现),求高手指点。
651C.tm.png

1

主题

1831

帖子

821

积分

高级会员

Rank: 4

积分
821
QQ
发表于 2016-11-1 10:55:21 | 显示全部楼层
回复 支持 反对

使用道具 举报

73

主题

345

帖子

1695

积分

金牌会员

Rank: 6Rank: 6

积分
1695
QQ
 楼主| 发表于 2016-11-1 19:53:46 | 显示全部楼层
本帖最后由 kenminkajp 于 2016-11-2 13:30 编辑

上述是个itext5的实例,ITEXT7和ITXT5不一样。
通过在PDF上画了个圈,来实现上述需求
PdfCanvas canvas = new PdfCanvas(pdf.getFirstPage())   //指定在第一页画图
                            .setStrokeColor(Color.BLACK)  //指定画笔色为黑
                            .setFillColor(Color.WHITE)  //指定填充色为白
                            .setLineWidth(1)                //指线宽为1
                            .circle(112, 623, 8)             //指画图坐标和画圆半径
                            .stroke();


回复 支持 反对

使用道具 举报

73

主题

345

帖子

1695

积分

金牌会员

Rank: 6Rank: 6

积分
1695
QQ
 楼主| 发表于 2016-11-2 13:34:20 | 显示全部楼层
本帖最后由 kenminkajp 于 2016-11-4 13:58 编辑

下述为itext7实现日语输出

// 定义字体和Unicode编码// 蓝色为字体存放路径,紫色为ITEXT支持的字体,红色为字体的编码(这里定义的UNICODE)
String fontPath = reportPath + "template/NotoSansCJKjp-Regular.otf";
PdfFont f = PdfFontFactory.createFont(fontPath, "Identity-H", false);

参考

要实现中文输出,只需把字体换成ITEXT认可的中文字体就可以。
回复 支持 反对

使用道具 举报

73

主题

345

帖子

1695

积分

金牌会员

Rank: 6Rank: 6

积分
1695
QQ
 楼主| 发表于 2016-11-2 14:12:46 | 显示全部楼层
// 插入透明图片
PdfCanvas canvas = new PdfCanvas(pdf.getFirstPage());
ImageData image = ImageDataFactory.create(fileName);
canvas.saveState();
PdfExtGState state = new PdfExtGState();
state.setFillOpacity(0.6f);
canvas.setExtGState(state);
canvas.addImage(image, 103, 614, true);
canvas.restoreState();
回复 支持 反对

使用道具 举报

73

主题

345

帖子

1695

积分

金牌会员

Rank: 6Rank: 6

积分
1695
QQ
 楼主| 发表于 2016-11-2 14:14:58 | 显示全部楼层
往指定位置插入图片(非透明)
Image maru  = new Image(ImageDataFactory.create(fileName));
Document doc = new Document(pdf);
maru.setFixedPosition(103, 614);           // 控制图片位置       
maru.scaleAbsolute(18, 18);                  // 控制图片大小       
doc.add(maru);
回复 支持 反对

使用道具 举报

1

主题

1831

帖子

821

积分

高级会员

Rank: 4

积分
821
QQ
发表于 2016-11-2 14:16:55 | 显示全部楼层
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-6-21 11:12 , Processed in 0.070047 second(s), 30 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表