Convertir PDF en image avec une haute résolution

J’essaie d’utiliser le programme de ligne de commande pour convert un PDF en image (JPEG ou PNG). Voici l’ un des fichiers PDF que je tente de convertir.

Je souhaite que le programme supprime les espaces blancs en excès et renvoie une image de qualité suffisamment élevée pour que les exposants puissent être lus facilement.

C’est ma meilleure tentative actuelle. Comme vous pouvez le constater, le rognage fonctionne bien, il me suffit d’améliorer la résolution. C’est la commande que j’utilise:

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

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

  • redimensionner plus grand (n’a aucun effet sur la résolution)
  • rendre la qualité aussi élevée que possible
  • utiliser le -sharpen (j’ai essayé une gamme de valeurs)

Toute suggestion concernant l’obtention de la résolution de l’image dans le format PNG / JPEG final serait grandement appréciée!

Il semble que les travaux suivants:

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

Il en résulte l’image de gauche . Comparez ceci au résultat de ma commande d’origine ( l’image à droite ):

(Pour vraiment voir et apprécier les différences entre les deux, cliquez avec le bouton droit sur chacune et sélectionnez “Ouvrir une image dans un nouvel onglet …” .)

Gardez également à l’esprit les faits suivants:

  • Le pire, l’image floue à droite a une taille de fichier de 1,941,702 octets (1,85 Mo). Sa résolution est de 3060×3960 pixels, utilisant un espace colorimésortingque RVB 16 bits.
  • La meilleure image nette à gauche a une taille de fichier de 337,879 octets (330 Ko). Sa résolution est de 758×996 pixels, utilisant un espace couleur gris 8 bits.

Donc, pas besoin de redimensionner; append le drapeau de -density . La valeur de densité 150 est bizarre – essayer une plage de valeurs donne une image plus mauvaise dans les deux sens!

Personnellement j’aime ça.

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

C’est un peu plus de deux fois la taille du fichier, mais cela me semble meilleur.

-density 300 définit le dpi auquel le PDF est rendu.

-sortingm supprime tous les pixels de bord de la même couleur que les pixels d’angle.

-quality 100 définit la qualité de compression JPEG à la plus haute qualité.

Des choses comme -sharpen ne fonctionnent pas bien avec le texte, car elles défont les choses que votre système de rendu des fonts a fait pour le rendre plus lisible.

Si vous voulez réellement le faire exploser, utilisez ici le redimensionnement et éventuellement une valeur de dpi plus grande comme targetDPI * scalingFactor Cela rendra le PDF à la résolution / taille souhaitée.

Les descriptions des parameters sur imagemagick.org sont ici

Je l’ai trouvé plus rapide et plus stable lors du traitement par lots de fichiers PDF volumineux en fichiers PNG et JPG pour utiliser la commande sous-jacente gs (aka Ghostscript) utilisée par Convert.

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

Cependant, il serait plus difficile de tailler et d’aiguiser avec gs , comme je l’ai dit, YMMV!

J’utilise pdftoppm sur la ligne de commande pour obtenir l’image initiale, généralement avec une résolution de 300 dpi, alors pdftoppm -r 300 , puis utilisez convert pour faire le découpage et la conversion PNG.

Normalement, j’extrais l’image incorporée avec ‘pdfimages’ à la résolution native, puis utilise la conversion d’ImageMagick au format requirejs:

 $ pdfimages -list fileName.pdf $ pdfimages fileName.pdf fileName # save in .ppm format $ convert fileName-000.ppm fileName-000.png 

Cela génère le meilleur et le plus petit fichier de résultat.

Note: Pour les images JPG avec perte, vous devez utiliser -j:

 $ pdfimages -j fileName.pdf fileName # save in .jpg format 

Avec un poppler récent, vous pouvez utiliser -tout qui sauve les pertes en jpg et sans perte en png

Sur la plate-forme Win fournie, vous deviez télécharger un fichier binary récent (0.37 2015) «poppler-util» à partir de: http://blog.alivate.com.au/poppler-windows/

Il vous donne également de bons résultats:

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

Une autre suggestion est que vous pouvez utiliser GIMP.

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

Utilisateur Linux ici: J’ai essayé l’utilitaire de ligne de commande de convert (pour PDF vers PNG) et je n’étais pas satisfait des résultats. J’ai trouvé cela plus facile, avec un meilleur résultat:

  • extraire la (les) page (s) pdf avec pdftk
    • Par exemple: pdftk file.pdf cat 3 output page3.pdf
  • ouvrir (importer) ce pdf avec GIMP
    • important: changer la Resolution importation de 100 à 300 ou 600 pixel/in
  • en export GIMP en PNG (changez l’extension du fichier en .png)

Modifier:

Ajout d’une image, comme demandé dans les Comments . Commande de conversion utilisée:

convert -density 300 -sortingm struct2vec.pdf -quality 100 struct2vec.png

GIMP : importé à 300 dpi (px / in); exporté en tant que niveau de compression PNG 3.

Je n’ai pas utilisé GIMP sur la ligne de commande (re: mon commentaire ci-dessous).

pdf2png

entrer la description de l'image ici

C’est en fait assez facile à faire avec Preview sur un mac. Tout ce que vous avez à faire est d’ouvrir le fichier dans Aperçu et d’enregistrer (ou d’exporter) un fichier png ou jpeg, mais assurez-vous d’utiliser au moins 300 dpi en bas de la fenêtre pour obtenir une image de haute qualité.

Le fichier PNG que vous avez joint semble très flou. Si vous avez besoin de post-traitement supplémentaire pour chaque image générée en tant qu’aperçu PDF, vous réduirez les performances de votre solution.

2JPEG peut convertir un fichier PDF que vous avez joint à un fichier JPG plus net et recadrer des marges vides en un seul appel:

 2jpeg.exe -src "C:\In\*.*" -dst "C:\Out" -oper Crop method:autocrop 

Utilisez cette ligne de commande:

 convert -geometry 3600x3600 -density 300x300 -quality 100 TEAM\ 4.pdf team4.png 

Cela devrait correctement convertir le fichier que vous avez demandé.