【PDF添加印章】Java在PDF中添加指定尺寸大小的图片印章

文章目录

需求

需要在导出PDF时,添加指定大小为 4cm × 4cm 大小的图片印章

问题

客户提供的图片由 PhotoShop 导出,尺寸大小为 4cm × 4cm ,按说使用 itext 添加到 PDF 文件时,只需要保持 100% 缩放就能保证打印出预期的效果。

	FileOutputStream outputStream = new FileOutputStream("a.pdf");
	Document document = new Document();
	PdfWriter writer = PdfWriter.getInstance(document, outputStream);
	document.open();
	writer.getDirectContent();
	Image image = Image.getInstance("stamp.png");
	image.scalePercent(100);
	document.add(image);
	document.close();

但是,实际预览时,印章大约为预期效果的两倍,已经快有半张纸的大小了
在这里插入图片描述

解决

查阅资料发现,iext 默认的 DPI(每英寸像素)为 72,而客户提供的图片尺寸虽然为 40mm × 40mm,但为了保持图像清晰,DPI 设置了 144,这也就能解释为什么印章实际预览效果为原图的两倍了。

于是,我们使用 ImagescaleAbsolute 方法,通过计算来精确设置打印大小:

	/**
	 * 每英寸的像素
	 */
	public static final float DPI = 72f;

	/**
	 * 每毫米像素(1英寸=25.4毫米)
	 */
	public static final float DPMM = DPI / 25.4f;


	public static void main(String[] args) throws IOException, DocumentException {
		FileOutputStream outputStream = new FileOutputStream("a.pdf");
		Document document = new Document();
		PdfWriter writer = PdfWriter.getInstance(document, outputStream);
		document.open();
		writer.getDirectContent();
		Image image = Image.getInstance("stamp.png");
		// 设置印章大小为 40mm × 40mm
		image.scaleAbsolute(40 * DPMM, 40 * DPMM);
		document.add(image);
		document.close();
	}

这样就得到了最终想要的 4cm × 4cm 大小
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Nonoas

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

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

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

打赏作者

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

抵扣说明:

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

余额充值