pdf轉圖片(png,jpg)的python腳本

pdf轉圖片(png,jpg)的python腳本

PDF轉圖片工具

1.安裝庫 pip install pymupdf

2.如果需要pdf轉jpg的更改DEFAULT_FORMAT即可

3.一定注意要將腳本與待轉化的.pdf文件放在同一個目錄

4.運行腳本,將腳本所在目錄所有.pdf文件轉換成圖片,并存放在對應名稱的文件夾中

import os
import sys
import fitz
import time
from typing import List# 配置項
DEFAULT_ZOOM = 2.0
SUPPORTED_FORMATS = ['png', 'jpg']
DEFAULT_FORMAT = 'png'
JPEG_QUALITY = 95def get_script_dir() -> str:"""獲取腳本所在的絕對目錄路徑"""return os.path.dirname(os.path.abspath(__file__))def get_pdf_files() -> List[str]:"""獲取腳本目錄下的PDF文件(返回完整路徑)"""script_dir = get_script_dir()pdf_files = []try:for filename in os.listdir(script_dir):if filename.lower().endswith('.pdf'):full_path = os.path.join(script_dir, filename)if os.path.isfile(full_path):pdf_files.append(full_path)return pdf_filesexcept Exception as e:print(f"[ERROR] 掃描PDF失敗: {str(e)}")return []def convert_pdf_to_images(pdf_path: str,output_format: str = DEFAULT_FORMAT,zoom: float = DEFAULT_ZOOM
) -> bool:"""轉換PDF為圖片(輸出到腳本所在目錄)"""try:script_dir = get_script_dir()pdf_name = os.path.splitext(os.path.basename(pdf_path))[0]# 在腳本目錄下創建輸出文件夾output_folder = os.path.join(script_dir, f"{pdf_name}_images")os.makedirs(output_folder, exist_ok=True)doc = fitz.open(pdf_path)total_pages = len(doc)print(f"\n轉換中: {os.path.basename(pdf_path)} (共{total_pages}頁)")print(f"輸出到: {output_folder}")for pg in range(total_pages):page = doc[pg]pix = page.get_pixmap(matrix=fitz.Matrix(zoom, zoom))output_path = os.path.join(output_folder,f"{pdf_name}_page{pg+1:03d}.{output_format}")pix.save(output_path, jpg_quality=JPEG_QUALITY if output_format == 'jpg' else None)print(f"  ? 第 {pg+1}/{total_pages} 頁")doc.close()print(f"? 轉換完成!")return Trueexcept Exception as e:print(f"? 轉換失敗: {str(e)}")return Falseif __name__ == '__main__':print("="*50)print("PDF轉圖片工具(輸出到腳本目錄版)")print("="*50)pdf_files = get_pdf_files()if not pdf_files:print("\n! 未找到PDF文件!請確保:")print("  1. PDF文件與腳本在同一目錄")print("  2. 文件擴展名是.pdf")input("\n按Enter鍵退出...")sys.exit()print("\n找到以下PDF文件:")for i, pdf in enumerate(pdf_files, 1):print(f"  {i}. {os.path.basename(pdf)}")input("\n按Enter鍵開始轉換...")for pdf in pdf_files:convert_pdf_to_images(pdf)input("\n全部完成!按Enter鍵退出...")

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/88290.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/88290.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/88290.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大模型本地部署,擁有屬于自己的ChatGpt

ChatGpt 以其強大的信息整合和對話能力驚艷了全球,在自然語言處理上面表現出了驚人的能力。不管用于文案撰寫還是程序輔助開發都大大提高了我們的工作效率,但是其使用有一定的門檻,讓我們大多數人都望而卻步,今天我們利用ollama實現本地大模型的步驟,讓我們輕松擁有自己的…

【mcu】-老舊小區門禁電話改造指南

老舊小區門禁電話改造指南(四線制DIY方案) 一、明確四根線的功能(關鍵第一步) 通常四線制門禁電話的線纜定義如下(需用萬用表驗證): 線色 常見功能 電壓/信號類型 檢測方法 紅線 電源正極(+12V) DC 12V(待機) 萬用表直流檔測對黑線電壓 黑線 電源負極(GND) 0V 與…

word中如何快速打出上標?

在 Microsoft Word 中快速輸入上標的方法有以下幾種,推薦掌握 鍵盤快捷鍵法(最常用高效): ? 方法一:快捷鍵法(強烈推薦,效率最高!) 輸入需要上標的文字/數字&#xff0…

如何優化HarmonyOS 5的分布式通信性能?

以下是針對HarmonyOS 5分布式通信性能優化的系統性方案,結合核心技術特性與實踐經驗: 一、傳輸層優化 數據壓縮與批處理 // 啟用ZLIB壓縮(>1KB自動壓縮) DistributedConfig config new DistributedConfig.Builder().setCom…

Matplotlib圖像處理三劍客:imshow(), imread(), imsave()

Matplotlib是Python中最著名的數據可視化庫之一,它不僅能夠繪制各種統計圖表,還提供了強大的圖像處理功能。本文將重點介紹Matplotlib中三個核心的圖像處理方法:imshow()、imread()和imsave(),通過示例代碼展示它們的使用方法。 …

[特殊字符]防止 MyBatis-Plus 中模糊查詢 `%` 查出全表:實現通配符轉義攔截器

目錄標題 ?為什么需要轉義 % 和 _🧪 使用案例:防止傳入 % 導致全表查詢🎯 支持哪些場景?? 攔截器實現思路🧩 核心攔截器代碼實現🔐 可選忽略某些 SQL 的轉義 ?為什么需要轉義 % 和 _ 在使用 MyBatis-Pl…

linux grep的一些坑

grep -a "commit" a.log 可以獲取到所有的數據(可以看到a.log所有的commit關鍵詞) 但cat a.log|grep "commit" 無法全部獲取到(只能看到a.log中部分的的commit) 細分析和可能原因: 1. 二進制文件…

牛客 AI 面試 Ultra 版升級:開啟招聘新紀元

每到招聘季,HR 們便陷入繁忙與焦慮。海量簡歷篩選耗費大量人力,初步面試耗費數周時間,好不容易安排好面試官與候選人時間,又可能因各種意外狀況打亂節奏。而牛客 AI 面試 Ultra 版恰似一束光,照亮了招聘流程優化的道路…

OSS與NAS混合云存儲架構:非結構化數據統一管理實戰

AI訓練集管理面臨的核心挑戰:數據規模爆炸式增長與訪問模式多樣化的矛盾。ImageNet等典型數據集已達150TB規模,傳統單一存儲方案面臨三重困境: NAS在PB級場景下硬件成本呈指數增長OSS對象存儲無法滿足高頻隨機訪問需求跨存儲數據訪問導致訓練…

72、單元測試-常用測試注解

72、單元測試-常用測試注解 在單元測試中,常用的測試注解可以幫助組織和管理測試代碼,提高測試的可讀性和可維護性。以下是JUnit和TestNG框架中一些常用的測試注解及其功能: #### JUnit注解 1. **Test** - 標記一個方法為測試方法。 - 可以設…

強化學習在大型語言模型訓練中的最新進展:開源項目深度分析報告

強化學習在大型語言模型訓練中的最新進展:開源項目深度分析報告 引言 近年來,人工智能領域見證了大型語言模型(LLM)的迅速崛起,而強化學習作為機器學習的重要分支,在提升LLM推理能力方面展現出巨大潛力。隨著OpenAI發布o1等推理…

微服務:服務治理

簡單描述這個過程: 生產者與消費者之間的供需關系僅憑這兩者很難有效維持,比如某個消費者掛掉了,而生產者并不知道,就會依然給掛掉的消費者提供內容,那么此時的內容明顯就是未獲取到的,從而出現輸出問題。…

關于數據編碼、進制、位運算的詳細講解(從屬GESP三級)

本章內容 數據編碼基礎 進制轉換 位運算基礎 別讓符號位絆住你的步伐,掌握補碼,讓加減法都成為加法。 一、 數據編碼基礎 目標:掌握 原碼 / 反碼 / 補碼 的定義與互轉、常見進制(2 / 8 / 10 / 16)互化方法&#x…

實戰項目8(11)

任務場景一 按照下圖完成網絡拓撲搭建和配置 任務要求: 1、根據個人模擬器情況,將各交換機的MAC地址標注在拓撲圖中,并將結果進行截圖。 把每個交換機的這個復制粘貼出來【如上圖綠色標記的】 【SW1】配置 dis stp 【SW2】配置 dis stp 【…

儲能系統的離網,并網,構網,跟網 簡介

一、并網(Grid-Connected) ? 定義:PCS輸出與公共電網并聯運行,電網主導電壓和頻率,PCS按設定的有功/無功功率注入電網。 ? 特點: 電網存在、電壓頻率穩定 PCS僅作為電源“從機”,不能主導電壓…

Solr 初始環境搭建(Windows)

前言 Apache Solr 是一個開源的、基于 Java 的企業級搜索平臺,構建在 Apache Lucene 之上,提供了強大的全文檢索、分布式搜索、索引管理、高亮顯示、分面搜索等功能。它被廣泛應用于電子商務、內容管理系統(CMS)、數據分析和大規模…

系統架構設計的全方位視角:深入解析4+1視圖模型及其應用實踐

在當今復雜多變的軟件開發環境中,如何全面把握系統架構,滿足不同利益相關者的需求,是每位架構師面臨的重大挑戰。“41”視圖模型作為一種經典的架構描述框架,為解決這一難題提供了系統化的方法論。本文將深入剖析這一模型的理論基…

vue.js 3: markmap using typescript

在項目目錄文件下,通過cmd運行下述指令。 npm create vuelatest cd vue-projectnpm installnpm run format npm run dev或 npm init vuelatest cd vue-prjectnpm run build --打包項目創建項目沒有node_modules npm init -y npm install vue-routernpm install mark…

聚寬量化——股票時間序列函數

import matplotlib.pyplot as plt import pandas as pd from mpl_finance import candlestick2_ochl import mplfinance as mpf from unittest import TestCaseclass TestPandasKline(TestCase):#讀取股票數據,畫出K線圖def testKLineChart(self):file_name "…

(一)代碼隨想錄 - 數組

代碼隨想錄 一. 數組的理論基礎 概念:數組是存放在連續內存空間上的相同類型數據的集合 特點:(1)數組可以通過下標進行訪問對應的數據并且下標是從0開始的 -> 隨機訪問;(2)數組內存空間的地…