Forum Programmation.perl Archivage de pdf locaux avec swish-e

Posté par .
Tags : aucun
0
11
oct.
2005
Bonjour,

en cherchant comment je pouvait avoir une base de donnée locale pour pouvoir indexer et fouiller mes pdf, je suis tombé la dessus:
http://www.linuxjournal.com/comment/reply/6652(...)

En bref, ça explique comment configurer swish pour faire justement ce que je veux. Ça a l'air de marcher assez bien, sauf un petit détail: le programme utilise un petit script perl permettant de convertir les pdf en xml pour l'archivage:


#!/usr/bin/perl -w
use pdf2xml;
my @files =
`find /home/alf/Travail/Biblio -name '*.pdf' -print`;
for (@files) {
chomp();
my $xml_record_ref = pdf2xml($_);
# this is one XML file with a SWISH-E header
print $$xml_record_ref;
}


Le problème, c'est qu'il y a parmi mes pdf des fichiers récalcitrant qui provoque une erreur du style:

External Program found: ./howto-pdf-prog.pl
Error: May not be a PDF file (continuing anyway)
Error (0): PDF file is damaged - attempting to reconstruct xref table...
Error: Couldn't find trailer dictionary
Error: Couldn't read xref table
./howto-pdf-prog.pl: Failed close on pipe to pdfinfo for /home/alf/Travail/Biblio/Homochirality/fujii-chem.rec-04.pdf: 256 at pdf2xml.pm line 137.

ce qui provoque l'arrêt de la conversion, et seuls les premiers fichiers scannés sont indexés. La solution serait donc de dire au script de continuer en cas d'erreur lors de l'exécution de pdf2xml. Problème: je ne connais strictement rien à perl.

Y aurait-il une bonne âme qui saurait m'expliquer comment régler ce problème ?

Merci
  • # A froid

    Posté par . Évalué à 1.

    Bon comme cela a froid sans tester je dirais :

    #!/usr/bin/perl -w
    use pdf2xml;
    my @files =
    `find /home/alf/Travail/Biblio -name '*.pdf' -print`;
    for (@files) {
    chomp();
    my $xml_record_ref;
    eval{
    $xml_record_ref = pdf2xml($_);
    }
    unless($@){
    # this is one XML file with a SWISH-E header
    print $$xml_record_ref;
    }
    }

    Sébastien

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.