java 给pdf加水印

柔光的暖阳◎ 2023-06-21 10:21 33阅读 0赞

1、加入依赖

  1. <!--pdf加水印依赖-->
  2. <dependency>
  3. <groupId>com.itextpdf</groupId>
  4. <artifactId>itext-asian</artifactId>
  5. <version>5.2.0</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>com.itextpdf</groupId>
  9. <artifactId>itextpdf</artifactId>
  10. <version>5.4.3</version>
  11. </dependency>

2、上代码

  1. import com.itextpdf.text.DocumentException;
  2. import com.itextpdf.text.Image;
  3. import com.itextpdf.text.pdf.PdfContentByte;
  4. import com.itextpdf.text.pdf.PdfReader;
  5. import com.itextpdf.text.pdf.PdfStamper;
  6. /** * 将图片印到授权pdf中,若成功返回true,失败则返回false * @param imgBytes 图片字节码 * @param pdfTemplatePath pdf存放路径 * @param savePath 合成后pdf保存路径 * @return */
  7. public boolean pdfAddWatermark(byte[] imgBytes, String pdfTemplatePath, String savePath) throws BusinessException {
  8. PdfReader reader = null;
  9. PdfStamper stamp = null;
  10. Image img = null;
  11. try {
  12. String filePath = savePath.substring(0, savePath.lastIndexOf('/'));
  13. File file = new File(filePath);
  14. if(!file.exists()) {
  15. file.mkdirs();
  16. }
  17. reader = new PdfReader(pdfTemplatePath, "PDF".getBytes());
  18. stamp = new PdfStamper(reader, new FileOutputStream(savePath)); //加了水印后要输出的路径
  19. img = Image.getInstance(imgBytes);
  20. int pageSize = reader.getNumberOfPages(); //原pdf文件的总页数
  21. img.setAbsolutePosition(350, 300); //印章位置
  22. img.scalePercent(20); //印章大小
  23. for (int i = 1; i <= pageSize; i++) {
  24. // PdfContentByte under = stamp.getUnderContent(i); //背景被覆盖
  25. //文字被覆盖
  26. PdfContentByte under = stamp.getOverContent(i);
  27. //添加电子印章
  28. under.addImage(img);
  29. }
  30. return true;
  31. } catch (Exception e) {
  32. e.printStackTrace();
  33. } finally {
  34. try {
  35. stamp.close();
  36. reader.close();
  37. } catch (DocumentException e) {
  38. e.printStackTrace();
  39. } catch (IOException e) {
  40. e.printStackTrace();
  41. }
  42. }
  43. }

发表评论

表情:
评论列表 (有 0 条评论,33人围观)

还没有评论,来说两句吧...

相关阅读