Page 1 sur 1

Modifier et récuper propriété fichier pdf

Posté : 13 juin 2010, 14:17
par CharlesG
Bon jour,
Je cherche à modifier (voir compléter) les propriétés de fichier pdf. Je voudrais compléter les propriétés sur des documents scannés en pdf.
Les documents sont produits par un scanner avec un nom par exemple "20100610091912.pdf", les propriétés sont vides et non modifiable avec acrobat. j'avais récupérer un bout de code qui marche en lecture mais pas en écriture (les propriétés sont vides).
Je voudrais pouvoir mettre une variable au lieu d'un fichier fixe ($filename = 'test.pdf';). j'utilise dans le cadre d'une association 4D comme base de données.
l'objectif serait d'arriver a cela exemple VB : http://www.vbfrance.com/codes_image/normal/24070.aspx
Merci par avance .
Charles GRONDIN
<?php

function openPDF($filename){
$handle = fopen($filename,"rb");
$content = fread($handle, filesize($filename));
fclose($handle);
return $content;
}

function versionPDF($content){
$p1 = strpos($content,'%')+1;
$p2 = strpos($content,'%',$p1)-2;
$version=substr($content,$p1,$p2);
return strcmp(trim($version),'PDF-1.4');
}

function getPDFDate($type){
if (strcmp($type,'cre')==0) $input = '/CreationDate';
if (strcmp($type,'mod')==0) $input = '/ModDate';
global $content;
$p1 = strpos($content,$input)+1;
$p2 = strpos($content,0x2F,$p1);
$line = substr($content,strlen($input)+$p1,$p2-$p1-2-strlen($input));
$row = substr($line,2,14);
$date = date('l, d F Y H:i:s',mktime(substr($row,8,2),substr($row,10,2),substr($row,12,2),substr($row,4,2),substr($row,6,2),substr($row,0,4)));

return $date;
}

function getPDFInfo($type){
if (strcmp($type,'tit')==0) $input = '/Title';
if (strcmp($type,'cre')==0) $input = '/Creator';
if (strcmp($type,'aut')==0) $input = '/Author';
if (strcmp($type,'key')==0) $input = '/Keywords';
if (strcmp($type,'sub')==0) $input = '/Subject';
global $content;
$p1 = strpos($content,$input)+1;
if (strcmp($type,'sub')==0){ $s1 = '>>';$s2 = 1;}
else{ $s1 = 0x2F; $s2 = 2;}
$p2 = strpos($content,$s1,$p1);
$line = substr($content,strlen($input)+$p1,$p2-$p1-$s2-strlen($input));
$line = preg_replace("/\\\[0-9]{3}/",'',$line);
if (trim($line)=='') $line = '(non renseigné)';

return $line;

}

function getPDFContent($content,$start,$end){
$s1 = 0;
$e1 = 0;
$objc = array();

while ($s1 !== false && $e1 !== false){
$s1 = strpos($content,$start,$e1)+(strlen($start)+1);
if ($s1 !== false){
$e1 = strpos($content,$end,$s1);
if ($e1 !== false)
$objc[] = substr($content,$s1,$e1-$s1);
}
}

return $objc;
}

function extractText($content){
$obj = array();
$ret = array();
$mots = array();

preg_match_all('`\[([^\]]+)\]TJ`', $content, $obj);

for ($i=0;$i<count($obj[0])-1;$i++){
preg_match_all('`\((.){1}\)`', $obj[1][$i], $mots[$i]);

$ret[] = implode('',$mots[$i][1]);
}

$ret = implode(' ',$ret);

return $ret;

}

function getPDFText($content){
$gc = getPDFContent($content,'obj','endobj');
$gc_size = count($gc);
$streams = array();
for ($i=0;$i<$gc_size;$i++){
$sc = getPDFContent($gc[$i],'stream','endstream');
if (!empty($sc)){
$streams[] = $sc;
}
}
if (count($streams)>0){
return extractText(gzuncompress(trim($streams[0][0])));
}

}
/************************************/

// 1. Ouverture du PDF

$filename = 'test.pdf';
$content = openPDF($filename);

// 2. Vérification de la version du PDF - seule 1.4 est supportée

if (versionPDF($content)!=0)
echo 'Cette source n\'est pas été conçue/testée pour d\'autres versions que la version PDF-1.4.<br />Votre fichier a la version '.(versionPDF($content)).', désolé';
else{

// 3. Récupération des propriétés CreationDate, ModDate, Title, Creator, Author, Keywords et Subject

$creDate = getPDFDate('cre'); echo 'Date de création: '.$creDate.'<br />';
$modDate = getPDFDate('mod'); echo 'Date de modification: '.$modDate.'<br />';
$title = getPDFInfo('tit'); echo 'Titre du fichier: '.$title.'<br />';
$creator = getPDFInfo('cre'); echo 'Création du fichier: '.$creator.'<br />';
$author = getPDFInfo('aut'); echo 'Auteur: '.$author.'<br />';
$keywords = getPDFInfo('key'); echo 'Mots clés: '.$keywords.'<br />';
$sujet = getPDFInfo('sub'); echo 'Sujet: '.$sujet.'<br /><br />';

//4. Récupération du contenu du PDF

$contenu = getPDFText($content); echo 'Contenu textuel:<br />'.$contenu;
}
?>

Re: Modifier et récuper propriété fichier pdf

Posté : 13 juin 2010, 23:41
par Ryle
Modération :
Afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

Re: Modifier et récuper propriété fichier pdf

Posté : 26 mars 2012, 23:13
par oussama1984
Binjour,
Je suis très interessé par votre code,
est ce que vous pouvez me l'envoyer ??
Merci
[email protected]