[英]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')
頁面中間帶有頁腳圖像的已處理圖像: 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')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.