2 votes

Bash PDF-fusionne les fichiers manquants

J'essaie de fusionner de nombreux fichiers PDF par tranches d'environ 3 000 fichiers. Après de nombreux essais, ce script semblait faire l'affaire. (bien sûr, je me suis trompé)

#!/bin/bash

basepath='/home/lemonidas/pdfstuff';
datename=`date "+%Y%m%d%H%M.%S"`;
start=`date "+%s"`;
echo "parsing pdf list to file..."
find $basepath/input/ -name "*.pdf" | xargs -I {} ls {} >> $basepath/tmp/biglist$datename.txt

split -l 3000 $basepath/tmp/biglist$datename.txt $basepath/tmp/splitfile
rm $basepath/tmp/biglist$datename.txt
echo "deleting big file..."
echo "done splitting!"

declare -i x 
x=1

for f in $basepath/tmp/splitfile*
do
linenum=`cat $f | wc -l`;
echo "Processing $f ($linenum lines)..."

# merge to one big PDF
cat $f | xargs  gs -q -sstdout=$basepath/error.log -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$basepath/output/$x.big.pdf  2>$basepath/error.log
echo "Completed PDF $x"
 (( x++ ))

# delete the list file
rm $f
echo "Deleted processed file $f"
done
end=`date "+%s"`;
echo "Started: $start"
echo "Finished: $end"

Le problème est que j'ai 22000 PDF de 2 pages, chaque fichier de sortie (sauf le dernier) devrait compter 6000 pages (puisque nous avons 3000 PDF dans chaque liste de fusion, comme vérifié par "wc -l" avant l'analyse), et je n'obtiens que 658 pages environ.

Aucune erreur n'est signalée, sauf celle-ci par gs :

Warning: Embedded symbolic TT fonts must contain a cmap for Platform=1 Encoding=0.  
Warning: Embedded symbolic TT fonts must contain a cmap for Platform=1 Encoding=0.  
Warning: Embedded symbolic TT fonts must contain a cmap for Platform=1 Encoding=0.  
Warning: Embedded symbolic TT fonts must contain a cmap for Platform=1 Encoding=0.  
Warning: Embedded symbolic TT fonts must contain a cmap for Platform=1 Encoding=0.  
Warning: Embedded symbolic TT fonts must contain a cmap for Platform=1 Encoding=0.  
Warning: Embedded symbolic TT fonts must contain a cmap for Platform=1 Encoding=0.  
Warning: Embedded symbolic TT fonts must contain a cmap for Platform=1 Encoding=0.  
This file had errors that were repaired or ignored.  
The file was  produced by: >>>> Powered By Crystal 
Please notify the author of the software that produced this  file that it does not conform   to Adobe's published PDF  specification.  

encore et encore (mais pas 22000 fois quand même)

Lorsque je l'essaie avec 300-400 fichiers, il fonctionne sans problème, mais lorsque j'essaie l'exécution complète, après 2,5 heures, j'obtiens beaucoup moins que la moitié des fichiers fusionnés.

J'ai ensuite pensé à convertir chaque PDF de deux pages en fichiers .pgm, mais je n'ai aucune idée de la manière de les refaire en PDF (afin d'éviter tout problème d'intégration des polices). Est-ce que quelque chose m'échappe ? (probablement)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X