繁体   English   中英

Python 给pdf文件加水印

[英]Python add watermark to pdf files

我编写代码为 pdf 文件添加水印,但是生成的文件不包含水印。

import os
import io
from PyPDF2 import PdfReader, PdfWriter
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

folder_path = 'D:/pdf/input/'
output_folder = 'D:/pdf/output/'
image_path = 'D:/pdf/watermark.jpg'
x, y = 50, 50
page_number = 1

if not os.path.exists(output_folder):
    os.makedirs(output_folder)

for pdf_file in os.listdir(folder_path):
    if pdf_file.endswith(".pdf"):
        pdf_reader = PdfReader(open(os.path.join(folder_path, pdf_file), "rb"))
        pdf_writer = PdfWriter()

        for page_num in range(len(pdf_reader.pages)):
            pdf_page = pdf_reader.pages[page_num]
            pdf_writer.add_page(pdf_page)

            if page_num == page_number - 1:
                packet = io.BytesIO()
                can = canvas.Canvas(packet, pagesize=letter)
                can.drawImage(image_path, x, y)
                can.save()
                packet.seek(0)
                new_pdf = PdfReader(packet)
                pdf_page.merge_page(new_pdf.pages[0])
        
        with open(os.path.join(output_folder, pdf_file), "wb") as output_file:
            pdf_writer.write(output_file)

print("Image added to the specified page of all pdf files and saved in the output folder.")

我试过更改图像 position 和页码,但仍然没有效果。 我希望在 pdf 文件中的特定位置添加水印。

固定的

import os
import io
from PyPDF2 import PdfReader, PdfWriter
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

folder_path = 'D:/pdf/pliki/'
output_folder = 'D:/pdf/output/'
sign_path = 'D:/pdf/obraz/podpis.png'

x_position = 300
y_position = 260
width =  150
height = 150

if not os.path.exists(output_folder):
    os.makedirs(output_folder)

packet = io.BytesIO()
can = canvas.Canvas(packet, pagesize=letter)
can.drawImage(sign_path, x_position, y_position, width, height, [112,113,112,113,112,113])
can.save()
packet.seek(0)
new_pdf = PdfReader(packet)

for pdf_file in os.listdir(folder_path):
    if pdf_file.endswith(".pdf"):
        pdf_reader = PdfReader(open(os.path.join(folder_path, pdf_file), "rb"))
        pdf_merged = pdf_reader.pages[0]
        pdf_merged.merge_page(new_pdf.pages[0])
        pdf_writer = PdfWriter()
        
        for i in range(len(pdf_reader.pages)):
            if i == 0:
                pdf_writer.add_page(pdf_merged)
            else:
                pdf_writer.add_page(pdf_reader.pages[i])

                     
        with open(os.path.join(output_folder, pdf_file), "wb") as output_file:
            pdf_writer.write(output_file)

print("Watermark added to the specified page of all pdf files and saved in the output folder.")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM