# function:给pdf添加水印、公章
from PyPDF2 import PdfFileWriter, PdfFileReader


# 所有路径为绝对路径
def add_watermark(pdf_file_in, pdf_file_mark, pdf_file_out):
    pdf_output = PdfFileWriter()
    pdf_input = PdfFileReader(open(pdf_file_in, 'rb'))

    # # PDF文件被加密了
    # if pdf_input.getIsEncrypted():
    #     print('该PDF文件被加密了.')
    #     # 尝试用空密码解密
    #     pdf_input.decrypt('')

    # 获取PDF文件的页数
    # pageNum = pdf_input.getNumPages()

    # pdf_input.
    # 读入水印pdf文件
    pdf_watermark = PdfFileReader(open(pdf_file_mark, 'rb'))
    pdf_watermark.getPage(0).scaleTo(43, 61)
    # 给每一页打水印
    # for i in range(pageNum):
    page = pdf_input.getPage(0)
    # print(dir(page))
    print(page.trimBox)  # 页面大小

    # page.mergePage(pdf_watermark.getPage(0))
    # page.mergeRotatedScaledTranslatedPage(pdf_watermark.getPage(0), 0, 1, tx=550, ty=788)
    # 把章盖在右上角
    page.mergeRotatedScaledTranslatedPage(pdf_watermark.getPage(0), 0, 1, tx=page.trimBox[2] - 45,
                                          ty=page.trimBox[3] - 54)
    # page.compressContentStreams()  # 压缩内容
    pdf_output.addPage(page)
    pdf_output.write(open(pdf_file_out, 'wb'))


add_watermark(pdf_file_in=r"xx\B1.pdf",
              pdf_file_mark=r"xx\watermark.pdf",
              pdf_file_out=r"xx\test2.pdf")

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐