提取合併多個pdf頁面中的子區域,形成一個沒有分頁符的頁面。
輸入input:多個pdf的Rect區域 areas in pdf
輸出output:一頁(只是一頁)完整的pdf文檔 a page of pdf doc
*******************************
使用的工具及步驟tools and steps:
1、使用fitz.open()函數打開pdf
*2、使用page.searchFor("特徵字符串")函數找到特徵字符串位置(兩個對角定點的座標),得到需要剪切的位置。如果知道位置這一步可以省略
3、使用page = DOC.newPage(頁面寬,頁面高)創建新的頁面
4、使用page.showPDFpage()函數插入區域
5、使用doc.save()函數保存文檔
example:
#step 1
import fitz
DOC1 = fitz.open("c:/內容文件1.pdf") # 打開pdf文件,爲提取這個文件的內容做準備
DOC2 = fitz.open("c:/內容文件2.pdf") # 打開pdf文件,爲提取這個文件的內容做準備
DOC3 = fitz.open() # empty new PDF (output)建立一個空文檔,用於存放提取出來的pdf上的區域
#step 3 創建一個新的空頁面
page = DOC3.newPage(width=DOC1[0].rect.width,
height=y) #文檔總共的高度
4、使用page.showPDFpage()函數插入區域
page.showPDFpage(DOC1[0].rect, DOC1, 0) # 把DOC1文檔的 page 0頁 的DOC1[0].rect 區域插入DOC3新創建的頁面
page.showPDFpage(DOC3rect, DOC2, 1, clip=rect1) # 把DOC2 第一頁中的rect1 區域 插入DOC3rect區域 page 1, rect1
page.showPDFpage(nr2, DOC2, 2, clip=rect2) #同上
5、使用doc.save()函數保存文檔
DOC3.save('E:/我的新文檔.pdf', garbage=4, deflate=True) #保存文檔到'E:/我的新文檔.pdf'代碼樣例
import fitz
DOC1 = fitz.open('E:/定義3.pdf')
DOC2 = fitz.open('E:/含義.pdf')
DOC3 = fitz.open()
page = DOC3.newPage(width=DOC1[0].rect.width,
height=DOC1[0].rect.height + DOC2[0].rect.height)
page.showPDFpage(DOC1[0].rect, DOC1, 0)
placerect = fitz.Rect([0,DOC1[0].rect[3],DOC1[0].rect[2],DOC1[0].rect[3]+DOC2[0].rect[3]])
page.showPDFpage(placerect, DOC2, 0, clip=DOC2[0].rect)
DOC3.save('E:/我的新文檔.pdf', garbage=4, deflate=True)
感謝Jorj McKie
西風2019.3.1
最後,雖然GitHub上也發了同樣的文章,但我還是希望新接觸pymupdf的同學可以更方便的使用這個庫。歡迎郵件諮詢pymupdf的相關問題。[email protected]