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