Seite 1 von 1

PDF per PHP auslesen

Verfasst: 24.01.2005 22:04
von PhilippK
Hallo zusammen,

kennt jemand einen (funktionierenden ;-) ) Weg, um per PHP den Text einer PDF-Datei auszulesen. Die bisherigen Versuche dazu sind bislang im Sande verlaufen :-(

Gruß, Philipp

Verfasst: 24.01.2005 23:28
von Blutgerinsel
PDF ist im Grunde ein Textformat mit zusätzlichen Grafiken, Bildern und Schriften. Dadurch das aber mögliche Kompressionraten verwendet werden können wirst du damit auf ziemliche Hindernisse stossen......

Eine reele Chance wäre vermutlich die API von Acrobat und die soll angeblich gut sein. Persönlich habe ich noch nie eine PDF Datei versucht auszulesen weil es bisher nie einen Grund gab.......

Aber ich würde es mal mit der Doku zum SDK von Acrobat versuchen
http://partners.adobe.com/asn/acrobat/docs.jsp

Verfasst: 25.01.2005 01:30
von QCO
So, jetzt mal eine unspammige und hoffentllich hilfreiche Antwort...
Ich habe mich vor einiger Zeit für ein Projekt auch mit dieser Frage befasst und konnte auch nach tagelanger Suche nichts in nativem PHP finden.

Ich weiß ja nicht genau, was du vorhast, aber falls du nicht gerade eine echte PHP-Klasse programmieren willst, die diese Aufgabe übernimmt, ist der einzig gangbare Weg wohl, auf externe Programme zurückzugreifen.
Die kannst du mittels passthru() aufrufen und gleich die Ausgabe verwenden.
Das ist zwar unschön, weil es mehr Konfigurationsaufwand, aber zumindest bei der Ausführungszeit könnte die externe Variante bei größeren Dokumenten die extra Ladezeit usw. durch deutlich schnellere Verarbeitung wett machen (C++ vs. PHP :wink:)

Jetzt kommt es darauf an, auf welchem Server das ganze laufen soll.
Für Windows gibt es verschiedene (zumeist kostenpflichtige) Tools, die PDF in alle möglichen Formate, auch txt konvertieren.
http://www.tucows.com/preview/376854.html

Insgesamt kann ich dir aber pdftotxt ans Herz legen. Das gibts unter http://www.foolabs.com/xpdf/ als Teil des xpdf-Systems. Es gibt Source und Binaries für fast alle OS; das ganze unter GPL.
Soweit ich weiß, nutzen auch Typo3 und Mambo das Tool zum Durchsuchen von PDF-Files.

Wenn du mal mit Google suchst, findest du bestimmt verschieden Wrapper-Klassen, die den Aufruf in PHP usw. für dich übernehmen.
Eine davon: http://files.greenhell.com/mediaIndexer ... f_php.html

Als Zweig davon gibts auch noch http://pdftohtml.sourceforge.net/ , falls das auch von Interesse sein sollte.

Verfasst: 25.01.2005 18:46
von PhilippK
Danke für die Antworten. Hab das an den zuständigen Kollegen weitergereicht - und er scheint 'nen Weg gefunden zu haben. :-D

Gruß, Philipp

Verfasst: 25.01.2005 19:09
von FatFreddy
Eventuell findet ihr hier einen Lösungsansatz: Class:PHP_search bei phpclasses.org
A class to search text in pdf documents.
Not pretending to be useful other than that.
But it can easily be extended to a full featured pdf document
parser by anyone who chooses so

FatFreddy

Verfasst: 25.01.2005 19:22
von Blutgerinsel
Gegen die Klassen etc. die sich im Umlauf befinden ist nichts dagegen einzuwenden......Nur sollte man auch kontrollieren ob unterschiedliche PDF Formate gearbeitet werden kann......

Da PDFs komprimiert werden können kann ein Problem ergeben.....
Genauso Wasserzeichen etc.

Es wäre vielleicht interessant für was sich dein Kollege @PhillipK entschieden hat.....Ob die API von Acrobat oder kommerzielle Mittel verwendet wurden.....

Jedenfalls stelle ich mir es mit der API von Acrobat leichter und weniger fehleranfälliger vor.........

Verfasst: 27.01.2005 09:08
von PhilippK
So, hier die kurze Erklärung:
XPDF (bzw. die Komponente pdftotext) integriert sich sehr schön in die htdig Suchmaschine - wenn man erst einmal deren Konfiguration in diversen Perl-Skripten und ihre Abneigung gegen https-Verbindungen überwunden hat. Lösung: Der Spider indexiert auf localhost per http - dadurch ist die Suchliste von htdig natürlich voller localhost-URLs. Ein schlankes PHP-Skript fungiert jetzt als Wrapper um htdig und ersetzt die http/localhost durch https/Servername. Funktioniert alles prima.
Erschwerend kam in dem Fall hinzu, dass der Zugriff auf den Server ausschließlich per HTTPS erfolgte.

Gruß, Philipp