翻譯|使用教程|編輯:吉煒煒|2025-07-28 11:46:19.627|閱讀 90 次
概述:在處理包含圖片的 PDF 文件時,例如掃描文檔、產(chǎn)品手冊或宣傳資料,我們經(jīng)常需要將其中的圖像提取出來,用于保存、識別或再加工。本文將介紹如何使用 Spire.PDF for Java 實現(xiàn) 從 PDF 中提取圖片,并提供基礎(chǔ)操作方法與高級提取技巧。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
在處理包含圖片的 PDF 文件時,例如掃描文檔、產(chǎn)品手冊或宣傳資料,我們經(jīng)常需要將其中的圖像提取出來,用于保存、識別或再加工。E-iceblue旗下Spire系列產(chǎn)品,是文檔處理領(lǐng)域的佼佼者,支持國產(chǎn)化信創(chuàng)。本文將介紹如何使用 Spire.PDF for Java 實現(xiàn) 從 PDF 中提取圖片,并提供基礎(chǔ)操作方法與高級提取技巧。無論你是在開發(fā)一個圖像提取工具,還是希望通過 Java 從 PDF 中獲取嵌入圖像,本教程都將提供實用的代碼示例和詳盡的解讀。
加入Spire技術(shù)交流QQ群(125237868),與更多開發(fā)者一起提升文檔開發(fā)技能。
在 Java 中直接處理 PDF 并提取圖像并不容易。由于 PDF 文件中的圖片可能被壓縮、編碼或嵌入在復(fù)雜結(jié)構(gòu)中,使用原生 API 很難有效完成圖像提取任務(wù)。
Spire.PDF for Java 提供了簡潔的 API,能夠準(zhǔn)確識別并提取 PDF 中的嵌入圖像,非常適合構(gòu)建文檔處理和圖像提取類應(yīng)用。
開發(fā)環(huán)境建議如下:
Maven 引入方式:
<repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>//repo.e-iceblue.com/nexus/content/groups/public/</url> </repository> </repositories> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.pdf</artifactId> <version>11.7.5</version> </dependency>
我們可以使用 PdfImageHelper 類來遍歷 PDF 各頁并提取圖像信息,然后獲取圖像內(nèi)容并保存。該類可自動識別嵌入或內(nèi)聯(lián)圖像,并返回其內(nèi)容及元數(shù)據(jù)信息(如尺寸、位置等)。
import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfPageBase; import com.spire.pdf.utilities.PdfImageHelper; import com.spire.pdf.utilities.PdfImageInfo; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class ExtractAllImagePDF { public static void main(String[] args) throws IOException { // 創(chuàng)建 PdfDocument 類的實例 PdfDocument pdf = new PdfDocument(); // 加載 PDF 文件 pdf.loadFromFile("input.pdf"); // 創(chuàng)建 PdfImageHelper 類的實例 PdfImageHelper imageHelper = new PdfImageHelper(); // 遍歷 PDF 的每一頁,提取圖片 for (int i = 0; i < pdf.getPages().getCount(); i++) { PdfPageBase page = pdf.getPages().get(i); // 獲取當(dāng)前頁面上的圖片信息 PdfImageInfo[] imagesInfo = imageHelper.getImagesInfo(page); // 遍歷所有圖片信息 for (int j = 0; j < imagesInfo.length; j++) { PdfImageInfo imageInfo = imagesInfo[j]; // 獲取圖片并保存為文件 BufferedImage image = imageInfo.getImage(); File file = new File("output/Images/Page" + i+1 + "_Image" + j+1 + ".png"); ImageIO.write(image, "png", file); // 寫入文件 } } // 關(guān)閉文檔 pdf.close(); } }
提示:確保執(zhí)行前已創(chuàng)建好“output”目錄,否則將拋出 IOException。
該方法適用于大多數(shù)含圖 PDF,可快速提取圖片資源:
某些 PDF 頁面會包含水印、邊框、按鈕等裝飾性圖像。為避免提取這些不必要內(nèi)容,可通過以下策略進(jìn)行優(yōu)化:
一些 PDF 頁面包含背景圖,而提取時背景圖通常會作為第一張圖片,可通過跳過首個圖像過濾背景圖:
for (int i = 1; i < imagesInfo.length; i++) { // 從第二張圖開始處理 BufferedImage image = imagesInfo[i].getImage(); ImageIO.write(image, "PNG", new File("output/image_" + (i - 1) + ".png")); }
還可以使用 imagesInfo[].getBounds() 獲取圖像位置與尺寸,結(jié)合邏輯判斷其是否屬于背景。
為避免導(dǎo)出圖標(biāo)、按鈕等無用小圖,可設(shè)置尺寸閾值過濾掉這些小圖:
BufferedImage image = imagesInfo[i].getImage(); if (image.getWidth() > 200 && image.getHeight() > 200) { ImageIO.write(image, "PNG", new File("output/image_" + i + ".png")); }
建議根據(jù)文檔實際情況調(diào)整尺寸閾值。
根據(jù)用途選擇不同格式:
ImageIO.write(image, "JPEG", new File("output/image_" + i + ".jpg")); // 有損壓縮 ImageIO.write(image, "BMP", new File("output/image_" + i + ".bmp")); // 無損保存
也可以寫入字節(jié)流,便于在線處理或上傳:
ByteArrayOutputStream stream = new ByteArrayOutputStream(); ImageIO.write(image, "PNG", stream);
可以。Spire.PDF for Java 提供專門的圖像提取接口,能夠快速獲取頁面中的嵌入圖像。
是的。提取后的圖像保持原始分辨率與編碼。推薦使用 PNG 或 BMP 以獲取無損質(zhì)量。
圖像提取是將 PDF 中嵌入的原始圖像提取出來;而頁面渲染是將整個 PDF 頁面(包括文字與排版)轉(zhuǎn)換為一張圖像,前者更輕量,后者更全面。
可以。大多數(shù)掃描 PDF 其實是嵌入了整頁位圖(如 JPG/TIFF),可以直接提取。
通過本文的講解,我們了解了如何使用 Spire.PDF for Java 通過 Java 代碼從 PDF 文件中提取圖像,包括基礎(chǔ)提取方法和過濾背景圖、小圖標(biāo)等進(jìn)階技巧。無論是處理掃描件、設(shè)計圖,還是提取營銷資料中的圖片,我們都可以通過 Java 程序輕松提取。
————————————————————————————————————————
關(guān)于慧都科技:
慧都科技是一家行業(yè)數(shù)字化解決方案公司,長期專注于軟件、油氣與制造行業(yè)。公司基于深入的業(yè)務(wù)理解與管理洞察,以系統(tǒng)化的業(yè)務(wù)建模驅(qū)動技術(shù)落地,幫助企業(yè)實現(xiàn)智能化運(yùn)營與長期競爭優(yōu)勢。在軟件工程領(lǐng)域,我們提供開發(fā)控件、研發(fā)管理、代碼開發(fā)、部署運(yùn)維等軟件開發(fā)全鏈路所需的產(chǎn)品,提供正版授權(quán)采購、技術(shù)選型、個性化維保等服務(wù),幫助客戶實現(xiàn)技術(shù)合規(guī)、降本增效與風(fēng)險可控。慧都科技E-iceblue的官方授權(quán)代理商,提供E-iceblue系列產(chǎn)品免費(fèi)試用,咨詢,正版銷售等于一體的專業(yè)化服務(wù)。E-iceblue旗下Spire系列產(chǎn)品是國產(chǎn)文檔處理領(lǐng)域的優(yōu)秀產(chǎn)品,支持國產(chǎn)化信創(chuàng),幫助企業(yè)高效構(gòu)建文檔處理的應(yīng)用程序。
歡迎下載|體驗更多E-iceblue產(chǎn)品
獲取更多信息請咨詢 ;技術(shù)交流Q群(125237868)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)