1

CAM::PDF を使用する listimages.pl が何も返さないが、PDF::GetImages を使用すると画像が抽出される PDF ファイルがあります。次のコードを使用すると、画像オブジェクトを見つけることができますが、それをファイルに抽出する方法がわかりません。また、コマンド ライン ツールが機能しない理由がわかりません。

#!/usr/bin/perl -w
use strict;

use Cwd;
use File::Basename;
use Data::Dumper;
use CAM::PDF;
use CAM::PDF::PageText;
use CAM::PDF::Renderer::Images;

my $file = shift @ARGV || die "Usage: get-pdf-images /path/to/file.pdf \n";

my $pdf = CAM::PDF->new($file) || die "$CAM::PDF::errstr\n";

#print $pdf->toString();

foreach my $p ( 1 .. $pdf->numPages() ) {
    my $page = $pdf->getPageContentTree($p);
    my $str = $pdf->getPageText($p);
    if (defined $str) {
#        CAM::PDF->asciify(\$str);
        print $str;
    }

    print "-------------------------------\n";
    my $gs = $page->findImages();
    my @imageNodes = @{$gs->{images}};
    print "Found " . scalar @imageNodes . " images on page $p\n";
    print Data::Dumper->Dump([\@imageNodes],['imageNodes']);
}

「pdfinfo.pl」を実行すると、次のように報告されます。

$ pdfinfo.pl test.pdf
File:         test.pdf
File Size:    4599 bytes
Pages:        1
Author:       þÿadmin01
CreationDate: Fri Jan  3 03:48:53 2014
Creator:      þÿPDFCreator Version 1.7.2
Keywords:
ModDate:      Fri Jan  3 03:48:53 2014
Producer:     GPL Ghostscript 9.10
Subject:
Title:        þÿVision6Card
Page Size:    variable
Optimized:    no
PDF version:  1.4
Security
  Passwd:     none
  Print:      yes
  Modify:     yes
  Copy:       yes
  Add:        yes

test.pdf ファイルは、http: //imaptools.com :8080/dl/test.pdf からダウンロードできます。

4

1 に答える 1

1

の一部CAM::PDFは未完成です。のソースを見ると、インラインlistimages.pl画像のコンテンツ解析がやや原始的であることがわかります。たとえば、との間の不一致の括弧は許可されないため(この場合のように)、ここに画像が見つかりません。があり、インライン画像を解析するために別のヒューリスティックを使用していますが、このファイルではハングしているようで、混乱の原因を調べるつもりはありません。と、BIEIuninlinepdfimages.plCAM::PDF::Renderer::Images、コードのように、同じ問題に対する別の見方であり、最終的にコンテンツストリームの適切な解析を行いますが、ライブラリはここで画像データを抽出するのに役立つ手段を提供していないようです. しかし、非常に必要な場合は、プログラムで画像を抽出するための @imageNodes (幅、高さ、深さ、使用される圧縮、imagedata) の情報があれば、技術的な問題はありません (あなたの時間を除く)。

于 2014-01-16T19:12:29.747 に答える