itextPDF5.5.13 pdf加水印的权限控制

1、我们的需求需要对pdf加水印,其中有加密的和未加密的,

操作过程中发现 有的虽然加密了 但是符合PDFReader的五种加密算法,就可以成功破解加水印,还有一些就会抛出一些异常

第一种报错:com.itextpdf.text.exceptions.InvalidPdfException: Unknown encryption type R=6

这种是加密算法无法破解

还有些就是文件内容或者格式有问题

第二种报错:com.itextpdf.text.exceptions.InvalidPdfException: Rebuild failed: trailer not found.; Original message: Dictionary key 0 is not a name. at file pointer 589754
fileWrapper.notLike("file_title","Heavy Metals.pdf"); //PDF header signature not found

第三 种报错:com.itextpdf.text.exceptions.InvalidPdfException: Rebuild failed: '>' not expected at file pointer 454159; Original message: '>' not expected at file pointer 454159

第四种报错:java.io.EOFException: null

第五种报错:

com.itextpdf.text.exc
`iTextPDF` 是一个用于生成 PDF 文档的强大 Java 库。在 `iTextPDF 5.5.13` 版本中,`PdfContentByte` 类提供了一系列方法来操作 PDF 页面的内容,包括添文本、图像和水印等。如果你想在 PDF 中添一个粗的水印,你可以使用 `PdfContentByte` 的 `drawString()` 方法,并设置相应的字体样式。 以下是一个简单的示例,说明如何在 `PdfContentByte` 中添水印: ```java import com.itextpdf.text.*; import com.itextpdf.text.pdf.*; // 创建一个 PdfStamper 对象,用于在现有PDF上添内容 PdfStamper stamper = new PdfStamper(new PdfReader("input.pdf"), new FileOutputStream("output_with_watermark.pdf")); // 获取要添水印的页面 PdfContentByte canvas = stamper.getOverContent(pageNumber); // 设置字体和颜色 Font font = new Font(Font.FontFamily.HELVETICA, 12, Font.BOLD, BaseColor.YELLOW); // 12号粗黄色字体 // 添水印 canvas.drawString("YOUR_WATERMARK", x, y, font); // x, y是你想要绘制文字的位置 // 关闭资源 stamper.close(); ``` 其中,你需要将 `"input.pdf"` 替换为你的源PDF文件名,`pageNumber` 为你想要添水印PDF页面编号,`"YOUR_WATERMARK"` 是你要添水印内容,`x` 和 `y` 是文本在页面上的坐标位置。 相关问题: 1. 如何在 iTextPDF 中创建 `PdfContentByte` 对象? 2. `PdfContentByte` 的 `drawString()` 方法有哪些参数? 3. 如何在 iTextPDF 中设置文本的样式,如粗?
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值