簡體   English   中英

如何使用JAVA中的PDFBox從PDF創建圖像

[英]How to create image from PDF using PDFBox in JAVA

我想從PDF的第一頁創建一個圖像。 我正在使用PDFBox。 在網上研究后,我發現了以下代碼片段:

public class ExtractImages
 {
    public static void main(String[] args)
    {
        ExtractImages obj = new ExtractImages();
            try 
            {
                obj.read_pdf();
            }

            catch (IOException ex)
            {
                System.out.println("" + ex);
            }

    }

    void read_pdf() throws IOException 
    {
            PDDocument document = null; 
            try 
            {
                document = PDDocument.load("H:\\ct1_answer.pdf");
            }
            catch (IOException ex)
            {
                System.out.println("" + ex);
            }

            List<PDPage>pages =  document.getDocumentCatalog().getAllPages();
            Iterator iter =  pages.iterator(); 

            int i =1;
            String name = null;

            while (iter.hasNext()) 
            {
                PDPage page = (PDPage) iter.next();
                PDResources resources = page.getResources();
                Map pageImages = resources.getImages();
                if (pageImages != null) 
                { 
                    Iterator imageIter = pageImages.keySet().iterator();
                    while (imageIter.hasNext()) {
                        String key = (String) imageIter.next();
                        PDXObjectImage image = (PDXObjectImage) pageImages.get(key);
                        image.write2file("H:\\image" + i);
                        i ++;
                    }
                }
            }

        }

 } 

在上面的代碼中沒有錯誤。 但是這段代碼的輸出都沒有。 我原以為上面的代碼會生成一系列將保存在H盤中的圖像。 但是,從該代碼生成的代碼中沒有圖像。 為什么?

不試圖粗魯,這就是你在其主要工作循環中發布的代碼:

PDPage page = (PDPage) iter.next();
PDResources resources = page.getResources();
Map pageImages = resources.getImages();

它從PDF文件獲取每個頁面,從頁面獲取資源,並提取嵌入的圖像 然后它將這些寫入磁盤。

如果您要成為一名稱職的軟件開發人員,您需要能夠研究和閱讀文檔。 使用Java,這意味着Javadocs。 谷歌搜索PDPage (或顯式轉到Apache網站) 為PDPage打開了Javadoc

在該頁面上,您可以找到用於將PDPage轉換為圖像的方法convertToImage()兩個版本。 問題解決了。

除了 ...

不幸的是,他們返回一個java.awt.image.BufferedImage ,它基於您提出的其他問題是一個問題,因為Android平台不支持您正在處理的問題。

簡而言之,你不能在Android上使用Apache的PDFBox來做你想做的事情。

在StackOverflow上搜索,您會發現同樣的問題以不同的形式多次提出,這將引導您: https//stackoverflow.com/questions/4665957/pdf-parsing-library-for-android/4766335#4766335,其中包含以下內容:你會感興趣的答案: https//stackoverflow.com/a/4779852/302916

不幸的是,即使是上述答案所說的那個也會起作用......對用戶不是很友好; 我找不到“如何”或文檔。 它也被標記為“alpha”。 這可能不適合虛假的事情,因為它需要閱讀和理解他們的代碼甚至開始使用它。

我復制了你上面的代碼並在eclipse中將我的libs添加到我的buildpath中。 這是工作。

Apache PDFBox 1.7.1庫

Commons Logging 1.1.1 libs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM