Agregue una marca de agua a PDF usando PyMuPDF

Una publicación de blog sobre cómo agregar marcas de agua en PDF usando Python.
C:\pythoncode\nuevo\pdfwatermark.py
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Agregar marca de agua a PDF usando Python

En nuestro trabajo diario, a menudo necesitamos procesar archivos PDF. Una de las necesidades comunes es agregar una marca de agua a un archivo PDF para proteger los derechos de autor del archivo o para identificar la fuente del archivo. Este artículo presentará cómo agregar marcas de agua a archivos PDF utilizando el lenguaje de programación Python y la biblioteca PyMuPDF.

Preparación

Antes de comenzar, asegúrese de que estén instalados los siguientes componentes:

  • Entorno de programación Python
  • Biblioteca PyMuPDF

La biblioteca PyMuPDF se puede instalar usando el comando pip:


pip install PyMuPDF

escribir codigo

Primero, necesitamos importar las bibliotecas requeridas:

import fitz

A continuación, creamos una función para agregar una marca de agua a cada página del archivo PDF:

def add_watermark_to_pdf(pdf_path, watermark_text, output_path):
    try:
        doc = fitz.open(pdf_path)
        watermark_text = str(watermark_text)

        for page in doc:
            textbox = fitz.Rect(100, 100, 300, 200)  # 设置水印的位置和大小
            page.insert_textbox(textbox, watermark_text, fontsize=20, rotate=90)

        doc.save(output_path)
        doc.close()

        print("水印添加成功!")
    except Exception as e:
        print("添加水印时出错:", str(e))

En el código anterior, abrimos el archivo PDF, iteramos sobre cada página y luego usamos insert_textbox()el método para agregar la marca de agua a cada página.

Ejemplo de uso

A continuación, podemos usar la función anterior para agregar la marca de agua.

pdf_path = "input.pdf"
watermark_text = "我的水印"
output_path = "output.pdf"

add_watermark_to_pdf(pdf_path, watermark_text, output_path)

En el ejemplo anterior, especificamos la ruta al archivo PDF de entrada, el texto de la marca de agua para agregar y la ruta al archivo de salida. Después de ejecutar el código, se generará un archivo PDF con una marca de agua en la ruta de salida.

todos los codigos

import wx
import fitz

class WatermarkFrame(wx.Frame):
    def __init__(self, parent, title):
        super(WatermarkFrame, self).__init__(parent, title=title, size=(400, 200))
        
        panel = wx.Panel(self)
        
        # 创建选择文件按钮
        self.file_picker = wx.FilePickerCtrl(panel, style=wx.FLP_OPEN)
        
        # 创建水印文本输入框
        self.watermark_text = wx.TextCtrl(panel, style=wx.TE_PROCESS_ENTER)
        
        # 创建保存文件夹按钮
        self.save_folder_picker = wx.DirPickerCtrl(panel, style=wx.DIRP_USE_TEXTCTRL)
        
        # 创建生成按钮
        generate_button = wx.Button(panel, label='生成')
        generate_button.Bind(wx.EVT_BUTTON, self.on_generate_button_click)
        
        # 创建布局
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.file_picker, proportion=0, flag=wx.ALL|wx.EXPAND, border=10)
        sizer.Add(self.watermark_text, proportion=0, flag=wx.ALL|wx.EXPAND, border=10)
        sizer.Add(self.save_folder_picker, proportion=0, flag=wx.ALL|wx.EXPAND, border=10)
        sizer.Add(generate_button, proportion=0, flag=wx.ALL|wx.CENTER, border=10)
        panel.SetSizer(sizer)
        
    def on_generate_button_click(self, event):
        file_path = self.file_picker.GetPath()
        watermark_text = self.watermark_text.GetValue()
        save_folder = self.save_folder_picker.GetPath()
        
        if file_path and watermark_text and save_folder:
            try:
                doc = fitz.open(file_path)
                # watermark_text = watermark_text.encode('utf-8')
                watermark_text = str(watermark_text)
                
                for page in doc:
                    textbox = fitz.Rect(100, 100, 300, 200)  # 水印的位置和大小
                    # page.insert_textbox(textbox, watermark_text, fontsize=20, rotate=45)
                    page.insert_textbox(textbox, watermark_text, fontsize=20, rotate=90)
                    
                # output_file_path = f"{save_folder}/watermarked_{file_path.split('/')[-1]}"
                output_file_path = f"outputwatermark.pdf"
                doc.save(output_file_path)
                doc.close()
                
                wx.MessageBox("水印添加成功!", "成功", wx.OK | wx.ICON_INFORMATION)
                
            except Exception as e:
                wx.MessageBox(str(e), "错误", wx.OK | wx.ICON_ERROR)
        
        else:
            wx.MessageBox("请选择文件、输入水印文本和保存文件夹!", "错误", wx.OK | wx.ICON_ERROR)

if __name__ == '__main__':
    app = wx.App()
    frame = WatermarkFrame(None, "添加水印")
    frame.Show()
    app.MainLoop()

Resumir

Al usar Python y la biblioteca PyMuPDF, podemos agregar fácilmente marcas de agua a archivos PDF. La posición, el tamaño y el ángulo de rotación de la marca de agua se pueden personalizar según los requisitos. Este método no sólo es simple y eficiente, sino que también puede automatizar el procesamiento de una gran cantidad de archivos PDF.

Supongo que te gusta

Origin blog.csdn.net/winniezhang/article/details/132400515
Recomendado
Clasificación