398 votes

Conversion de PDF en images à haute résolution

J'essaie d'utiliser le programme de ligne de commande convert pour transformer un PDF en une image (JPEG ou PNG). Voici un des PDFs que j'essaie de convertir.

Je veux que le programme supprime l'espace blanc excédentaire et renvoie une image de qualité suffisante pour que les exposants puissent être lus facilement.

C'est mon actuel meilleure tentative . Comme vous pouvez le voir, le découpage fonctionne bien, je dois juste améliorer un peu la résolution. Voici la commande que j'utilise :

convert -trim 24.pdf -resize 500% -quality 100 -sharpen 0x1.0 24-11.jpg

J'ai essayé de prendre les décisions conscientes suivantes :

  • le redimensionner en plus grand (n'a aucun effet sur la résolution)
  • faire en sorte que la qualité soit aussi élevée que possible
  • utiliser le -sharpen (J'ai essayé une série de valeurs)

Toute suggestion pour améliorer la résolution de l'image dans le PNG/JPEG final serait très appréciée.

0 votes

Je ne sais pas, tu pourrais aussi essayer lien ...

1 votes

0 votes

Si vous êtes sur un Mac, jetez un coup d'œil à l'application page de manuel pour sips le "scriptable image processing system". Il s'agit d'un éditeur d'images en ligne de commande intégré à macOS, qui fonctionne avec les PDF et de nombreux autres types d'images.

451voto

JBWhitmore Points 1326

Il semble que ce qui suit fonctionne :

convert           \
   -verbose       \
   -density 150   \
   -trim          \
    test.pdf      \
   -quality 100   \
   -flatten       \
   -sharpen 0x1.0 \
    24-18.jpg

Il en résulte l'image de gauche . Comparez cela au résultat de ma commande originale ( l'image de droite ):

  

(A vraiment pour voir et apprécier les différences entre les deux, cliquez avec le bouton droit de la souris sur chacun d'eux et sélectionnez "Ouvrir l'image dans un nouvel onglet..." .)

Gardez également à l'esprit les faits suivants :

  • L'image la plus mauvaise et la plus floue, à droite, a une taille de fichier de 1 941 702 octets (1,85 MByte). Sa résolution est de 3060x3960 pixels, avec un espace couleur RVB de 16 bits.
  • L'image de gauche, plus nette, a une taille de fichier de 337,879 octets (330 kByte). Sa résolution est de 758x996 pixels, avec un espace couleur de 8 bits Gray.

Donc, pas besoin de redimensionner ; ajoutez la -density drapeau. La valeur de densité 150 est bizarre -- essayer une gamme de valeurs résulte en une image plus mauvaise dans les deux directions !

99 votes

El density est un paramètre un peu spécial dans la mesure où il doit venir antes de le fichier d'entrée. Comme le PDF est un format de fichier vectoriel qui n'a pas (beaucoup) de notion de pixels, il dit quelque chose comme "la page fait 8 pouces sur 12 pouces". Si vous voulez des pixels, vous utilisez la fonction density pour lui indiquer le nombre de pixels par pouce que vous voulez obtenir à la sortie. Par exemple, avec 150, vous obtiendrez 8x150=1200 par 12x150=1800 pixels dans l'image résultante. C'est également la quantité de pixels sur laquelle travaillent les paramètres de netteté, de contraste, de compression, etc.

0 votes

La netteté fonctionne très bien avec le noir sur blanc. Cependant, il détériore la lisibilité lorsqu'il y a une écriture noire sur un fond gris.

10 votes

Cela peut se traduire par un fond noir sur Mac OS (voir stackoverflow.com/questions/10934456/ ). Pour corriger cela, ajoutez -flatten .

193voto

majinnaibu Points 527

Personnellement, j'aime ça.

convert -density 300 -trim test.pdf -quality 100 test.jpg

C'est un peu plus du double de la taille du fichier, mais ça me semble mieux.

-density 300 définit le nombre de ppp auquel le PDF est rendu.

-trim supprime tous les pixels du bord qui sont de la même couleur que les pixels du coin.

-quality 100 règle la qualité de la compression JPEG sur la qualité la plus élevée.

Des choses comme -sharpen ne fonctionnent pas bien avec le texte parce qu'ils annulent des choses que votre système de rendu de police a fait pour le rendre plus lisible.

Si vous voulez vraiment l'agrandir, utilisez le redimensionnement ici et éventuellement une valeur de dpi plus grande, comme par exemple targetDPI * scalingFactor Cela rendra le PDF à la résolution/taille que vous souhaitez.

Les descriptions des paramètres sur imagemagick.org sont les suivantes aquí

0 votes

La taille est deux fois plus importante, principalement parce que la densité de sortie a été doublée et que la qualité de compression jpg est réglée sur max (donc pas beaucoup de compression).

0 votes

Utilisation de convert comment saurons-nous combien de pages ont été converties ?

0 votes

Euh, c'est définitivement la voie à suivre. Augmentez la densité de la source et enlevez le -sharpen . La qualité est bien meilleure qu'avec les valeurs par défaut et bien plus naturelle qu'avec -sharpen .

16voto

Coder Points 620

J'ai trouvé qu'il était à la fois plus rapide et plus stable, lors du traitement par lots de gros PDF en PNG et JPG, d'utiliser le système sous-jacent de l'UE. gs (alias Ghostscript) que convert utilise.

Vous pouvez voir la commande dans la sortie de convert -verbose et il y a quelques autres modifications possibles (YMMV) qui sont difficiles/impossibles à accéder directement par le biais de convert .

Cependant, il serait plus difficile d'effectuer vos travaux de coupe et d'affûtage en utilisant les outils suivants gs donc, comme je l'ai dit, YMMV !

10voto

Preet Sandhu Points 141

Il vous donne également de bons résultats :

exec("convert -geometry 1600x1600 -density 200x200 -quality 100 test.pdf test_image.jpg");

2voto

Armin Mustafa Points 521

Une autre suggestion est que vous pouvez utiliser GIMP.

Il suffit de charger le fichier PDF dans GIMP->enregistrer au format .xcf et vous pouvez ensuite faire ce que vous voulez de l'image.

10 votes

La raison pour laquelle je l'ai fait via la ligne de commande est que j'avais des milliers de pages qui nécessitaient ce processus.

0 votes

De plus, GIMP rend la page sur chargement Vous devez donc définir la résolution lorsque vous sélectionnez les pages à charger. La définition des paramètres de sortie n'a pas beaucoup d'importance si vous commencez avec la résolution par défaut de 100 DPI au chargement.

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