我想读取一个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。
请帮助我!
请让我知道是否可以通过使用其他库来实现。
有些页面在内部将标准的PDF几何图形(使用左下角的页面点为(0,0))改变为其他的东西。同时也没有封装好 适当地做这些事情。
如果你怀疑这一点,请使用PyMuPDF方法来封装当前的页面 /Contents
之前 你可以插入你的项目(文字、图片等)。
最简单的方法是 Page._wrapContents()
这也是保持PDF增量保存的友好方式。的 慕PDF 只要 Page.cleanContents()
如果你担心这个问题的话,可以用这个方法和更多的清理方法,但会使增量保存的delta膨胀。
在做了一点试验和错误之后,我能够找出问题所在。我错过了正确的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')