日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

.net pdf转图片_pdf2image类库实现批量pdf转图片

發(fā)布時間:2024/7/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .net pdf转图片_pdf2image类库实现批量pdf转图片 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

通過pdf2image來實現(xiàn)對PDF文件的處理工作,我們本次主要做的是將PDF文件批量轉成圖片。之前寫過批量提取封面的文章,但是在后期的深入編寫過程中遇到一些問題,近期再次深入編寫程序,一起來看看代碼吧!

python

一、說明

本次使用python的類庫pdf2image來實現(xiàn)功能,pdf2image需要poppler和pillow的支持。

二、安裝poppler和pillow

1、popple安裝

window安裝方式

通過國內(nèi)網(wǎng)址:http://blog.alivate.com.au/poppler-windows/,下載壓縮包,將壓縮包進行解壓操作,目錄如下圖,將解壓包放置到磁盤根目錄(避免出現(xiàn)誤刪除情況),進入lib文件夾,復制路徑。如下:C:poppler-0.68.0lib,將路徑添加到環(huán)境變量PATH中。然后將電腦重新啟動(需要重啟一下電腦才會生效)

示例


linux安裝(centos為例)

yum install poppler poppler-cpp-devel poppler-utils

2、pillow安裝

pip install pillow

三、編寫代碼

import configparserimport osfrom pdf2image import convert_from_path, convert_from_bytes ''' PDF 文件轉圖片 使用類庫 pdf2image''' # 獲取目錄下所有 PDF 格式文件def get_path_file(files_path): print('開始獲取文件列表') f = open('./list.txt', 'a+', encoding='utf-8') for root, dirs, files in os.walk(files_path, topdown=False): for name in files: f_p = os.path.join(root, name).replace("", "/") if ".pdf" in f_p: f.write(f_p + "") f.close() # 生成文件def make_pdf(pdf_path, save_path, ppm_path): # 通過路徑獲取文件集合 get_path_file(pdf_path) # 讀取列表文件,獲取集合數(shù)據(jù) f = open("./list.txt", 'r', encoding='utf8') path_url = f.read() file_data = path_url.split("") count = len(file_data) print("共計PDF文件數(shù):%s" % count) for index, v_path in enumerate(file_data): # 路徑為空,跳出 if not v_path: continue print('剩余:%s,本次生成文件:%s' % ((count - index - 2), v_path)) # 將 pdf 路徑中的 斜線 替換 pdf_path = pdf_path.replace('', '/') new_file_path = v_path.replace(pdf_path, save_path).replace('.pdf', '/') images = convert_from_path( pdf_path=v_path, # 要轉換的pdf的路徑 dpi=200, # dpi中的圖像質量(默認200) output_folder=ppm_path, # 將生成的圖像寫入文件夾(而不是直接寫入內(nèi)存) first_page=None, # 要處理的第一頁 last_page=None, # 停止前要處理的最后一頁 fmt="ppm", # 輸出圖像格式 jpegopt=None, # jpeg選項“quality”、“progressive”和“optimize”(僅適用于jpeg格式) thread_count=4, # 允許生成多少線程進行處理 userpw=None, # PDF密碼 use_cropbox=False, # 使用cropbox而不是mediabox strict=False, # 當拋出語法錯誤時,它將作為異常引發(fā) transparent=False, # 以透明背景而不是白色背景輸出。 single_file=False, # 使用pdftoppm/pdftocairo中的-singlefile選項 poppler_path=None, # 查找poppler二進制文件的路徑 grayscale=False, # 輸出灰度圖像 size=None, # 結果圖像的大小,使用枕頭(寬度、高度)標準 paths_only=False, # 不加載圖像,而是返回路徑(需要output_文件夾) use_pdftocairo=False, # 用pdftocairo而不是pdftoppm,可能有助于提高性能 timeout=None, # 超時 ) # 不存在時跳出 if not images: print('文件內(nèi)容為空,跳出:%s' % v_path) continue # 文件名稱 file_name = os.path.basename(v_path) if '.pdf' not in file_name: print("此文件非PDF文件") continue if not os.path.exists(new_file_path): os.makedirs(new_file_path) else: # 存在目錄 獲取目錄下文件數(shù)量 if images == len(os.listdir(new_file_path)): continue for i, image in enumerate(images): image.save("./%s/%d.png" % (new_file_path, i), "PNG") # print("正在保存第%s張圖" % i) # 刪除 緩存目錄 delete_file(ppm_path) # 判斷目錄是否存在def get_path_status(path, status): path_status = os.path.exists(path) if not path_status and status: os.makedirs(path) elif not path_status: print('%s,目錄不存在' % path) exit() # 刪除文件夾及其子文件def delete_file(path): # 先把各個目錄的文件刪除完 for root, dirs, files in os.walk(path): for file in files: filepath = os.path.join(root, file) try: os.remove(filepath) # print("刪除文件%s成功" % file) except: print("刪除文件%s異常" % file) if __name__ == '__main__': pro_dir = os.path.split(os.path.realpath(__file__))[0] config_path = os.path.join(pro_dir, "config.ini") if not os.path.exists(config_path): print("無配置文件,請先填寫") exit() con = configparser.ConfigParser() print('開始讀取配置文件') # 讀取配置 con.read(config_path, encoding='utf-8') get_path_status(con['PATH']['file_path'], False) get_path_status(con['PATH']['save_path'], True) get_path_status(con['PATH']['cache_path'], True) make_pdf(con['PATH']['file_path'], con['PATH']['save_path'], con['PATH']['cache_path']) # 刪除緩存空目錄和資源列表文件 os.removedirs(con['PATH']['cache_path']) os.remove('./list.txt') print('任務處理完成')

配置文件使用的.ini文件,名稱為config.ini。將配置文件和代碼文件放置在同級目錄中,內(nèi)容如下:

[PATH]; 文件存儲目錄 格式如下: file_path = F:PDF文件PDF資料其他file_path = D:python2020-10-14【pdf轉圖片】pdf; 圖片保存目錄save_path = ./image/; 緩存生成目錄cache_path = ./ppm/

四、運行截圖

截圖

總結

以上是生活随笔為你收集整理的.net pdf转图片_pdf2image类库实现批量pdf转图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。