PyMuPDF在底部插入图片

问题描述 投票:1回答: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')

Processed_image,页脚的图片在页面中间。 https:/i.stack.imgur.comHK9mm.png。

页脚图片。 https:/i.stack.imgur.comFRQYE.jpg。

请帮助我!

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

python-3.x pdf pdf-generation pymupdf
1个回答
1
投票

有些页面在内部将标准的PDF几何图形(使用左下角的页面点为(0,0))改变为其他的东西。同时也没有封装好 适当地做这些事情。

如果你怀疑这一点,请使用PyMuPDF方法来封装当前的页面 /Contents 之前 你可以插入你的项目(文字、图片等)。

最简单的方法是 Page._wrapContents() 这也是保持PDF增量保存的友好方式。的 慕PDF 只要 Page.cleanContents() 如果你担心这个问题的话,可以用这个方法和更多的清理方法,但会使增量保存的delta膨胀。


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')  
© www.soinside.com 2019 - 2024. All rights reserved.