簡體   English   中英

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')

頁面中間帶有頁腳圖像的已處理圖像: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM