watermark.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/usr/bin/python3.6
  2. # -*- coding: utf-8 -*-
  3. # @Author : lijunliang
  4. # @Email : lijunliang@topnet.net.cn
  5. # @File : watermark.py
  6. # @Software: PyCharm
  7. """
  8. pdf文件添加水印
  9. """
  10. from PyPDF2 import PdfFileReader, PdfFileWriter
  11. def add_watermark(pdf_file_in: str, pdf_file_out: str, watermark_file: str):
  12. """
  13. 把水印添加到pdf中
  14. :param pdf_file_in: 输入文件
  15. :param pdf_file_out: 输出文件
  16. :param watermark_file: 水印文件
  17. :return:
  18. """
  19. try:
  20. pdf_output = PdfFileWriter()
  21. input_stream = open(pdf_file_in, 'rb')
  22. pdf_input = PdfFileReader(input_stream, strict=False)
  23. # 获取PDF文件的页数
  24. pageNum = pdf_input.getNumPages()
  25. # 读入水印pdf文件
  26. output_stream = open(watermark_file, 'rb')
  27. pdf_watermark = PdfFileReader(output_stream)
  28. # 给每一页打水印
  29. for i in range(pageNum):
  30. page = pdf_input.getPage(i)
  31. page.mergePage(pdf_watermark.getPage(0))
  32. page.compressContentStreams() # 压缩内容
  33. pdf_output.addPage(page)
  34. save_stream = open(pdf_file_out, 'wb')
  35. pdf_output.write(save_stream)
  36. save_stream.close()
  37. input_stream.close()
  38. output_stream.close()
  39. return True
  40. except Exception as e:
  41. print(e)
  42. return False
  43. # if __name__ == '__main__':
  44. # pdf_file_in = '../0.pdf'
  45. # pdf_file_water = '../data/mark.pdf'
  46. # pdf_file_out = '../data/out.pdf'
  47. # add_watermark(pdf_file_in, pdf_file_out, pdf_file_water)