(轉)python批量提取PDF第一頁輸出為圖片


一:步驟

1、使用input輸入路徑

2、生成圖片存戶路徑同存放路徑

3、生成圖片為PNG格式

4、支持自定義截取頁數,建議為第一頁

 

二:安裝擴展類

pip install PyMuPDF

 

三:示例代碼

# coding:utf-8
import os
import fitz


# 解析
def analysis(file_path, save_path, num):
    # 資源列表
    file_array = []
    if os.path.isdir(file_path):
        # 目錄循環壓入
        file_count = get_path_file(file_path)
        for v in file_count:
            file_array.append(v)
    else:
        # 單文件,單次調用
        file_array.append(file_path)

    # 判斷為空情況
    if not file_array:
        print("此目錄下無文件")
    # 執行解析
    file_count_num = len(file_array)
    print("程序運行中,共計%s個文件" % file_count_num)
    for v in file_array:
        # print("文件路徑:%s" % v)
        # 獲取文件名稱及類型
        file_name = os.path.basename(v)
        # print("文件信息:%s" % file_name)
        if '.pdf' not in file_name:
            print("此文件非PDF文件")
        #  打開PDF文件,生成一個對象
        doc = fitz.open(v)
        # 總頁數
        count_page = doc.pageCount
        # print("文件共計:%s頁" % count_page)
        if count_page > 1:
            page = doc[num]
            rotate = int(0)
            # 每個尺寸的縮放系數為2,這將為我們生成分辨率提高四倍的圖像。
            zoom_x = 2.0
            zoom_y = 2.0
            trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
            pm = page.getPixmap(matrix=trans, alpha=False)
            # 保存路徑
            p_1 = v.replace(file_path, save_path)
            p_2 = p_1.replace(file_name, '')
            if not os.path.exists(p_2):
                os.makedirs(p_2)
            new_file_name = file_name.replace(".pdf", "")
            pm.writePNG(p_2 + '%s.png' % new_file_name)
            print("運行完成")
        else:
            print("此文檔無內容,跳出")
            continue


# 返回目錄下所有文件
def get_path_file(files_path):
    data = []
    for root, dirs, files in os.walk(files_path, topdown=False):
        for name in files:
            f_p = os.path.join(root, name).replace("\\", "/")
            data.append(f_p)
    return data


if __name__ == '__main__':
    print("|---------------------------------|")
    print("|                                 |")
    print("|         PDF 批量生成封面        |")
    print("|                                 |")
    print("|---------------------------------|")

    # 當前目錄下的文件
    now_path = os.getcwd()
    print("當前位置:%s" % now_path)
    # 保存路徑
    print("請輸入參數,以 / 結尾,處理完成后會自動退出")
    save_path = input("圖片保存地址:")
    exit()
    # 判斷目錄
    save_path_status = os.path.exists(save_path)
    if not save_path_status:
        os.mkdir(save_path)
    # 截取頁數
    num = 0
    # 路徑或文件名
    file_path = input("PDF文件地址:")
    # 調用方法
    analysis(file_path, save_path, num)

 

注:可打包成exe文件使用噢

 

本文轉載於:https://cloud.tencent.com/developer/article/1584421


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM