如何使用 Python 为 PDF 表单添加水印?

How do I watermark a PDF Form using Python?

提问人:Alexandru Uzunov 提问时间:10/17/2023 更新时间:10/17/2023 访问量:34

问:

我需要用一些数据填充 PDF 表单,然后对 PDF 应用自定义水印。 目前,我使用 PyPDF 填写 PDF 表单,然后保存它,最后将水印应用到 PDF 上。

我尝试使用 PyPDF 指示的水印方法(这里):

from pathlib import Path
from typing import Union, Literal, List

from PyPDF2 import PdfWriter, PdfReader


def watermark(
    content_pdf: Path,
    stamp_pdf: Path,
    pdf_result: Path,
    page_indices: Union[Literal["ALL"], List[int]] = "ALL",
):
    reader = PdfReader(content_pdf)
    if page_indices == "ALL":
        page_indices = list(range(0, len(reader.pages)))

    writer = PdfWriter()
    for index in page_indices:
        content_page = reader.pages[index]
        mediabox = content_page.mediabox

        # You need to load it again, as the last time it was overwritten
        reader_stamp = PdfReader(stamp_pdf)
        image_page = reader_stamp.pages[0]

        image_page.merge_page(content_page)
        image_page.mediabox = mediabox
        writer.add_page(image_page)

    with open(pdf_result, "wb") as fp:
        writer.write(fp)

预期结果是填写了带有水印的表单。相反,我得到一个带水印的 PDF,它丢失了所有表单字段。

python pdf 生成 pypdf pdf-form

评论


答: 暂无答案