」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用 PDFBox 將 PDF 檔案轉換為影像?

如何使用 PDFBox 將 PDF 檔案轉換為影像?

發佈於2024-12-22
瀏覽:634

How to Convert PDF Files to Images Using PDFBox?

使用PDFBox將PDF文件轉換為圖像

簡介

PDFBox是一個流行的開放式-用於處理PDF 文件的來源Java 庫。 PDFBox 具有眾多功能,其中包括允許開發人員將 PDF 文件轉換為圖像,從而方便將各個頁面提取為圖像格式。本教學將引導您完成使用 PDFBox 實現此轉換的過程。

轉換範例程式碼

PDFBox 1.8.* 版本的解決方案:

PDDocument document = PDDocument.loadNonSeq(new File(pdfFilename), null);
List pdPages = document.getDocumentCatalog().getAllPages();
int page = 0;
for (PDPage pdPage : pdPages) {
      page;
    BufferedImage bim = pdPage.convertToImage(BufferedImage.TYPE_INT_RGB, 300);
    ImageIOUtil.writeImage(bim, pdfFilename   "- "   page   ".png", 300);
}
document.close();
PDDocument 文件= PDDocument.loadNonSeq(new File(pdfFilename), null); List pdPages = document.getDocumentCatalog().getAllPages(); 整數頁=0; for (PDPage pdPage : pdPages) { 頁; BufferedImage bim = pdPage.convertToImage(BufferedImage.TYPE_INT_RGB, 300); ImageIOUtil.writeImage(bim, pdfFilename "- " 頁 ".png", 300); } document.close();

PDFBox 2.0版本解決方案:

PDDocument document = PDDocument.load(new File(pdfFilename));
PDFRenderer pdfRenderer = new PDFRenderer(document);
for (int page = 0; page PDDocument document = PDDocument.load(new File(pdfFilename));
PDFRenderer pdfRenderer = new PDFRenderer(文檔);
for (int page = 0; page PDFBox 3.0版本的解答:
PDDocument document = PDDocument.load(new File(pdfFilename));
PDFRenderer pdfRenderer = new PDFRenderer(document);
for (int page = 0; page PDDocument document = Loader.loadPDF(new File(pdfFilename));
// 其餘程式碼與 PDFBox 2.0 解決方案類似。 

其他注意事項

  • 確保您已啟用日誌記錄並使用最新的可用 JDK版本。
  • ImageIOUtil 類別可作為 PDFBox 版本 2.0 和 中的單獨下載/工件使用3.0.
  • 有關依賴項和其他配置,請參閱您所使用的相應版本的 PDFBox 文件。

最新教學 更多>
  • 在 Go 中如何可靠地比較函數指標是否相等?
    在 Go 中如何可靠地比較函數指標是否相等?
    檢測Go 中函數的指標相等性每週傳統上,比較Go 中的兩個非零函數指標涉及使用== 或!=運算符。然而,根據最近的變化,這種方法現在會導致錯誤。 更改背後的基本原則函數指標相等比較的消除源自於相等與同一的概念。在 Go 中,== 和 != 運算子評估值的等價性,而不是同一性。這種區別旨在防止這些概念...
    程式設計 發佈於2024-12-22
  • 如何在CSS中選擇具有多個屬性的元素?
    如何在CSS中選擇具有多個屬性的元素?
    如何在 CSS 中指定多個屬性選擇器在 CSS 中,可以根據多個屬性選擇元素。當您想要使用條件組合定位特定元素時,這會很有用。 語法:要選擇與多個屬性值相符的元素,請使用下列語法:[attribute1=value1] [attribute2=value2]例如,選擇具有屬性的輸入元素name=&q...
    程式設計 發佈於2024-12-22
  • Go方法中`func`後面的括號表示什麼?
    Go方法中`func`後面的括號表示什麼?
    理解 Go 方法中 func 之後的括號在 Go 中,你可能會遇到 func 關鍵字後面的括號。這些表示方法,而不是函數。我們透過一個具體的例子來理解這個特性:func (v Version) MarshalJSON() ([]byte, error) { return json.Marshal...
    程式設計 發佈於2024-12-22
  • 如何讓我的 Go 程式無限期運行?
    如何讓我的 Go 程式無限期運行?
    在 Go 程序中維護執行在 Go 中,主 Goroutine 作為程序的入口點。然而,一旦它終止,整個過程也會終止。這對設計為無限期運行的應用程式提出了挑戰。 傳統方法傳統上,程式透過以下方式維持主要活動狀態:import "fmt" func main() { go for...
    程式設計 發佈於2024-12-22
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-12-22
  • 如何使用 jQuery 建立動態顏色漸層?
    如何使用 jQuery 建立動態顏色漸層?
    使用jQuery 實現動態色彩淡入淡出:增強使用者焦點的指南動畫文字可以有效地吸引使用者註意力,但是淡入背景怎麼樣?顏色來突出顯示重要訊息?使用 jQuery,這項任務變得毫不費力。 使用 jQueryUI 淡入/淡出背景顏色要使用 jQuery 專門為元素的背景顏色設定動畫,您需要包含 jQuer...
    程式設計 發佈於2024-12-22
  • 儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    解決PHP 中的POST 請求故障在提供的程式碼片段中:action=''而非:action="<?php echo $_SERVER['PHP_SELF'];?>";?>"檢查$_POST陣列:表單提交後使用 var_dump 檢查 $_POST 陣列的內...
    程式設計 發佈於2024-12-22
  • 為什麼我的 Facebook Graph API 從 v2.2 遷移到 v2.3 後失敗?
    為什麼我的 Facebook Graph API 從 v2.2 遷移到 v2.3 後失敗?
    從v2.2 遷移到v2.3 後Facebook Graph API 無法運作升級到Facebook Graph API v2.3 後,開發人員遇到了某些API 請求無法傳回資料的問題。本文探討了遇到的具體問題,並根據最新版本 SDK 中引入的變更提供了解決方案。 問題描述開發者報告 API 請求之前...
    程式設計 發佈於2024-12-22
  • JavaScript 如何在後台工作:了解其單線程性質和非同步操作
    JavaScript 如何在後台工作:了解其單線程性質和非同步操作
    JavaScript 是網路的支柱,為數十億網站和應用程式提供動態用戶端功能。但您有沒有想過 JavaScript 是如何在後台發揮魔力的?在這篇文章中,我們將深入研究 JavaScript 單線程本質的內部工作原理並探索非同步程式設計的概念。 單線程是什麼意思? 當我們說 Jav...
    程式設計 發佈於2024-12-22
  • 如何輕鬆備份和還原所有 MySQL 資料庫?
    如何輕鬆備份和還原所有 MySQL 資料庫?
    輕鬆備份和還原 MySQL 資料庫:綜合指南管理大量 MySQL 資料庫可能令人望而生畏。為了安全的資料保護,建立定期備份至關重要。本綜合指南將提供如何輕鬆同時匯出和匯入所有 MySQL 資料庫的逐步說明。 匯出多個資料庫利用 mysqldump 實用程式是匯出多個資料庫的首選方法立刻。使用命令列,...
    程式設計 發佈於2024-12-22
  • 如何防止Python實例之間的類別資料共享?
    如何防止Python實例之間的類別資料共享?
    如何隔離各個實例的類別資料為了避免在多個實例之間共享類別資料並確保每個實例維護自己的數據,請依照下列步驟操作:在建構子中宣告變數(__init__ Method)不要在任何方法之外聲明類別級變量,而是在 init 建構函數方法中定義它們。例如:class a: def __init__(se...
    程式設計 發佈於2024-12-22
  • 如何從 Windows 上的 C++ 控制台應用程式列印 UTF-8?
    如何從 Windows 上的 C++ 控制台應用程式列印 UTF-8?
    在Windows 上從C 控制台應用程式列印UTF-8使用Visual Studio 2008 在英文Windows 系統上開發C 主機應用程式時,使用者可能會在顯示UTF- 時遇到挑戰8 透過cout或wcout正確編碼內容。以下是解決此問題的方法:解決方案:解決方案涉及將控制台的輸出代碼頁設定為...
    程式設計 發佈於2024-12-22
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-12-22
  • 為什麼 Java 的整數常數池在 127 以上表現不同?
    為什麼 Java 的整數常數池在 127 以上表現不同?
    問題:127處Java整數常數池行為的分歧簡介:The整數常數池是Java中的一種機制,可以優化常見整數值的快取以提高效能。然而,該池的行為在 127 時出現了變化,引起了開發人員的困惑。 理解行為:對於從 -128 到 127 的整數,Java 保證引用相同常數的變數具有相同的引用。 Intege...
    程式設計 發佈於2024-12-22
  • 如何在 Go 中解組具有混合資料類型的 JSON 數組?
    如何在 Go 中解組具有混合資料類型的 JSON 數組?
    解組具有混合資料類型的JSON 陣列解組包含不同資料型別值的JSON 陣列的任務通常會帶來挑戰。例如,考慮以下JSON 陣列:{["NewYork",123]}問題:首先,需要注意的是提供的JSON 在語法上不正確。 JSON 物件需要每個值的鍵,因此正確的表示形式是{"...
    程式設計 發佈於2024-12-22

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3