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 Gamier Sébastien . Évalué à 1.
#!/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 à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.