Java 使用PDFBox提取PDF檔案中的圖片

來源:互聯網
上載者:User

標籤:oid   set   exception   res   ++   maven   需求   phi   iterator   

今天做PDF檔案解析,遇到一個需求:提取檔案中的圖片並儲存。使用的是流行的apache開源jar包pdfbox, 但還是遇到坑了,比如pdfbox版本太高或太低都不能用!!這個包竟然沒有很好地做好相容問題,有些方法在高版本說捨棄就捨棄了。暫時沒有時間去研究版本間的區別。以下給我這個問題的解決方案。

pdfbox版本:1.8.13

maven傳送門:

<!-- 處理pdf檔案 -->  <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->  <dependency>      <groupId>org.apache.pdfbox</groupId>      <artifactId>pdfbox</artifactId>      <version>1.8.13</version>  </dependency>  

 

代碼:

package com.tbd.util;import java.io.File;import java.io.IOException;import java.util.Iterator;import java.util.List;import java.util.Map;import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.pdmodel.PDPage;import org.apache.pdfbox.pdmodel.PDResources;import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectImage;/** * 提取PDF中的圖片 * pdfbox 版本 1.8.13 * @author Charlie Wu * 2018/05/24 */public class PDF2Image {/** * 提取 * @param filePDF檔案 * @param targetFolder 圖片存放目錄 * @return  */public static boolean extractImages(File file, String targetFolder) {  boolean result = true;try{PDDocument document = PDDocument.load(file);    List<PDPage> pages = document.getDocumentCatalog().getAllPages();Iterator<PDPage> iter = pages.iterator();int count = 0;while( iter.hasNext()){    PDPage page = (PDPage)iter.next();    PDResources resources = page.getResources();    Map<String, PDXObjectImage> images = resources.getImages();    if(images != null)    {        Iterator<String> imageIter = images.keySet().iterator();        while(imageIter.hasNext())        {        count++;            String key = (String)imageIter.next();            PDXObjectImage image = (PDXObjectImage)images.get( key );            String name = file.getName() + "_" + count;// 圖片檔案名稱image.write2file(targetFolder + name);// 儲存圖片        }    }}} catch(IOException ex){ex.printStackTrace();return false;}return result;    } public static void main(String[] args) {File file = new File("F:/test.pdf");String targerFolder = "F:/target/";extractImages(file, targerFolder);}}

  

Java 使用PDFBox提取PDF檔案中的圖片

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.