Schrift
[thread]7829[/thread]

PDF - Text auslesen: mit PDF::API2 oder CAM::PDF

Leser: 3


<< >> 5 Einträge, 1 Seite
Cremator
 2006-03-25 13:36
#64081 #64081
User since
2003-11-26
97 Artikel
BenutzerIn
[default_avatar]
Hoi!

Ich will/muss PDFs unter Windows indexieren. Auf der Suche nach geeigneten Modulen bin ich auf 2 vielversprechende gestossen: CAM::PDF und PDF::API2.

CAM::PDF lässt sich zur Zeit nicht über den PPM installieren, da Crypt::RC4 nicht als PPD verfügbar ist. Auch nachdem ich Crypt::RC4 vom CPAN geladen und installiert habe lässt es sich nicht über den PPM installieren. Installation der CPAN-Version von CAM-PDF scheitert weil 1 Test nicht durchläuft. Leider verrät er mir nicht welcher (und nervt zu Tode weil die PDF-Binärdaten auf STDOUT ausgegeben werden)...

Also hab ich dann PDF::API2 installiert. Laut Aussage des Autors im POD von CAM::PDF soll es ja auch derzeit das beste PDF-Modul sein...

Leider ist das Wiki unter http://pdfapi2.sourceforge.net/twiki/ nicht mehr existent und archive.org hat keinen Mirror davon. Alle anderen Beispiele und Dokumentation die ich bisher gefunden habe ist darauf ausgelegt ein neues PDF zu erzeugen.

Aus der spärlichen Doku hab ich mir nun zusammengepuzzelt wie ich auf das Textobjekt komme, aber danach geht's nicht weiter...
Code: (dl )
1
2
3
4
5
6
7
8
use PDF::API2;

my $pdf = PDF::API2->open('test.pdf');
my $page = $pdf->openpage(1);
my $txt = $page->text;
my $str = $txt->??????? # was jetzt?

$pdf->end;

$pdf->stringify() macht auch nicht das Gewünschte, sondern gibt das gesammte PDF als Binärstring zurück, damit man's ausgeben oder in eine Datei schreiben kann.

Irgendwie weiss ich grad nicht weiter, ausser pdf2text von XPDF als externes Programm aufzurufen.
esskar
 2006-03-25 14:57
#64082 #64082
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich hab gerade ein ähnliches projekt am laufen gehabt.
Und zwar hat ein Kunde seine Domain umgestellt. Er bietet haber noch PDF's zum download an, dass noch seine alte Domain enthält. Deswegen mussten die PDF's gepatched werden. Ich hatte aber Vorteil, dass mein Kunde den Adobe Acrobat gekauft hat und ich denn dann (mit Hilfe des Adobe SDK) anprogrammieren konnte.

$page->text liefert ein Object von Typ CPAN:PDF::API2::Text.
Damit müsstest du was anfangen können.

Bist du sicher, dass die erste Page wirklich mit 1 und nicht mit 0 angesprochen wird?
Cremator
 2006-03-25 23:36
#64083 #64083
User since
2003-11-26
97 Artikel
BenutzerIn
[default_avatar]
Ja, laut Auszug Doku PDF::API2
Quote
$page = $pdf->openpage(1); # returns the first page


Zum Objekt: Mit ref($page->text) bekomme ich "PDF::API2::Content::Text" und die Doku dafuer ... sieh selbst: CPAN POD

Nachdem ich mir die Sourcen mal angeschaut habe bin ich auch nicht wirklich schlauer. Ich weiss jetzt zwar, das PDF::API2::Content::Text von PDF::API2::Basic::PDF::Dict abgeleitet ist, welches wiederum von PDF::API2::Basic::PDF::Objind abgeleitet ist, aber eine Accessor-Methode hab ich immer noch nicht gefunden. Zuerst dachte ich val() waere es aber da kommt auch nur wieder ein Text-Objekt zurueck.

Das Ding ist mir auch eigentlich ein bissl zu verworren um da weiter drin rumzuwuehlen.
esskar
 2006-03-26 01:00
#64084 #64084
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Cremator,25.03.2006, 22:36]Nachdem ich mir die Sourcen mal angeschaut habe bin ich auch nicht wirklich schlauer. Ich weiss jetzt zwar, das PDF::API2::Content::Text von PDF::API2::Basic::PDF::Dict abgeleitet ist, welches wiederum von PDF::API2::Basic::PDF::Objind abgeleitet ist, aber eine Accessor-Methode hab ich immer noch nicht gefunden. Zuerst dachte ich val() waere es aber da kommt auch nur wieder ein Text-Objekt zurueck.[/quote]
PDF::API2::Content::Text ist auch von CPAN:PDF::API2::Content abgeleitet!
sesth
 2006-03-26 14:10
#64085 #64085
User since
2005-02-01
181 Artikel
BenutzerIn
[default_avatar]
Ist vielleicht etwas OT, aber Adobe bietet für Windows einen freien IFilter an, den auch M$ für den Indexer und die Desktop-Suche nutzt. Das API ist offengelegt und kann vermutlich von Perl aus anprogrammiert werden. Zum Indizieren sollte das reichen. Eine andere Alternative gibt es unter http://www.kryltech.com/freestf.htm.
Gruß
Thomas
<< >> 5 Einträge, 1 Seite



View all threads created 2006-03-25 13:36.