2

PDF の最初のページから画像を作成したい。私は PDFBox を使用しています。web で調査した後、次のコード スニペットを見つけました。

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 ドライブに保存される一連の画像を生成することを期待しています。しかし、このコードから生成されたそのコードにはイメージがありません。なんで ?

4

2 に答える 2

7

失礼なことを言うつもりはありませんが、投稿したコードがメインの作業ループ内で行うことは次のとおりです。

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

PDF ファイルから各ページを取得し、ページからリソースを取得し、埋め込まれた画像を抽出しています。次に、それらをディスクに書き込みます。

有能なソフトウェア開発者になるには、ドキュメントを調べて読むことができる必要があります。Java では、Javadocs を意味します。グーグルPDPage(または明示的に apache サイトにアクセス)すると、 PDPage の Javadoc が表示されます。

convertToImage()そのページには、 を画像に変換する方法の 2 つのバージョンがありますPDPage。問題が解決しました。

を除外する ...

残念ながら、java.awt.image.BufferedImageあなたが尋ねた他の質問に基づいて、あなたが取り組んでいる Android プラットフォームでサポートされていないため、問題が返されます。

要するに、Android で Apache の PDFBox を使用して、やろうとしていることを実行することはできません。

StackOverflow で検索すると、この同じ質問がさまざまな形式で何度も提示されていることがわかります。あなたにとって興味深い答え:https://stackoverflow.com/a/4779852/302916

残念ながら、前述の回答が機能すると言っているものでさえ...あまりユーザーフレンドリーではありません。私が見つけることができる「ハウツー」やドキュメントはありません。「アルファ」とも表記されます。これはおそらく、使用を開始するためにコードを読んで理解する必要があるため、気まぐれな人向けのものではありません。

于 2013-02-14T20:42:50.447 に答える
1

上記のコードをコピーし、Eclipse のビルドパスに次のライブラリを追加しました。それは働いています。

Apache PDFBox 1.7.1 ライブラリ

Commons Logging 1.1.1 ライブラリ

于 2013-02-14T06:49:47.370 に答える