J'ai cherché, et j'ai trouvé ;-) !
Ou plutôt, j'ai codé et j'ai trouvé.
Je joins le code, si ça en intéresse d'autres tant mieux !
Si vous trouvez ça gruick, tant mieux !
Si vous avez mieux à proposer, tant mieux !
Bref, je suis ouvert à toute critique de ce code, pourvu qu'elle soit constructive.
function getInfos ($filename)
{
$nlcount=0;
$fp = fopen ($filename, "rb");
$taille = 0;
while ($nlcount<3) // On passe les 2 derniers retours à la ligne
{
fseek ($fp, --$taille, SEEK_END);
$c = fgetc($fp);
if ($c == "\n") $nlcount++;
}
$offsetXref = fgets ($fp); // On récupère l'offset de l'objet xref
fseek ($fp, $taille, SEEK_END);
while ( ! preg_match ("/(\/Info)/", $buf)) // On recherche la chaîne /Info
{
while (fgetc($fp) != "\n")
fseek ($fp, --$taille, SEEK_END);
$buf = fgets ($fp);
fseek ($fp, --$taille, SEEK_END);
}
$buf = preg_replace ('/(.*)(\/Info.*)/', '\2円', $buf); // On récupère le numéro de l'objet info dans le fichier pdf (2nd champs).
$tmp = explode (' ', $buf);
$objectNumber = $tmp[1];
// close the file
fseek ($fp, $offsetXref);
while ($currObject < $objectNumber) // On parcours l'objet xref
{
$buf = fgets ($fp);
if (preg_match ("/(\d{10} \d{5} [nf])/", $buf)) // Pour chaque ligne valide
{
if (!preg_match ("/(0000000000 *)/", $buf)) // N° d'objet valide
$currObject++;
}
}
$tmp = explode (' ', $buf); // On a l'adresse de l'objet Info
$offsetInfos = $tmp[0];
fseek ($fp, $offsetInfos); // On s'y rend !
fgets ($fp); // Skip object header
unset ($buf);
while (! preg_match ('/(>>)/', $buf)) $buf.=fgets ($fp); // on récupère les infos
$buf = preg_replace ("/(\n)/", "", $buf); // On nettoie les infos
$retval = preg_replace ("/(>>.*endobj)/", "", $buf);
$retval = preg_replace ("/(<<)/", "", $retval);
fclose($fp);
return ($retval);
}
$PdfInfos = getInfos ("essai.pdf");
$infos = explode ('/', $PdfInfos);
while (list ($k, $v) = each ($infos))
{
$pdfInfos[preg_replace ('/(.*)(\(.*)/', '\1円', $v)] = preg_replace ('/(.*\()(.*)(\).*)/', '\2円', $v);
}
print_r ($pdfInfos);
# Bon, ben voilà...
Posté par Gyro Gearllose . En réponse au message Récupérer les enregistrements d'un fichier.... Évalué à 2.
Ou plutôt, j'ai codé et j'ai trouvé.
Je joins le code, si ça en intéresse d'autres tant mieux !
Si vous trouvez ça gruick, tant mieux !
Si vous avez mieux à proposer, tant mieux !
Bref, je suis ouvert à toute critique de ce code, pourvu qu'elle soit constructive.
Voilà.