PyMuPDF 在底部插入图像

PyMuPDF insert image at bottom

我正在尝试阅读 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')

Processed_image 页面中间有页脚图片: https://i.stack.imgur.com/HK9mm.png

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

请帮忙!

请告诉我是否可以使用任何其他库来实现。

一些页面在内部将标准 PDF 几何图形(使用页面左下角的点作为 (0, 0))更改为其他内容,同时不封装 这样做是他们应该做的。

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

最简单的方法是 Page._wrapContents(),这也是保持增量 PDF 保存较小的友好方法。 MuPDF 提供的 Page.cleanContents() 会执行此操作和更多清理工作,但如果这是一个问题,则会膨胀增量保存增量。

经过反复试验,我找到了问题所在。我错过了 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')  

使用:

wrapContents – Page.wrap_contents()

https://pymupdf.readthedocs.io/en/latest/znames.html?highlight=wrapContents


from fitz import fitz, Rect

doc = fitz.open("example.pdf")
w = 250
h = 400

def add_footer(pdf):
    img = open("firmaJG.png", "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.wrap_contents()
        page.insertImage(rect, stream=img)

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