PDF轉圖片工具技術文檔(命令行版本)

PDF轉圖片工具技術文檔(命令行版本)

1. 功能概述

本工具是一個基于PyMuPDF庫的PDF轉圖片命令行工具,能夠:

  • 通過命令行參數接收PDF文件路徑
  • 將PDF的每一頁轉換為PNG格式的圖片
  • 自動創建輸出目錄(./static)
  • 保存圖片到指定目錄并按頁碼命名

2. 技術棧

  • PyMuPDF (fitz): 用于PDF解析和頁面渲染
  • Python 3.x: 編程語言環境
  • argparse: 處理命令行參數

3. 環境準備

安裝依賴庫

pip install pymupdf

4. 代碼實現

4.1 完整代碼

import fitz# PyMuPDF
import os
import argparsedef pdf_to_images(pdf_path):
"""
將PDF文件轉換為圖片參數:
pdf_path (str): PDF文件路徑
"""
print(f"正在處理文件: {pdf_path}")# 創建輸出目錄
output_dir = './static'
os.makedirs(output_dir, exist_ok=True)try:
# 打開PDF文件
doc = fitz.open(pdf_path)# 遍歷每一頁
for page_num in range(len(doc)):
# 加載頁面
page = doc.load_page(page_num)# 將頁面渲染為像素圖
pix = page.get_pixmap(
alpha=False,# 禁用alpha通道
dpi=300,# 設置DPI
matrix=fitz.Matrix(2.0, 2.0)# 縮放因子
)# 保存為PNG圖片
output_path = f'{output_dir}/page-{page_num+1}.png'
pix.save(output_path)
print(f"已保存: {output_path}")print("轉換完成!")except Exception as e:
print(f"發生錯誤: {str(e)}")
finally:
if 'doc' in locals():
doc.close()if __name__ == "__main__":
# 設置命令行參數解析
parser = argparse.ArgumentParser(description='PDF轉圖片工具')
parser.add_argument('pdf_file', help='要轉換的PDF文件路徑')args = parser.parse_args()# 檢查文件是否存在
if not os.path.exists(args.pdf_file):
print(f"錯誤: 文件 {args.pdf_file} 不存在")
exit(1)# 執行轉換
pdf_to_images(args.pdf_file)

4.2 代碼說明

  1. 參數處理
  • 使用argparse模塊處理命令行參數
  • 必需參數pdf_file指定要轉換的PDF文件路徑
  1. 文件檢查
  • 驗證輸入的PDF文件是否存在
  1. 輸出目錄
  • 自動創建./static目錄(如果不存在)
  1. 轉換過程
  • 設置300 DPI和2倍縮放確保高質量輸出
  • 每頁保存為page-{頁碼}.png格式
  1. 錯誤處理
  • 捕獲并顯示轉換過程中的異常

5. 使用說明

5.1 基本用法

python pdf_to_image.py 輸入文件.pdf

5.2 示例

# 轉換當前目錄下的sample.pdf
python pdf_to_image.py sample.pdf# 轉換指定路徑的PDF文件
python pdf_to_image.py /path/to/document.pdf

5.3 輸出結果

轉換后的圖片將保存在./static目錄下:

./static/
page-1.png
page-2.png
...

6. 高級配置

6.1 自定義輸出目錄

修改代碼中的output_dir變量:

output_dir = './custom_output'# 修改為想要的目錄

6.2 調整輸出質量

修改get_pixmap參數:

pix = page.get_pixmap(
alpha=False,
dpi=600,# 更高DPI
matrix=fitz.Matrix(3.0, 3.0)# 更大縮放因子
)

6.3 支持其他圖片格式

修改保存格式(如JPEG):

output_path = f'{output_dir}/page-{page_num+1}.jpg'
pix.save(output_path, "jpeg", quality=95)# JPEG質量參數

7. 常見問題

7.1 文件權限問題

錯誤

PermissionError: [Errno 13] Permission denied

解決方案

  • 確保有目標目錄的寫入權限
  • 或指定其他可寫目錄作為輸出目錄

7.2 中文路徑問題

解決方案

# 處理中文路徑
pdf_path = pdf_path.encode('utf-8').decode('gbk')

7.3 大文件處理

優化建議

  • 分批處理大型PDF文件
  • 增加內存檢查機制

8. 擴展功能建議

  1. 批量處理
  • 支持目錄下所有PDF文件的批量轉換
  1. 進度顯示
  • 添加進度條顯示轉換進度
  1. 多線程處理
  • 對大文件使用多線程加速轉換
  1. 輸出配置
  • 通過命令行參數指定輸出目錄和圖片質量

9. 替代方案

如果不需要命令行交互,可以直接拖放文件到腳本:

import sysif __name__ == "__main__":
if len(sys.argv) < 2:
print("請將PDF文件拖放到此腳本上")
input("按回車鍵退出...")
exit(1)pdf_to_images(sys.argv[1])

10. 結論

這個命令行版本的PDF轉圖片工具去除了GUI依賴,更適合自動化處理場景。通過簡單的命令行參數即可完成轉換,輸出質量高且穩定,適合集成到自動化工作流中。

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

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

相關文章

k8s+isulad 國產化技術棧云原生技術棧搭建1-VPC

為響應政策&#xff0c;最近在搗鼓國產化云原生平臺的搭建。在搭建過程中遇到了問題記錄下來&#xff0c;以備后續查找。 我選用了中國電子云的云平臺來搭建K8S集群&#xff0c;選用的技術棧是華為開源的openeulerk8sisulad框架&#xff0c;參考官網文檔資料&#xff1a;iSula…

chatgpt plus簡單得,不需要求人,不需要野卡,不需要合租,不需要昂貴的價格

ChatGPT Plus&#xff1a;開啟智能對話的新紀元 引言&#xff1a;AI助手的時代已經到來 在當今信息爆炸的時代&#xff0c;人工智能助手已經成為我們工作、學習和生活中不可或缺的伙伴。作為AI領域的佼佼者&#xff0c;ChatGPT自問世以來就以其強大的語言理解和生成能力贏得了…

鴻蒙OS 系統安全

鴻蒙OS 系統安全 在搭載 HarmonyOS 的分布式終端上&#xff0c;可以保證“正確的人&#xff0c;通過正確的設備&#xff0c;正確地使用數據”。 ? 通過“分布式多端協同身份認證”來保證“正確的人”。 ? 通過“在分布式終端上構筑可信運行環境”來保證“正確的設備”。 ? …

【Dify學習筆記】:保留原所有數據,升級Dify版本

【Dify學習筆記】&#xff1a;保留原所有數據&#xff0c;升級Dify版本原版本1.4.0 升級最新版1.7.1由于是升級成功后才記錄的筆記&#xff0c;沒法獲取舊頁面的版本了&#xff0c;先看下鏡像信息&#xff0c;上面的拉取的新容器&#xff0c;下面的之前的舊容器1、關閉舊docker…

微信小程序功能實現:頁面導航與跳轉

1. 聲明式導航&#xff08;navigator組件&#xff09;聲明式導航通過在WXML頁面中使用 <navigator> 組件來實現頁面跳轉&#xff0c;使用起來較為直觀簡便&#xff0c;語法格式如下&#xff1a;<navigator url"目標頁面路徑" open-type"跳轉類型"…

GenieWizard: Multimodal App Feature Discovery with LargeLanguage Models

GenieWizard:使用LargeLanguage模型發現多模式應用程序功能 以下是對論文《GenieWizard: Multimodal App Feature Discovery with Large Language Models》的詳細總結,結合教育技術學視角的分析: 一、核心問題與背景 問題背景: 多模態交互(如語音+觸摸)比傳統圖形交互更靈…

[硬件電路-120]:模擬電路 - 信號處理電路 - 在信息系統眾多不同的場景,“高速”的含義是不盡相同的。

一、按照維度區分在信息系統中&#xff0c;“高速”是一個相對且多維的概念&#xff0c;其核心在于信號或數據的動態變化速率遠超傳統系統處理能力&#xff0c;導致必須采用專門的設計技術來保障傳輸質量與實時性。這一概念可從以下四個維度解析&#xff1a;1、頻率維度&#x…

React ahooks——副作用類hooks之useThrottleFn

useThrottleFn 用于創建一個節流函數&#xff0c;確保該函數在指定時間內最多執行一次。一、基本使用import { useThrottleFn } from ahooks; import { Button, Space } from antd;const ThrottleDemo () > {const { run, cancel, flush } useThrottleFn((message) > {…

PostgreSQL——函數

PostgreSQL函數一、數學函數1.1、絕對值函數ABS(x)和圓周率函數PI()1.2、平方根函數SQRT(x)和求余函數MOD(x,y)1.3、取整函數CEIL(x)、CEILING(x)和FLOOR(x)1.4、四舍五入函數ROUND(x)和ROUND(x,y)1.5、符號函數SIGN(x)1.6、冪運算函數POW(x,y)、POWER(x,y)和EXP(x)1.7、對數運…

ffmpeg下載windows教程

1.百度搜索ffmpeg&#xff0c;進入官網2.點擊Download3.點擊windows圖標&#xff0c;選擇藍色框內的點擊4.點擊藍色框內帶有win64下載5.下載完好打開bin&#xff0c;看到3個exe文件6.打開cmd文件輸入 ffmpeg -version &#xff0c;出現以下畫面證明安裝成功7.然后添加環…

解鎖高并發LLM推理:動態批處理、令牌流和使用vLLM的KV緩存秘密

網羅開發&#xff08;小紅書、快手、視頻號同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企業從事人工智能項目研發管理工作&#xff0c;平時熱衷于分享各種編程領域的軟硬技能知識以及前沿技術&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…

跨域場景下的Iframe事件監聽

背景在當前window窗口&#xff0c;對于一些浮窗組件&#xff0c;一般需要點擊當前window下的其他位置才能夠隱藏浮窗。但如果當前窗口中存在iframe區域&#xff0c;那么由于一些特殊的性質&#xff0c;無法通過常規的click點擊事件監聽iframe元素的點擊&#xff0c;而通過conte…

零知識證明入門應用指南:原理與Python實踐

目錄 零知識證明入門應用指南:原理與Python實踐 1. 引言:隱私計算的革命 2. 零知識證明基礎原理 2.1 數學基礎:離散對數問題 2.2 基本協議流程 2.3 核心概念 3. Schnorr協議:經典ZKP實現 3.1 協議數學描述 3.2 Python實現 4. 非交互式證明:Fiat-Shamir變換 4.1 原理 4.2 P…

PyTorch中三角函數與特殊運算詳解和實戰場景示例

在 PyTorch 中&#xff0c;三角函數&#xff08;如 sin, cos, tan 等&#xff09;和一些特殊數學運算&#xff08;如雙曲函數、反三角函數、hypot, atan2, clamp, lerp, sigmoid, softplus, special 模塊等&#xff09;被廣泛用于科學計算、機器學習、深度學習中的前向推理或梯…

論文閱讀: Mobile Edge Intelligence for Large LanguageModels: A Contemporary Survey

地址&#xff1a;Mobile Edge Intelligence for Large Language Models: A Contemporary Survey 摘要 設備端大型語言模型&#xff08;LLMs&#xff09;指在邊緣設備上運行 LLMs&#xff0c;與云端模式相比&#xff0c;其成本效益更高、延遲更低且更能保護隱私&#xff0c;因…

JavaWeb(蒼穹外賣)--學習筆記17(Websocket)

前言 本篇文章是學習B站黑馬程序員蒼穹外賣的學習筆記&#x1f4d1;。我的學習路線是Java基礎語法-JavaWeb-做項目&#xff0c;管理端的功能學習完之后&#xff0c;就進入到了用戶端微信小程序的開發&#xff0c;&#x1f64c;用戶下單并且支付成功后&#xff0c;需要第一時間通…

WebForms 簡介

WebForms 簡介 概述 WebForms 是微軟公司推出的一種用于構建動態網頁和應用程序的技術。自 2002 年推出以來,WebForms 成為 ASP.NET 技術棧中重要的組成部分。它允許開發者以類似于桌面應用程序的方式創建交互式網頁,極大地提高了 Web 開發的效率和體驗。 WebForms 的工作…

vsCode軟件中JS文件中啟用Emmet語法支持(React),外加安裝兩個常用插件

1.點擊vsCode軟件中的設置&#xff08;就是那個齒輪圖標&#xff09;&#xff0c;如下圖2.在搜索框中輸入emmet&#xff0c;然后點擊添加項&#xff0c;填寫以下值&#xff1a;項&#xff1a;javascript 值&#xff1a;javascriptreact。如下圖3.可以安裝兩個常用插件&#xf…

【第2話:基礎知識】 自動駕駛中的世界坐標系、車輛坐標系、相機坐標系、像素坐標系概念及相互間的轉換公式推導

自動駕駛中的坐標系概念及相互間的轉換公式推導 在自動駕駛系統中&#xff0c;多個坐標系用于描述車輛、傳感器和環境的相對位置。這些坐標系之間的轉換是實現定位、感知和控制的關鍵。下面我將逐步解釋常見坐標系的概念&#xff0c;并推導相互轉換的公式。推導基于標準幾何變換…

深度拆解Dify:開源LLM開發平臺的架構密碼與技術突圍

注&#xff1a;此文章內容均節選自充電了么創始人&#xff0c;CEO兼CTO陳敬雷老師的新書《GPT多模態大模型與AI Agent智能體》&#xff08;跟我一起學人工智能&#xff09;【陳敬雷編著】【清華大學出版社】 清華《GPT多模態大模型與AI Agent智能體》書籍配套視頻課程【陳敬雷…