2017-08-08 59 views
1

朋友,我正在使用PDFBox 2.0.6。我從PDF文件中提取圖像已取得成功,但現在它正在爲單個PDF頁面創建圖像。但問題是,可能會有任何不。在一個PDF頁面中的圖像,我希望每個嵌入圖像應該被提取爲一個單一的圖像本身。使用PDFBox從單個PDF頁提取多個嵌入圖像

下面是代碼,

import java.awt.image.BufferedImage; 
import java.io.File; 
import javax.imageio.ImageIO; 
import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.rendering.PDFRenderer; 

public class DemoPdf { 

    public static void main(String args[]) throws Exception { 
     //Loading an existing PDF document 
     File file = new File("C:/Users/ADMIN/Downloads/Vehicle_Photographs.pdf"); 
     PDDocument document = PDDocument.load(file); 
     //Instantiating the PDFRenderer class 
     PDFRenderer renderer = new PDFRenderer(document); 
     File imageFolder = new File("C:/Users/ADMIN/Desktop/image"); 

     for (int page = 0; page < document.getNumberOfPages(); ++page) { 
      //Rendering an image from the PDF document 
      BufferedImage image = renderer.renderImage(page); 
      //Writing the image to a file 
      ImageIO.write(image, "JPEG", new File(imageFolder+"/" + page +".jpg")); 
      System.out.println("Image created"+ page); 
     } 
     //Closing the document 
     document.close(); 
    } 

} 

是否有可能在PDFBox的,我可以提取所有嵌入圖像作爲單獨的圖像,由於

+1

https://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractImages.java?view=markup –

+0

2.0.7已發佈。 –

回答

2

是。可以從PDF中的所有頁面提取所有圖像。

您可以參考此鏈接,extract images from pdf using PDFBox

這裏的基本思想是,用PDFStreamEngine擴展類,並重寫processOperator方法。爲所有頁面調用PDFStreamEngine.processPage。如果傳遞給processOperator的對象是一個Image對象,則從該對象獲取BufferedImage並保存它。

+0

謝謝,Malikarjun.It解釋了這一切 –

+0

請注意,雖然這個例子寫得很好,答案很好,但它沒有官方工具的功能(請參閱我的其他評論中的鏈接)。官方工具可以避免重複,也可以檢測內嵌圖像並以jpg格式1:1保存jpg文件。 –