使用Python從PDF中提取圖片和圖片信息(坐標、寬度和高度等)
引言
PDF文件作為一種廣泛使用的電子文檔格式,不僅包含文字信息,還可能包含各種圖片、圖表等視覺元素。在某些場景下,我們可能需要從PDF文件中提取這些圖片,用于其他用途,比如插入到演示文稿中,或者進行進一步的編輯和處理。手動從PDF中提取圖片是一項耗時的工作,尤其是當需要處理大量PDF文檔時。而使用Python自動化這一過程,可以大幅節(jié)省時間和精力。這篇博客將探討如何使用Python從PDF中提取圖片以及圖片的相關(guān)信息如坐標、寬度和高度等。
使用工具
本文使用的是Spire.PDF for Python庫來實現(xiàn)從PDF中提取圖片和圖片信息。
你可以通過在終端運行以下命令來從PyPI安裝Spire.PDF for Python:
pip install Spire.PDF
Python從PDF的特定頁面中提取圖片
要從PDF的特定頁面中提取圖片,首先需要使用PdfDocument.Pages[page_index]屬性訪問目標頁面。之后,使用PdfImageHelper.GetImagesInfo(page) 方法獲取該頁面上的圖片信息。最后使用PdfImageInfo.Image.Save() 方法將每個圖片保存為獨立的圖片文件。具體步驟如下:
- 創(chuàng)建 PdfDocument 類的實例并使用 PdfDocument.LoadFromFile() 方法加載 PDF 文檔。
- 使用PdfDocument.Pages[page_index]屬性訪問目標頁面,這里的page_index表示頁面的索引,從0開始計數(shù)。
- 創(chuàng)建 PdfImageHelper 實例。
- 使用 PdfImageHelper.GetImagesInfo(page) 方法獲取目標頁面中的圖片信息。
- 循環(huán)遍歷獲取結(jié)果,使用 PdfImageInfo.Image.Save() 方法將每張圖片保存為獨立的圖片文件。
from spire.pdf.common import *
from spire.pdf import *
import os
def extract_images_from_pdf_page(pdf_path, page_index, output_dir):
"""
從 PDF 文件的指定頁面中提取圖片,并將其保存到指定的輸出目錄中。
參數(shù):
pdf_path (str): PDF 文件的路徑。
page_index (int): 要提取圖片的頁面的索引值。
output_dir (str): 輸出圖片文件的目錄。
"""
# 創(chuàng)建 PdfDocument 實例并加載 PDF 文件
doc = PdfDocument()
doc.LoadFromFile(pdf_path)
# 獲取需要提取圖片的目標頁面
page = doc.Pages[page_index]
# 創(chuàng)建 PdfImageHelper 實例
image_helper = PdfImageHelper()
# 獲取目標頁面的圖片信息
image_infos = image_helper.GetImagesInfo(page)
image_count = 1
# 提取并保存圖片
for image_index in range(len(image_infos)):
# 指定輸出文件名
output_file = os.path.join(output_dir, f"Image-{image_count}.png")
# 將圖片保存為圖片文件
image_infos[image_index].Image.Save(output_file)
image_count += 1
doc.Close()
# 使用示例
extract_images_from_pdf_page("示例.pdf", 1, "C:/Users/Administrator/Desktop/圖片")Python從PDF文檔中提取圖片
要從整個PDF文檔中提取圖片,只需要循環(huán)遍歷文檔中的頁面,然后重復(fù)上面的步驟,從每個頁面上提取圖片信息,最后將圖片保存為獨立的圖片文件即可。具體步驟如下:
- 創(chuàng)建 PdfDocument 實例并使用 PdfDocument.LoadFromFile() 方法加載 PDF 文檔。
- 創(chuàng)建 PdfImageHelper 實例。
- 循環(huán)遍歷文檔中的頁面。
- 使用 PdfImageHelper.GetImagesInfo(page) 方法獲取每個頁面中的圖片信息。
- 遍歷獲取結(jié)果,使用 PdfImageInfo.Image.Save() 方法將每張圖片保存為圖片文件。
from spire.pdf.common import *
from spire.pdf import *
def extract_images_from_pdf(pdf_path, output_dir):
"""
從 PDF 文件中提取所有圖片,并將其保存到指定的輸出目錄中。
參數(shù):
pdf_path (str): 輸入 PDF 文件的路徑。
output_dir (str): 輸出圖片文件的目錄。
"""
# 創(chuàng)建 PdfDocument 實例并加載 PDF 文件
doc = PdfDocument()
doc.LoadFromFile(pdf_path)
# 創(chuàng)建 PdfImageHelper 實例
image_helper = PdfImageHelper()
image_count = 1
# 循環(huán)遍歷每個頁面
for page_index in range(doc.Pages.Count):
page = doc.Pages[page_index]
# 獲取頁面的圖片信息
image_infos = image_helper.GetImagesInfo(page)
# 提取并保存圖片
for image_index in range(len(image_infos)):
# 指定輸出文件名
output_file = os.path.join(output_dir, f"Image-{image_count}.png")
# 將圖片保存為圖片文件
image_infos[image_index].Image.Save(output_file)
image_count += 1
doc.Close()
# 使用示例
extract_images_from_pdf("示例.pdf", "C:/Users/Administrator/Desktop/圖片")Python從PDF中提取圖片的坐標、寬度和高度等信息
要提取 PDF 文件中圖片的信息,例如位置(X和Y坐標)、寬度和高度,可以使用 PdfImageInfo.Bounds.X、PdfImageInfo.Bounds.Y、PdfImageInfo.Bounds.Width 和 PdfImageInfo.Bounds.Height 屬性。具體步驟如下:
- 創(chuàng)建 PdfDocument 實例并使用 PdfDocument.LoadFromFile() 方法加載 PDF 文檔。
- 創(chuàng)建 PdfImageHelper 實例。
- 循環(huán)遍歷文檔中的頁面。
- 使用 PdfImageHelper.GetImagesInfo(page) 方法獲取每個頁面中的圖片信息。
- 遍歷獲取結(jié)果,使用 PdfImageInfo.Bounds.X、PdfImageInfo.Bounds.Y、PdfImageInfo.Bounds.Width 和 PdfImageInfo.Bounds.Height 屬性獲取圖片的坐標、寬度和高度。
from spire.pdf.common import *
from spire.pdf import *
def print_pdf_image_info(pdf_path):
"""
打印 PDF 文件中圖片的坐標、寬度和高度。
參數(shù):
pdf_path (str): 輸入 PDF 文件的路徑。
"""
# 創(chuàng)建 PdfDocument 實例并加載 PDF 文件
doc = PdfDocument()
doc.LoadFromFile(pdf_path)
# 創(chuàng)建 PdfImageHelper 實例
image_helper = PdfImageHelper()
# 循環(huán)遍歷每個頁面
for page_index in range(doc.Pages.Count):
page = doc.Pages[page_index]
# 獲取頁面的圖片信息
image_infos = image_helper.GetImagesInfo(page)
# 打印圖片的坐標位置、寬度和高度
for image_index, image_info in enumerate(image_infos):
print(f"第 {page_index + 1} 頁, 第 {image_index + 1} 個圖片:")
print(f" 圖片位置: ({image_info.Bounds.X}, {image_info.Bounds.Y})")
print(f" 圖片大小: {image_info.Bounds.Width} x {image_info.Bounds.Height}")
doc.Close()
# 使用示例
print_pdf_image_info("示例.pdf")
以上就是使用Python從PDF中提取圖片和圖片坐標、寬度和高度等信息的全部內(nèi)容。
到此這篇關(guān)于使用Python從PDF中提取圖片和圖片信息(坐標、寬度和高度等)的文章就介紹到這了,更多相關(guān)Python PDF提取圖片信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
win10環(huán)境下python3.5安裝步驟圖文教程
本文通過圖文并茂的形式給大家介紹了win10環(huán)境下python3.5安裝步驟,需要的朋友可以參考下2017-02-02
Python圖像處理庫scikit-image的使用方法詳解
在計算機視覺與圖像分析領(lǐng)域,Python已成為事實上的標準語言,scikit-image是SciPy生態(tài)的一部分,構(gòu)建在NumPy、SciPy、matplotlib基礎(chǔ)之上,旨在為科學(xué)計算和機器學(xué)習中的圖像處理提供高質(zhì)量、純Python實現(xiàn)的算法,本文將從入門到實戰(zhàn),深入講解scikit-image的方方面面2025-11-11
Python使用Selenium時遇到網(wǎng)頁<body>劃不動的問題解決方法
如果在使用 Selenium 時遇到網(wǎng)頁的 <body> 劃不動的問題,這通常是因為頁面的滾動機制(例如,可能使用了一個具有固定高度的容器或自定義的滾動條)導(dǎo)致無法通過簡單的 JavaScript 實現(xiàn)滾動,可以通過以下方法來解決該問題2024-10-10
Python實現(xiàn)可視化Excel導(dǎo)入MySQL工具的完整代碼
這篇文章主要為大家詳細介紹了如何使用Python開發(fā)一個可視化桌面工具,無需命令行操作,點點鼠標就能實現(xiàn)Excel文件一鍵導(dǎo)入MySQL,感興趣的小伙伴可以了解下2026-02-02
使用grappelli為django admin后臺添加模板
本文介紹了一款非常流行的Django模板系統(tǒng)--grappelli,以及如何給Django的admin后臺添加模板,非常的實用,這里推薦給大家。2014-11-11

