從多個pdf文檔中截取部分區域拼接成一個pdf文檔

提取合併多個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]


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章