如何在Python中向PDF文件添加图像?

8
我有一个PDF文档,但我必须在上面放置自己的图片。这是一份官方文件,我必须将一个带有文本“example”的图像应用到整个页面上。
是否有办法在Python中解决这个问题?
(文档中的文本是曲线)

我大约一个月前遇到了一个类似的问题,但在Python中很难找到解决方案。现在正在撰写答案。 - Andrew Buss
2个回答

12
如果您从Google进入此处,pypdf > 3.0.0 是最新的项目。如您所见,PyPDF2 / PyPDF3 / PyPDF4已经不再维护,其发布日期也较早。语法有所改变。
import pypdf

# overlay.pdf contains the image
with open("original.pdf", "rb") as inFile, open("overlay.pdf", "rb") as overlay:
    original = pypdf.PdfReader(inFile)
    background = original.pages[0]
    foreground = pypdf.PdfReader(overlay).pages[0]
    
    # merge the first two pages
    background.merge_page(foreground)
    
    # add all pages to a writer
    writer = pypdf.PdfWriter()
    for page in original.pages:
        writer.add_page(page)
    
    # write everything in the writer to a file
    with open("modified.pdf", "wb") as outFile:
        writer.write(outFile)

我现在是pypdf和PyPDF2的维护者。最新的项目是pypdf。我已经弃用了PyPDF2,转而支持pypdf。PyPDF3和PyPDF4远远落后,并且在过去几年中没有任何开发。 - Martin Thoma
有没有办法修改覆盖PDF的翻译和大小?我想在特定位置插入一张单独的图片,而不是覆盖整个页面。 - undefined

7

可以看一下 pypdf。你可以使用以下代码来应用一个覆盖层:

page = PdfReader("document.pdf").pages[0]
overlay = PdfReader("overlay.pdf").pages[0]
page.merge_page(overlay)

将任何覆盖层(包括“示例”)放入 overlay.pdf 中。 个人而言,我更喜欢 PDFTK,虽然它不是严格的 Python,但可以通过 os.system(command) 从脚本中调用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接