1

我正在尝试阅读 PDF 并在 PDF 中每一页的底部(页脚)插入图像。我试过 PyMuPDF 库。

问题:无论Rect我给出什么(高度、宽度),它都不会出现在底部,图像只会出现在页面的上半部分(PDF 页面)。

我的代码:

from fitz import fitz, Rect

doc = fitz.open("test_pdf2.pdf")

def add_footer(pdf):
    img = open("footer4.jpg", "rb").read()
    rect = Rect(0, 0, 570, 1230)

    for i in range(0, pdf.pageCount):
        page = pdf[i]
        if not page._isWrapped:
            page._wrapContents()
        page.insertImage(rect, stream=img)

add_footer(doc)
doc.save('test_pdf5.pdf')

页面中间带有页脚图像的已处理图像: https ://i.stack.imgur.com/HK9mm.png

页脚图片: https ://i.stack.imgur.com/FRQYE.jpg

请帮忙!

请让我知道这是否可以通过使用任何其他库来实现。

4

2 回答 2

2

某些页面在内部将标准 PDF 几何图形(使用左下角的页面点作为 (0, 0))更改为其他内容,同时未按应有的方式正确封装此操作。

如果您怀疑这一点,请在插入项目(文本、图像等)/Contents 之前使用 PyMuPDF 方法封装当前页面。

最简单的方法是Page._wrapContents()保持增量 PDF 保存较小的友好方式。提供的MuPDFPage.cleanContents()会执行此操作以及更多清洁工作,但如果这是一个问题,则会增加增量保存增量。

于 2020-06-11T13:27:18.837 回答
1

在做了一些试验和错误之后,我能够找出问题所在。我错过了 Rect 的正确尺寸,我不得不在第二个参数中给出 0.85*h。下面是代码:

from fitz import fitz, Rect

doc = fitz.open("test_pdf2.pdf")
w = 595
h = 842

def add_footer(pdf):
    img = open("footer4.jpg", "rb").read()
    rect = fitz.Rect(0, 0.85*h, w, h)

    for i in range(0, pdf.pageCount):
        page = pdf[i]
        if not page._isWrapped:
            page._wrapContents()
        page.insertImage(rect, stream=img)

add_footer(doc)
doc.save('test_pdf5.pdf')  
于 2020-06-21T14:52:39.847 回答