92 votes

Conversion d'un PDF en PNG

Je suis en train de convertir un fichier PDF (au moins la couverture de l'un, je suis avec succès l'extraction de la première page du PDF avec pdftk) pour un PNG. Je suis en utilisant imagemagick pour faire la converstion:

convert cover.pdf cover.png

Cela fonctionne, mais malheureusement le couvercle.png vient à travers affichés de manière incorrecte (certains de l'alpha de l'objet dans le fichier PDF ne sont pas rendus correctement). Je sais ImageMagick utilise GhostScript pour faire la conversion, et si je le fais directement avec les gs, je peux obtenir les résultats souhaités, mais je préfère utiliser le convertir bibliothèque comme elle l'a d'autres outils que j'aimerais l'effet de levier.

Cette commande dans GhostScript accomplit l'image désirée:

gs -sDEVICE=pngalpha -sOutputFile=cover.png -r144 cover.pdf

Je me demandais est-il possible de passer des arguments par le biais de convertir de GhostScript, ou suis-je coincé avec l'appel de GhostScript directement?

75voto

Kurt Pfeifle Points 24491

Vous pouvez utiliser une ligne de commande avec les deux commandes (gs, convert) connecté par l'intermédiaire d'un tuyau, si la première commande peut écrire de sa sortie sur stdout, et si la seconde, on peut lire son entrée stdin.

  1. Heureusement, gs peut écrire sur la sortie standard (... -sDEVICE=%stdout ...).
  2. Heureusement, convertir pouvez lire à partir de stdin (convert -background transparent - output.png).

Problème résolu:

  • GS utilisé pour le canal alpha de la manipulation d'une image en particulier,
  • convertir utilisés pour la création d'un fond transparent,
  • tuyau utilisé pour éviter d'écrire un fichier temporaire sur le disque.

Solution complète:

gs -sDEVICE=pngalpha \
   -sOutputFile=%stdout \
   -r144 cover.pdf \
   | \
convert \
   -background transparent \
   - \
   cover.png

34voto

Glutanimate Points 221

Parmi toutes les alternatives disponibles, j'ai trouvé qu'Inkscape produisait les résultats les plus précis lors de la conversion de PDF en PNG. Surtout lorsque le fichier source avait des couches transparentes, Inkscape a réussi là où Imagemagick et d'autres outils ont échoué.

C'est la commande que j'utilise:

 inkscape "$pdf" -z --export-dpi=600 --export-area-drawing --export-png="$pngfile"
 

Et ici, il est implémenté dans un script:

 #!/bin/bash

while [ $# -gt 0 ]; do

pdf=$1
echo "Converting "$pdf" ..."
pngfile=`echo "$pdf" | sed 's/\.\w*$/.png/'`
inkscape "$pdf" -z --export-dpi=600 --export-area-drawing --export-png="$pngfile"
echo "Converted to "$pngfile""
shift

done

echo "All jobs done. Exiting."
 

2voto

schnaader Points 26212

Voici une discussion en allemand sur un problème comme celui-ci pour les fichiers SVG où il est résolu en utilisant

 convert -background transparent
 

Peut-être que cela fonctionne pour vous aussi.

1voto

polemon Points 1665

Je vais ajouter ma solution, même pensé que son fil est vieux. Peut-être que cela aidera quelqu'un de toute façon.

Tout d'abord, j'ai besoin de générer le fichier PDF. J'utilise XeLaTeX :

xelatex test.tex

Maintenant, ImageMagick et GraphicMagic à la fois d'analyser les paramètres de la gauche vers la droite, donc la plus à gauche du paramètre, sera exécuté en premier. J'ai fini à l'aide de cette séquence pour un traitement optimal:

gm convert -trim -transparent white -background transparent -density 1200x1200 -resize 25% test.pdf test.png

Il donne de jolis graphismes sur fond transparent, parés à ce qui est réellement sur la page. L' -density et -resize paramètres, donner une meilleure granularité, et l'augmentation générale de la résolution.

Je suggère de vérifier si la densité peut être diminué pour vous. Il va couper le bas de la conversion de temps.

0voto

polarise Points 170

Ma solution est beaucoup plus simple et directe. Au moins, ça marche comme ça sur mon PC (avec les spécifications suivantes):

 me@home: my.folder$ uname -a
Linux home 3.2.0-54-generic-pae #82-Ubuntu SMP Tue Sep 10 20:29:22 UTC 2013 i686 i686 i386 GNU/Linux
 

avec

 me@home: my.folder$ convert --version
Version: ImageMagick 6.6.9-7 2012-08-17 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC
Features: OpenMP
 

Alors, voici ce que je lance sur mes file.pdf :

 me@home: my.folder$ convert -density 300 -quality 100 file.pdf file.png
 

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