1

いくつかの画像を含むPDFドキュメントがあります。

これらの画像の名前を取得したい。

iTextまたはpdfboxを使用してこれを実現するにはどうすればよいですか?

ExtractImagesがPDFから画像を抽出することを知っています。画像の名前を取得する機能がどこかにあると思います。ただし、ExtractImagesの使用法はわかりません。

PDFの名前をフェッチする実際の問題は、PDFのサイズを縮小するために、これらの画像を圧縮するためにそれを使用することです。私のアプローチは正しいですか?

4

1 に答える 1

0

pdfboxで取得できるのは、画像のキーとその接尾辞(タイプ)です。その画像を保存することもできます。

    String prefix = new File(pdfFilename).getName();
    prefix = prefix.substring(0, prefix.indexOf(".pdf"));

    PDDocument document = null;

    try
    {
        document = PDDocument.loadNonSeq(new(pdfFilename), null); // use non-seq parser is better

        List<PDPage> pages = document.getDocumentCatalog().getAllPages();
        System.out.println(pdfFilename + ": Total pages: " + pages.size());
        int p = 0;
        for (PDPage page : pages)
        {
            ++p;
            PDResources resources = page.getResources();
            Map<String, PDXObjectImage> imageResources = resources.getImages();
            for (String key : imageResources.keySet())
            {
                PDXObjectImage objectImage = imageResources.get(key);
                System.out.printf("image key '%s': %d x %d, type %s%n", key, objectImage.getHeight(), objectImage.getWidth(), objectImage.getSuffix());

                // write that image
                String fname = String.format("%s-%04d-%s", prefix, p, key);
                objectImage.write2file(fname);
            }
        }
    }
    // put catch here
    document.close();

ただし、これらすべての画像が直接PDFに変換された、つまり回転、平行移動、スケーリングがないことが確実でない限り、これは役に立ちません。これが必要な場合は、PDFBOXsrcダウンロードのPrintImageLocations.javaの例を参照してください。

于 2012-09-07T09:44:25.690 に答える