PyMuPDF在底部插入图像



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

请帮忙!

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

一些页面在内部将标准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') 

最新更新