J'ai 280 fichiers pgn que je veux fusionner et convertir en un seul pdf.
Les noms de fichiers PNG sont dans la séquence p000.png, p001.png etc. et l’espace total est d’environ 30 Mo.
J'ai fait:
convert p00*.png to myfile.pdf
et cela a bien fonctionné. Heureusement dans le bon ordre.
Mais quand je fais:
conver p*.png to myfile.pdf
Il consomme tous mes 4 Go de mémoire et la moitié de mon échange. Puis il se bloque avec l'erreur
convert: memory allocation failed `myfile.pdf' @ error/pdf.c/WritePDFImage/1595.
Avez-vous une idée de la façon de résoudre ce problème?
Je pense qu'une bonne solution serait d'utiliser convert
un fichier à la fois en pdf, avec le même nom. Ensuite, utilisez pdfunite
ou pdftk
pour les fusionner. Mais je ne sais pas comment utiliser convert
de cette façon.
Imagemagick semble être très violent avec l'utilisation de la mémoire. Une suggestion est d'utiliser -limit pour limiter la taille de la mémoire utilisée par la conversion, il devrait utiliser un cache disque pour tout ce dont il a besoin. Lire une explication ici:
http://www.imagemagick.org/pipermail/magick-users/2002-March/001285.html
Et voici comment utiliser l'option -limit: http://www.imagemagick.org/script/command-line-options.php#limit
Sinon, vous pouvez le faire comme vous l'avez décrit, en convertissant chaque image individuellement et en les fusionnant avec un autre outil. Quelque chose comme
for name in p*.png; do convert $name `basename $name .png`.pdf; done
devrait le faire.
Fondamentalement, il parcourt tous les fichiers png, lance convert, la seule magie est la partie basename $name .png
, qui sera remplacée par le nom de fichier moins la partie .png; Le nom de fichier est logique.
Essayez-le vous-même pour avoir une idée de ce que fait basename:
basename something.png .png
echo `basename something.png .png`.pdf