Java给PDF添加图片水印,且可以文字定位

        这两天公司开发需要对PDF增加特定图片,类似于电子印章效果,试了许多网上的方式,经过测试PDF只可以插入图片或者通过RSA实现专属签章,我觉得插入图片好用一些,效果如下:

这是定位了《盖章》最后一次出现的位置

        放大后仔细观看可发现,印章处于黑线下面,这是因为此处插入的是图片,通过分层将图片置于底层,图片的背景必须为白色,不然图片背景也会显现出来,就像这样:

        如果你的项目不需要考虑PDF可能更换背景色的情况(大部分PDF文件都是白色背景色),只是单纯得在指定位置加图片,那么你的图片可任意;若你像我一样做电子印章,且需要考虑背景色,那么你的图片背景色必须为白色,这是我在百度随便找的图片,仅供参考:

 

提示:若考虑背景色,在非白色下,不透明度为100%时,由于颜色太重,会盖住图片;我找了很久,暂未找到修改PDF背景色透明度的方法。

        若上面的效果与你的项目的预期一致,那么下面就开始粘贴代码吧。

1. 依赖:

		<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>itextpdf</artifactId>
			<version>5.5.13</version>
		</dependency>

2. Java代码:

@Slf4j
public class ImageUtil {

	
	 /**
	  * pdf插入电子印章水印
	  * @param templatePath 原pdf文件路径
	  * @param targetPath	生成文件输出路径
	  * @param imagePath	图片文件路径
	  * @param keyword		关键字
	  */
	public static void imageWaterMark(String templatePath,String targetPath,String imagePath,String keyword) {
		
	    try {
			File pdfFile = new File(templatePath);
			byte[] pdfData = new byte[(int) pdfFile.length()];
			FileInputStream inputStream = null;
			try {
				inputStream = new FileInputStream(pdfFile);
				inputStream.read(pdfData);
			} catch (IOException e) {
				log.erro
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

郭同志

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

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

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

打赏作者

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

抵扣说明:

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

余额充值