J'utilise actuellement ImageMagick pour convertir des PDF en images raster JPEG. Il est douloureusement lent et utilise beaucoup de mémoire.
La commande que j'ai utilisée était:
convert -geometry 1024x768 -density 200 -colorspace RGB foo.pdf bar%02d.jpg
Je suppose que c'est lent car il utilise Ghostscript. Mais il doit y avoir un moyen plus rapide de le faire sur une box Linux.
Quelqu'un a-t-il trouvé une meilleure solution?
pdf
imagemagick
ghostscript
mat3001
la source
la source
Réponses:
Utiliser Ghostscript directement (au lieu d'utiliser la
convert
commande ImageMagick , qui appelle Ghostscript indirectement) est en effet plus rapide. Et cela vous donne plus de contrôle sur les paramètres de conversion. Essayeroù
-o
: détermine le chemin de sortie + le nom du fichier (et économise l'utilisation de-dBATCH -dNOPAUSE
)-dJPEGQ
: définit la qualité JPEG à 95%-r
: définit la résolution à 600 dpi-g
: définit la taille de l'image à 4960x7016px-sDEVICE
: définit la sortie au format JPEGCette commande sera probablement encore trop lente pour vous et créera des fichiers plus gros que prévu. Pour des fichiers plus petits et une exécution plus rapide, essayez ceci (qui se rapproche probablement de la qualité de sortie de votre
convert
ligne de commande):ou même
(qui donne une résolution de 72 dpi, souvent assez bonne pour la plupart des écrans et pour la plupart des applications Web).
la source
BTW, l'une des raisons pour lesquelles ImageMagick est tellement plus lent, c'est qu'il appelle Ghostscript deux fois. Il ne convertit pas PDF => PNG en une seule fois, mais utilise 2 étapes différentes:
PDF => PostScript
conversion;PostScript => PNG
conversion.Vous pouvez en savoir plus sur les paramètres détaillés des "délégués" d'ImageMagick (les programmes externes utilisés par ImageMagick, tels que Ghostscript) en tapant
(Sur mon système, c'est une liste de 32 commandes différentes.) Maintenant, pour voir quelles commandes sont utilisées pour convertir en PNG, utilisez ceci:
Ok, c'était pour Linux. Si vous êtes sous Windows, essayez ceci:
Vous découvrirez que la messagerie instantanée ne produit PNG qu'à partir de l'entrée PS ou EPS. Alors, comment IM obtient-il (E) PS de votre PDF? Facile:
Ah! Il utilise Ghostscript pour effectuer une conversion PDF => PS, puis utilise à nouveau Ghostscript pour effectuer une conversion PS => PNG. Fonctionne, mais n'est pas le moyen le plus efficace si vous savez que Ghostscript peut faire PDF => PNG en une seule fois. Et plus vite. Et de bien meilleure qualité.
À propos de la gestion par IM de la conversion PDF en images via le délégué Ghostscript, vous devez d'abord savoir deux choses:
-density 600
unconvert
paramètre qui indique à Ghostscript d'utiliser une résolution de 600 dpi pour sa sortie d'image.PDF => PS
, puisPS => PNG
est une véritable erreur. Parce que vous ne gagnez jamais et que vous conservez durablement la qualité dans la première étape, mais que vous en perdez très souvent. Les raisons:(La conversion en sens inverse,,
PS => PDF
n'est donc pas critique ...)C'est pourquoi je vous avais suggéré de convertir vos PDF en une seule fois en PNG (ou JPEG) en utilisant directement Ghostscript. Et utilisez la version la plus récente 8.71 (qui sortira bientôt: 9.00) de Ghostscript ...
la source
Le programme
pdftoppm
du package poppler est également capable de créer des fichiers JPEG, et pour moi, il est environ deux fois plus rapide que l'utilisationgs
décrite ci-dessus:la source
D'après mon expérience, MuPDF est beaucoup plus rapide que Ghostscript. Il s'agit d'un projet beaucoup plus récent sans une grande partie de la cruauté en gs. Essayez si cela convient à votre cas d'utilisation!
mudraw -w 1024 -h 768 -r 200 -c rgb -o bar%d.png foo.pdf
Si vous avez une distribution Linux plus ancienne et des outils mupdf installés à partir du référentiel, il
mudraw
pourrait toujours être appelépdfdraw
Vous devez ensuite convertir le png en jpeg en utilisant par exemple imagemagick. Mais ce sera toujours plus rapide que Ghostscript.
la source