欢迎访问宙启技术站
智能推送

使用Python的PdfFileWriter()添加页码到PDF文件

发布时间:2023-12-29 12:47:25

在Python中,我们可以使用PyPDF2库来操作PDF文件。PyPDF2提供了PdfFileWriter()类,可以用于创建和修改PDF文件。下面是一个将页码添加到PDF文件的示例:

import PyPDF2

def add_page_numbers(input_file, output_file):
    # 打开输入的PDF文件
    with open(input_file, 'rb') as file:
        reader = PyPDF2.PdfFileReader(file)
        writer = PyPDF2.PdfFileWriter()

        # 获取PDF文件的总页数
        num_pages = reader.getNumPages()

        # 遍历每一页
        for page_number in range(num_pages):
            page = reader.getPage(page_number)
            
            # 创建一个文本对象,用于显示页码
            text = PyPDF2.pdf.ContentStream([
                PyPDF2.pdf.TextObject(
                    '/Helvetica-Bold', 
                    12, 
                    f'{page_number+1}',
                    None, 
                    0, 
                    0,
                ).getObject(),
            ])
            
            # 将文本对象添加到当前页
            page._pushObject(page._addObject(text))

            # 更新页码位置和样式
            page.Rotate = 0
            page.scaleTo(1, 1)
            page.artBox.lowerLeft = (300, 30)

            # 添加带页码的页到输出的PDF文件
            writer.addPage(page)

        # 写入输出的PDF文件
        with open(output_file, 'wb') as output:
            writer.write(output)

# 使用示例
input_file = 'input.pdf'  # 输入的PDF文件
output_file = 'output.pdf' # 输出的PDF文件
add_page_numbers(input_file, output_file)

在示例中,我们首先打开输入的PDF文件,并创建了一个PdfFileWriter对象。然后,我们遍历输入文件的每一页,并为每一页添加一个文本对象,用于显示页码。我们设置了文本对象的字体、大小、位置等属性。然后,我们将文本对象添加到当前页,并更新了页码的位置和样式。最后,我们将具有页码的页添加到输出的PDF文件中。

你需要将input.pdf替换为你自己的输入文件路径,将output.pdf替换为你想要生成的输出文件路径。运行代码后,输出文件将包含带有页码的页。

请注意,该示例是一个简化版本,可能并不适用于所有的PDF文件。在实际使用中,你可能需要根据输入文件的结构和要求进行相应的调整和修改。