如何在 Python 中查看 PDF 文件
本文將探討如何使用IronPDF程式庫在Python中查看PDF檔案。
IronPDF - Python 程式庫
IronPDF是一個功能強大的Python程式庫,可以讓開發者以程式方式處理PDF檔案。 使用IronPDF,您可以輕鬆地生成、操作和提取PDF文件中的資料,使其成為各種與PDF相關的任務的多功能工具。 無論您是需要從頭建立PDF、修改現有的PDF還是從PDF中提取內容,IronPDF提供了一整套功能來簡化您的工作流程。
IronPDF for Python程式庫的一些特點包括:
- 使用HTML或URL從頭建立新PDF文件
- 編輯現有PDF檔案
- 旋轉PDF頁面
- 從PDF文件中提取文字、元資料和圖像
- 將PDF檔案轉換為其他格式
- 使用密碼和限制保護PDF文件
- Split and merge PDFs
注意:IronPDF生成的PDF資料文件帶有水印。如需去除水印,您需要對IronPDF進行授權。 如果您想使用授權版本的IronPDF,請存取IronPDF網站以獲取授權金鑰。
先決條件
在使用IronPDF進行Python操作之前,您需要一些先決條件:
- Python安裝:確保您的系統上已安裝Python。 IronPDF相容Python 3.x版本,因此請確保您有一個相容的Python安裝。
IronPDF程式庫:安裝IronPDF程式庫以存取其功能。 您可以通過在命令行介面中執行以下命令來使用Python包管理工具(pip)安裝它:
pip install ironpdf
Tkinter程式庫:Tkinter是Python的標準GUI工具包。 它用於提供的程式碼片段中建立PDF查看器的圖形使用者介面。 Tkinter通常隨Python自帶,但如果您遇到任何問題,可以使用包管理工具安裝它:
pip install tkinterpip install tkinterSHELLPillow Library: Pillow程式庫是Python Imaging Library(PIL)的分支,提供了額外的圖像處理功能。 它在程式碼片段中用於載入和顯示從PDF提取的圖像。 使用包管理器安裝Pillow:
pip install pillowpip install pillowSHELL- 整合開發環境(IDE):使用IDE來處理Python專案可以大大提升您的開發體驗。 它提供程式碼補全、除錯與更流暢的工作流程等功能。 Python開發中一個受歡迎的IDE是PyCharm。 您可以從JetBrains網站(https://www.jetbrains.com/pycharm/)下載並安裝PyCharm。
- 文字編輯器:或者,如果您傾向於使用輕量級的文字編輯器,您可以選擇任何您喜歡的文字編輯器,如Visual Studio Code、Sublime Text或Atom。 這些編輯器提供語法高亮和其他有用的Python開發功能。 您還可以使用Python自己提供的IDE工具來建立Python腳本。
使用PyCharm建立PDF查看器專案
安裝完PyCharm IDE後,按以下步驟建立一個PyCharm Python專案:
- 啟動PyCharm:從系統的應用啟動器或桌面快捷方式中打開PyCharm。
建立新專案:點擊"建立新專案"或者打開已存在的Python專案。
PyCharm IDE配置專案設置:為專案提供一個名稱,並選擇建立專案目錄的位置。 選擇專案的Python解釋器。 然後點擊"建立"。
建立一個新的Python專案- 建立源文件:PyCharm將建立專案結構,包括主Python文件和附加源文件的目錄。 開始編寫程式碼,點擊運行按鈕或按Shift+F10執行程式。
使用IronPDF在Python中查看PDF檔案的步驟
導入所需的程式庫
首先,導入必要的程式庫。 在這種情況下,需要PIL程式庫。 tkinter用於建立圖形使用者介面(GUI),而PIL用於圖像處理。
import os
import shutil
import ironpdf
from tkinter import *
from PIL import Image, ImageTkimport os
import shutil
import ironpdf
from tkinter import *
from PIL import Image, ImageTk將PDF文件轉換為圖像
接下來,定義一個名為convert_pdf_to_images的函式。 該函式接收PDF文件的路徑作為輸入。 在函式內,使用IronPDF程式庫從文件中載入PDF文件。接著,指定用於儲存提取圖像文件的資料夾路徑。 IronPDF的pdf.RasterizeToImageFiles方法用於將每個PDF頁面轉換為圖像文件並保存到指定的資料夾中。 使用一個列表來儲存圖像路徑。 完整的程式碼範例如下:
def convert_pdf_to_images(pdf_file):
"""Convert each page of a PDF file to an image."""
pdf = ironpdf.PdfDocument.FromFile(pdf_file)
# Extract all pages to a folder as image files
folder_path = "images"
pdf.RasterizeToImageFiles(os.path.join(folder_path, "*.png"))
# List to store the image paths
image_paths = []
# Get the list of image files in the folder
for filename in os.listdir(folder_path):
if filename.lower().endswith((".png", ".jpg", ".jpeg", ".gif")):
image_paths.append(os.path.join(folder_path, filename))
return image_pathsdef convert_pdf_to_images(pdf_file):
"""Convert each page of a PDF file to an image."""
pdf = ironpdf.PdfDocument.FromFile(pdf_file)
# Extract all pages to a folder as image files
folder_path = "images"
pdf.RasterizeToImageFiles(os.path.join(folder_path, "*.png"))
# List to store the image paths
image_paths = []
# Get the list of image files in the folder
for filename in os.listdir(folder_path):
if filename.lower().endswith((".png", ".jpg", ".jpeg", ".gif")):
image_paths.append(os.path.join(folder_path, filename))
return image_paths要從PDF文件中提取文字,請存取此程式碼範例頁面。
處理窗口關閉
要在應用程式窗口關閉時清理提取的圖像文件,請定義一個on_closing函式。 在這個函式中,使用images資料夾。 接下來,設置此函式為窗口關閉時要執行的協議。 以下程式碼有助於完成這項任務:
def on_closing():
"""Handle the window closing event by cleaning up the images."""
# Delete the images in the 'images' folder
shutil.rmtree("images")
window.destroy()
window.protocol("WM_DELETE_WINDOW", on_closing)def on_closing():
"""Handle the window closing event by cleaning up the images."""
# Delete the images in the 'images' folder
shutil.rmtree("images")
window.destroy()
window.protocol("WM_DELETE_WINDOW", on_closing)建立GUI窗口
現在,讓我們使用Tk()構造函式建立主GUI窗口,將窗口標題設置為"Image Viewer",並將on_closing()函式設為處理窗口關閉的協議。
window = Tk()
window.title("Image Viewer")
window.protocol("WM_DELETE_WINDOW", on_closing)window = Tk()
window.title("Image Viewer")
window.protocol("WM_DELETE_WINDOW", on_closing)建立可滾動的畫布
為了顯示圖像並啟用滾動,建立一個Canvas小部件。 pack(side=LEFT, fill=BOTH, expand=True)在兩個方向上擴展。 此外,建立一個Scrollbar小部件並將其配置為控制所有頁面和畫布的垂直滾動。
canvas = Canvas(window)
canvas.pack(side=LEFT, fill=BOTH, expand=True)
scrollbar = Scrollbar(window, command=canvas.yview)
scrollbar.pack(side=RIGHT, fill=Y)
canvas.configure(yscrollcommand=scrollbar.set)
# Update the scrollregion to encompass the entire canvas
canvas.bind("<Configure>", lambda e: canvas.configure(
scrollregion=canvas.bbox("all")))
# Configure the vertical scrolling using mouse wheel
canvas.bind_all("<MouseWheel>", lambda e: canvas.yview_scroll(
int(-1*(e.delta/120)), "units"))canvas = Canvas(window)
canvas.pack(side=LEFT, fill=BOTH, expand=True)
scrollbar = Scrollbar(window, command=canvas.yview)
scrollbar.pack(side=RIGHT, fill=Y)
canvas.configure(yscrollcommand=scrollbar.set)
# Update the scrollregion to encompass the entire canvas
canvas.bind("<Configure>", lambda e: canvas.configure(
scrollregion=canvas.bbox("all")))
# Configure the vertical scrolling using mouse wheel
canvas.bind_all("<MouseWheel>", lambda e: canvas.yview_scroll(
int(-1*(e.delta/120)), "units"))為圖像建立框架
接下來,使用Frame小部件來容納圖像,以將框架放置在畫布中。 anchor='nw'參數確保框架從畫布的左上角開始。
frame = Frame(canvas)
canvas.create_window((0, 0), window=frame, anchor="nw")frame = Frame(canvas)
canvas.create_window((0, 0), window=frame, anchor="nw")將PDF文件轉換為圖像並顯示
下一步是使用輸入PDF的文件路徑名稱調用convert_pdf_to_images()函式。此函式將PDF頁面提取為圖像並返回圖像路徑的列表。 通過遍歷圖像路徑並使用PIL程式庫的PhotoImage物件。 然後建立一個Label小部件來顯示圖像。
images = convert_pdf_to_images("input.pdf")
# Load and display the images in the Frame
for image_path in images:
image = Image.open(image_path)
photo = ImageTk.PhotoImage(image)
label = Label(frame, image=photo)
label.image = photo # Store a reference to prevent garbage collection
label.pack(pady=10)images = convert_pdf_to_images("input.pdf")
# Load and display the images in the Frame
for image_path in images:
image = Image.open(image_path)
photo = ImageTk.PhotoImage(image)
label = Label(frame, image=photo)
label.image = photo # Store a reference to prevent garbage collection
label.pack(pady=10)
輸入文件
運行GUI主迴圈
最後,讓我們使用window.mainloop()運行主事件迴圈。 這確保GUI窗口保持開啟和響應狀態,直到使用者關閉它為止。
window.mainloop()window.mainloop()
UI輸出
結論
這個教程探討了如何使用IronPDF程式庫在Python中查看PDF檔案。 它涵蓋了開啟PDF文件並將其轉換為一系列圖像文件、在可滾動畫布中顯示它們以及在應用程式關閉時處理提取圖像的步驟。
有關IronPDF for Python程式庫的更多詳細資訊,請參考文件。
下載並安裝IronPDF for Python程式庫,還可以獲得免費試用來測試其在商業開發中的完整功能。
常見問題
我如何在Python中查看PDF文件?
您可以使用IronPDF程式庫在Python中查看PDF文件。它允許您將PDF頁面轉換為圖片,然後可以使用Tkinter在GUI應用程式中顯示這些圖片。
建立一個Python的PDF查看器需要哪些步驟?
要在Python中建立一個PDF查看器,您需要安裝IronPDF,使用Tkinter進行GUI顯示,並使用Pillow進行圖片處理。使用IronPDF將PDF頁面轉換為圖片,並在Tkinter建立的可滾動畫布中顯示。
我如何在Python專案中安裝IronPDF?
您可以在終端或命令提示字元中運行命令pip install ironpdf來安裝IronPDF。
在Python中構建PDF查看應用程式需要哪些程式庫?
您將需要IronPDF來處理PDF,Tkinter用於GUI,Pillow用於圖片處理。
我可以使用Python提取PDF中的圖片嗎?
是的,IronPDF允許您從PDF中提取圖片,然後可以使用Pillow程式庫進行處理或顯示。
我如何在Python中將PDF頁面轉換為圖片?
您可以使用IronPDF功能將PDF頁面轉換為圖片格式,然後在Python應用程式中進行操控或顯示。
在Python的PDF查看應用程式中如何處理窗口關閉?
在PDF查看應用程式中,您可以通過清理提取的圖片並確保所有資源妥善釋放來處理窗口關閉,通常使用Tkinter的事件處理功能。
我如何在Python中保護PDF文件?
IronPDF提供選項來增強PDF的安全性,可以為PDF文件新增密碼和使用限制。
使用Tkinter在PDF查看應用程式中有什麼優勢?
Tkinter允許您為PDF查看器建立一個使用者友好的圖形介面,啟用可滾動視圖等功能以瀏覽PDF頁面。
在PDF專案中使用Pillow的目的為何?
Pillow在PDF專案中用於處理圖片,例如載入和顯示使用IronPDF從PDF文件中提取的圖片。









