PDF-Titel auslesen?

payakootha

Grünschnabel
Hallo,

wie komme ich (am besten mit PHP) an den Titel eines PDFs heran (Dokumenteigenschaften bzw. Strg+D), das auf dem Webserver liegt?

Hintergrund wäre eine Ausgabe à la "Die Datei xy.pdf ist 128 KB groß und trägt den Titel 'Alles über X und Y'"oder so ähnlich.

Hat jemand eine Idee?
 
Moin,

hiermit sollte es gehen. Bei meinen Tests funktionierte es immer ;-). Ob es performant oder so ist kann ich dir aber nicht sagen *g*.
PHP:
<?php

$hDirectory = opendir(getcwd());

$sOutput = '';
while ($sObject = readdir($hDirectory)) {

    if (substr($sObject,-4) == '.pdf') {

        $sFile = file_get_contents($sObject);
        preg_match('/\/Title\((.*)\)/Ui',$sFile,$aResult);

        $sOutput .= '<b>Titel der Datei:</b> '.htmlentities($aResult[1]).'<br />'."\n";
        $sOutput .= '<b>Größe der Datei:</b> '.number_format((strlen($sFile)/1024),2,',','.').' KB<br /><br />'."\n";

    }

}

echo($sOutput);

?>
Gruß thing
 
klang erst einmal sehr viel versprechend (*frohlock*), aber wenn ich den content einlese, kommt nur Kauderwelsch bei raus (sowas Richtung f>Žˆo–”5’?}*˜ÑÂ[Íl¾«rýý+u¿d¤O Âà usw...).

Muss ich dazu die pdflib installieren?

Sorry, hab mit PDF & PHP vorher noch nix zu tun gehabt...
(also, einzeln schon, aber nicht in der Kombi!)
 
Zuletzt bearbeitet:
Jo in dem PDF steht auch viel Zeugs in der Richtung drin. Ist ja nicht umsonst kein XML-File :-), aber der Titel steht dort eigentlich als /Title(Ich bin der Titel des Dokuments) weiter unten drin...

Was genau meinst du mit Content einlesen ? Nur das Einlesen oder wirklich die Ausgabe bei meinem Script ?

Gruß thing
 
thing hat gesagt.:
Jo in dem PDF steht auch viel Zeugs in der Richtung drin. Ist ja nicht umsonst kein XML-File :-), aber der Titel steht dort eigentlich als /Title(Ich bin der Titel des Dokuments) weiter unten drin...
Bei mir steht nur an einer Stelle ein /Title, nämlich der mit dem "Zeugs". Und bitte nicht fragen: Das PDF hat einen Titel (selber :-) ... *g*), eingetragen in den Dokumenteigenschaften/Metadaten (Strg+D im Acrobat). Da komm ich via PHP aber nicht ran.

thing hat gesagt.:
Was genau meinst du mit Content einlesen ? Nur das Einlesen oder wirklich die Ausgabe bei meinem Script ?
Wo ist der Unterschied?
Nun gut, also ans Eingemachte. Da es im Script um jeweils eine spezielle Datei geht, brauch ich keine Schleife:

PHP:
   $pdf_content=file_get_contents("http://www.domain.xy/bla.pdf");
  preg_match('/\/Title \((.*)\)/Ui',$pdf_content,$reg);
  echo "Titel: ".$reg[1]."<br>\n";
  echo "Inhalt: " . $pdf_content;

Wenn ich wie in deinem Code hinter dem "/\/Title..." kein Leerzeichen mache, dann matcht er nix. Mit Leerzeichen findet er erwähntes Kauderwelsch. Wenn ich mir nun zusätzlich den kompl. von ihm eingelesenen Content anzeigen lasse (zum Testen ohne Entities) und dann in den Quellcode schaue, dann gibt's da auch nur eine Stelle im Text, wo das Wort "Title" erscheint - MIT nachfolgendem Leerzeichen.

Und nu, sprach Kuh Else?

Vermute ja schon fast, dass ich den Titel woanders reintragen muss ... oder wie oder was ... oder doch pdflib?

*ratlos*
 
Von der pdflib habe ich ehrlich gesagt keine Ahnung ;-), aber ich habe als ich das Script geschrieben habe auch nur eine PDF-Datei mit Titel kurz angesehen. Eventuell unterscheidet sich das von Format zu Format und Datei zu Datei.
 
Zurück