最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python如何實現(xiàn)刪除pdf空白頁

 更新時間:2025年05月14日 09:07:39   作者:去追風,去看海  
這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)刪除pdf空白頁以及批量刪除掃描PDF中的空白頁,文中的示例代碼簡潔易懂,需要的小伙伴可以了解下

python 刪除pdf 空白頁

環(huán)境

python == 3.10

PyPDF2 ==3.0.1

安裝

pip install PyPDF2

流程

將空白頁和內(nèi)容頁讀取出來,看看內(nèi)部結(jié)構(gòu)有什么不同

以此為依據(jù),遍歷整個PDF 文件,標記處有內(nèi)容的頁面,寫入到另外一個PDF文件。

python 代碼

# 每一個頁都是一個字典對象,看第一層沒區(qū)別
# 參考文章中 第一層 keys 一樣, 但是 /Resources下結(jié)構(gòu)有所不同,空白頁沒有"/XObject"鍵
# 我的第一層keys 不一樣,  但是 /Resources下結(jié)構(gòu)一樣
# 另外 PyPDF2 版本不一樣,各個模塊有更新,自己看源碼進行更新,或者根據(jù)報錯提示進行更新

from PyPDF2 import PdfReader, PdfWriter

def remove_pdf_blank_pages(path):
    pdfReader = PdfReader(open(path, 'rb'))
    writer = PdfWriter()
    pages = len(pdfReader.pages)
    # blank = pdfReader.pages[1]
    # full = pdfReader.pages[2]
    #print('*'*10)
    #print(blank.keys())# dict_keys(['/Type', '/Parent', '/Resources', '/MediaBox', '/Contents'])
    #print(full.keys())# dict_keys(['/Type', '/Parent', '/Resources', '/MediaBox', '/Annots', '/Tabs', '/StructParents', '/Contents'])
    #print(blank['/Resources'])
    #{'/Font': IndirectObject(600, 0, 139632281578944), '/XObject': {'/Im553': IndirectObject(553, 0, 139632281578944), '/Im7': IndirectObject(7, 0, 139632281578944)}, '/ProcSet': ['/PDF', '/Text', '/ImageC', '/ImageI', '/ImageB']}
    #print(full['/Resources'])
    #{'/Font': IndirectObject(600, 0, 139632281578944), '/XObject': {'/Im553': IndirectObject(553, 0, 139632281578944), '/Im7': IndirectObject(7, 0, 139632281578944)}, '/ProcSet': ['/PDF', '/Text', '/ImageC', '/ImageI', '/ImageB']}
    #print('*' * 10)
    for i in range(pages):
        page = pdfReader.pages[i]
        # if "/XObject" in page["/Resources"].keys() or "/Font" in page["/Resources"].keys():
        #     writer.add_page(page)
        if "/StructParents" in page.keys() or "/Tabs" in page.keys() or "/Annots" in page.keys():
            writer.add_page(page)

    writer.write(open(path, 'wb'))

使用Python批量刪除掃描PDF中的空白頁

對于經(jīng)??磼呙鑀DF資料的人來說,經(jīng)常會碰到如下問題:

PDF縮略圖

因為一些格式轉(zhuǎn)換的原因,一些空白頁時不時的出現(xiàn),而且規(guī)律不定,一會是偶數(shù)頁碼一會是奇數(shù)頁碼,逐個選中刪除的話,對于幾百頁的文檔,非常費時。

百度搜索刪除PDF空白頁,得到的是一個要收費的工具,有了Python就可以利用免費開源庫輕松解決。

先安裝 PyPDF2庫,在Powershell 或CMD命令行模式安裝PyPDF2

Install PyPDF2

流程

將空白頁和內(nèi)容頁讀取出來,看看內(nèi)部結(jié)構(gòu)有什么不同,以此為依據(jù),遍歷整個PDF 文件,標記處有內(nèi)容的頁面,寫入到另外一個PDF文件。

該文件中17頁為空白頁,18頁為內(nèi)容頁:

from PyPDF2 import PdfFileReader, PdfFileWriter

path=r"D:\ebook\PDF\test.pdf"

reader = PdfFileReader(open(path, 'rb'))
"""
注意PyPDF2中頁碼從0開始
"""
blank= reader.getPage(16)
full = reader.getPage(17)

每一個頁都是一個字典對象,看第一層沒區(qū)別

blank.keys()
Out[24]: dict_keys(['/Type', '/Contents', '/Parent', '/Resources', '/MediaBox'])

full.keys()
Out[25]: dict_keys(['/Type', '/Contents', '/Parent', '/Resources', '/MediaBox'])

經(jīng)查發(fā)現(xiàn)/Resources下結(jié)構(gòu)有所不同,空白頁沒有"/XObject"鍵:

blank['/Resources']
Out[26]: {'/ExtGState': {'/Opa0': {'/Type': '/ExtGState', '/CA': 1}}}

full['/Resources']
Out[27]: 
{'/ExtGState': {'/Opa0': {'/Type': '/ExtGState', '/CA': 1},
  '/Opa1': {'/Type': '/ExtGState', '/ca': 1}},
 '/XObject': {'/Image0': {'/BitsPerComponent': 8,
   '/Height': 1130,
   '/Filter': ['/DCTDecode'],
   '/ColorSpace': '/DeviceRGB',
   '/Type': '/XObject',
   '/Subtype': '/Image',
   '/DL': 434222,
   '/Width': 792}}}

所以對于有”/XObject“鍵的,就是有圖像的頁面。同時發(fā)現(xiàn)一些只有文字沒圖像的頁面,還有"/Font" 鍵,于是將有這兩個鍵的頁面標記,然后寫入第二個PDF文件即可:

from PyPDF2 import PdfFileReader, PdfFileWriter

path = r"D:\ebook\PDF\test.pdf"
path_output = r"D:\ebook\PDF\output.pdf"

reader = PdfFileReader(open(path, 'rb'))
writer = PdfFileWriter()
pages = pdfReader.getNumPages()

for i in range(pages):
    page = reader.getPage(i)
    if "/XObject" in page["/Resources"].keys() or "/Font" in page["/Resources"].keys():
        writer.addPage(page)
    
writer.write(open(path_output, 'wb'))

到此這篇關(guān)于Python如何實現(xiàn)刪除pdf空白頁的文章就介紹到這了,更多相關(guān)Python刪除pdf空白頁內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python tornado修改log輸出方式

    python tornado修改log輸出方式

    今天小編就為大家分享一篇python tornado修改log輸出方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python中最強大的錯誤重試庫(tenacity庫)

    Python中最強大的錯誤重試庫(tenacity庫)

    本文要給大家介紹的tenacity庫,可能是目前Python生態(tài)中最好用的錯誤重試庫,主要介紹tenacity的主要使用方法和特性,具有一定的參考價值,感興趣的可以了解一下
    2022-04-04
  • Python DNS查詢放大攻擊實現(xiàn)原理解析

    Python DNS查詢放大攻擊實現(xiàn)原理解析

    這篇文章主要介紹了Python DNS查詢放大攻擊實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-10-10
  • python?OpenCV計算圖片相似度的5種算法

    python?OpenCV計算圖片相似度的5種算法

    本文主要介紹了python?OpenCV計算圖片相似度的5種算法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • 深入了解Python數(shù)據(jù)類型之列表

    深入了解Python數(shù)據(jù)類型之列表

    下面小編就為大家?guī)硪黄钊肓私釶ython數(shù)據(jù)類型之列表。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • 關(guān)于Flask 上下文詳細介紹

    關(guān)于Flask 上下文詳細介紹

    這篇文章主要給大家分享了關(guān)于Flask 上下文詳細介紹,我們可以把上下文理解為當前環(huán)境的快照,是一個用來保存狀態(tài)的對象。在代碼執(zhí)行的某個時刻,根據(jù)上下文的代碼邏輯,可以決定在當前時刻下使用到的環(huán)境變量等。下面一起進入文章了解詳情內(nèi)容,需要的朋友也可以參考一下
    2021-11-11
  • flask的orm框架SQLAlchemy查詢實現(xiàn)解析

    flask的orm框架SQLAlchemy查詢實現(xiàn)解析

    這篇文章主要介紹了flask的orm框架SQLAlchemy查詢實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • python使用tkinter實現(xiàn)透明窗體上繪制隨機出現(xiàn)的小球(實例代碼)

    python使用tkinter實現(xiàn)透明窗體上繪制隨機出現(xiàn)的小球(實例代碼)

    今天教大家怎么實現(xiàn)Tkinter透明窗體,在上篇文章給大家介紹過透明窗體上繪制小球,今天接著通過實例代碼給大家分享python使用tkinter實現(xiàn)透明窗體上繪制隨機出現(xiàn)的小球的實例代碼,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • Python文本轉(zhuǎn)語音引擎pyttsx3的使用完全指南

    Python文本轉(zhuǎn)語音引擎pyttsx3的使用完全指南

    在開發(fā)需要語音輸出功能的應(yīng)用時,文本轉(zhuǎn)語音技術(shù)是一個非常有用的工具,Python的pyttsx3庫提供了一個簡單且離線的方式來實現(xiàn)這一功能,下面小編就來和大家介紹一下pyttsx3的具體使用吧
    2025-04-04
  • python創(chuàng)建列表并給列表賦初始值的方法

    python創(chuàng)建列表并給列表賦初始值的方法

    這篇文章主要介紹了python創(chuàng)建列表并給列表賦初始值的方法,涉及Python列表的定義與賦值技巧,需要的朋友可以參考下
    2015-07-07

最新評論

德惠市| 汕尾市| 黄大仙区| 樟树市| 西宁市| 泸州市| 余江县| 巫溪县| 长宁区| 酉阳| 邓州市| 建平县| 禄劝| 盘山县| 同江市| 桃源县| 靖江市| 牟定县| 舒兰市| 平果县| 新竹市| 阿克陶县| 定安县| 壤塘县| 海兴县| 禹州市| 河池市| 漾濞| 阳城县| 铁岭市| 紫云| 阿拉尔市| 南开区| 盐亭县| 上林县| 类乌齐县| 阜南县| 金乡县| 阆中市| 洪雅县| 全南县|