Extraction of PDF properties

Add-On Extraction of PDF properties

Informations

Author: Sacha MPS
License: FPDF

Description

This function extracts the document properties from a PDF file. It works fine with documents generated by FPDF. It can also work with PDFs made from other generators, but not all.

The get_pdf_prop() function returns an associative array whose keys are the names of the properties found in the file (such as Author, CreationDate, Creator, Keywords, Producer, Subject and Title).

Source

<?php
function get_pdf_prop($file)
{
    $f = fopen($file, 'rb');
    if(!$f)
        return false;

    //Read the last 16KB
    fseek($f, -16384, SEEK_END);
    $s = fread($f, 16384);

    //Extract cross-reference table and trailer
    if(!preg_match("/xref[\r\n]+(.*)trailer(.*)startxref/s", $s, $a))
        return false;
    $xref = $a[1];
    $trailer = $a[2];

    //Extract Info object number
    if(!preg_match('/Info ([0-9]+) /', $trailer, $a))
        return false;
    $object_no = $a[1];

    //Extract Info object offset
    $lines = preg_split("/[\r\n]+/", $xref);
    $line = $lines[1 + $object_no];
    $offset = (int)$line;
    if($offset == 0)
        return false;

    //Read Info object
    fseek($f, $offset, SEEK_SET);
    $s = fread($f, 1024);
    fclose($f);

    //Extract properties
    if(!preg_match('/<<(.*)>>/Us', $s, $a))
        return false;
    $n = preg_match_all('|/([a-z]+) ?\((.*)\)|Ui', $a[1], $a);
    $prop = array();
    for($i=0; $i<$n; $i++)
        $prop[$a[1][$i]] = $a[2][$i];
    return $prop;
}
?>

Download

ZIP | TGZ
Es ist ein Fehler aufgetreten

Es ist ein Fehler aufgetreten

Was ist das Problem?

Bei der Ausführung des Skriptes ist ein Fehler aufgetreten. Irgendetwas funktioniert nicht richtig.

Wie kann ich das Problem lösen?

Öffnen Sie die aktuelle Log-Datei im Ordner var/logs bzw. app/logs und suchen Sie die zugehörige Fehlermeldung (normalerweise die letzte).

Weitere Informationen

Die Skriptausführung wurde gestoppt, weil irgendetwas nicht korrekt funktioniert. Die eigentliche Fehlermeldung wird aus Sicherheitsgründen hinter dieser Meldung verborgen und findet sich in der aktuellen Log-Datei (siehe oben). Wenn Sie die Fehlermeldung nicht verstehen oder nicht wissen, wie das Problem zu beheben ist, durchsuchen Sie die Contao-FAQs oder besuchen Sie die Contao-Supportseite.