Trouver la résolution d'image dans un fichier PDF?

15

J'ai un problème avec certains utilisateurs qui créent de très gros PDF. D'un autre côté, j'ai des PDF envoyés à partir de nos télécopieurs qui sont vraiment de petite taille et totalement imprimables. Ma question est

  • Existe-t-il un moyen de trouver la résolution (DPI) du PDF. Je recherche sur Internet, je n'ai trouvé aucune réponse. Vérifié les propriétés du fichier, ces informations n'y étaient pas stockées, du moins dans mon cas.
  • Quelle est la résolution optimale de conversion d'un fichier texte en image PDF. 96 dpi, 300 dpi ou plus?
  • Question amusante. Puis-je redimensionner un PDF qui a été numérisé avec une résolution élevée en dpi plus petit?

Je sais que certaines réponses peuvent ne pas être disponibles car j'ai déjà cherché sur Internet et je n'ai pas pu trouver de réponses.

Remarque: Mes PDF sont entièrement des images, du texte aux images. Je connais également primoPDF (gratuit) quelque chose que vous pouvez expérimenter

hk_
la source

Réponses:

18

La réponse de slhck et le commentaire de scruss méritent d'être mis à jour: pdfimagesmaintenant (au moins depuis la version 0.26.5) répertorie explicitement x-ppiet y-ppi. Voici un exemple de sortie:

$ pdfimages -list example.pdf 
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image    2244  2244  cmyk    4   8  image  no       215  0   301   301  418K 2.1%
   2     1 image     900   600  rgb     3   8  image  no       324  0  1524  1525 35.5K 2.2%

Sur Debian (Wheezy) et Fedora (23), pdfimagesfait partie des poppler-utilspackages.

Skippy le Grand Gourou
la source
Les miens sont tous vides
theonlygusti
8

Je sais que vous ne voulez pas extraire les données d'image, mais c'est probablement le seul moyen de connaître la résolution d'origine.


Sur * nix, si vous avez installé ImageMagick identifyet Xpdf 1 :

pdfimages -j test.pdf test && for file in $(find . -name "test*.jpg"); do identify "$file"; done

test.pdfest votre PDF d'entrée. Les fichiers de sortie sont écrits test-000.jpg, test-001.jpget ainsi de suite. Cela vous donnerait la taille d'origine de toutes les images contenues dans ce PDF 2 .

Exemple de sortie pour un fichier PDF qui ne contient qu'une seule grande image:

./test-000.jpg JPEG 2500x1961 2500x1961+0+0 8-bit DirectClass 1.022MB 0.000u 0:00.000

1) Windows en a aussi, mais le script serait bien sûr différent.
2) Notez que les images ne contiennent pas vraiment d'informations DPI. Pour parler simplement: c'est juste quelque chose utilisé pour l'impression et les images n'ont pas besoin d'une mesure inhérente de DPI.


Quelle est la résolution optimale de conversion d'un fichier texte en image PDF. 96 dpi, 300 dpi ou plus?

Généralement, tout ce que vous souhaitez imprimer doit être de 300 dpi ou plus. La plupart des imprimantes prendront également en charge une résolution plus élevée.

slhck
la source
2
Une version de pdfimages (peut - être plus récente que la question initiale) du projet de poppler ajoute la -list Option: pdfimages -list test.pdf. Plutôt que de générer des fichiers, cela répertorie la taille et le type d'image. Toujours ne vous donne pas explicitement la résolution, mais évite de créer des fichiers de sortie.
scruss
1
@scruss Depuis la version 0.34.0, pdfimages -listfournit explicitement x-ppiet y-ppi, ainsi que de nombreuses autres informations.
Skippy le Grand Gourou du
En effet, c'est désormais le cas, @SkippyleGrandGourou: environ cinq ans après la question. pdfimages n'applique toujours pas cette résolution / taille aux images qu'il extrait.
scruss
@scruss En fait, il semble que la résolution donnée par pdfimagespuisse être assez faible (par exemple lorsque l'image est plus grande que sa zone visible, dans un PDF produit par scribus). (Malheureusement, je n'ai vraiment pas le temps de déposer un rapport de bogue maintenant.)
Skippy le Grand Gourou
4

Pour une raison quelconque, la dernière version de pdfimages que je peux mettre à niveau dans mon CentOS est la version 3.04.

Donc, je n'ai pas l'option -list comme indiqué dans les réponses précédentes. Cependant, l'image de test créée à partir de pdfimages basée sur la réponse de slhck contient la réponse souhaitée!

identifier -verbose test-0000.jpg | plus

Image: test-0000.jpg  
Format: JPEG (Joint Photographic Experts Group JFIF format)  
Mime type: image/jpeg  
Class: DirectClass  
Geometry: 6600x5100+0+0  
Resolution: 600x600  
Print size: 11x8.5

Ainsi, le dpi est explicitement affiché sur la 6ème ligne en utilisant l'option -verbose dans la commande identifier.

Ainsi, la réponse de slhck peut être modifiée comme suit.

pdfimages -j test.pdf test && pour le fichier dans $ (find. -name "test * .jpg"); identifie -verbose "$ file" | awk 'NR == 6'; terminé

Sur une autre note, j'ai essayé de courir

identifier -verbose test.pdf

Format: PDF (Portable Document Format)  
Mime type: application/pdf  
Class: DirectClass  
Geometry: 792x612+0+0  
Resolution: 72x72  
Print size: 11x8.5  

Il semble que Imagemagick suppose toujours une résolution de 72 dpi et les informations imprimées ici semblent donc incorrectes.

kykong
la source
1

Un fichier PDF n'a pas de résolution inhérente, chaque image raster qu'il contient (le cas échéant) aura sa propre résolution. Je ne connais pas de moyen simple d'extraire un seul nombre pour la résolution médiane / modale des XObjects d'images incorporées.

RedGrittyBrick
la source
Soit dit en passant, je ne suis pas intéressé à extraire des données d'image à partir d'un fichier PDF, je veux juste savoir quelle était la résolution de numérisation et si elle est très élevée, j'aimerais éviter cela à l'avenir.
hk_
@Dave: En fait, je voulais extraire les informations sur les images intégrées et non extraire l'image. Mais la réponse de slhck peut résoudre votre problème.
RedGrittyBrick
1

Cela a fonctionné avec un pdf généré à partir d'un mfp Kyocera ... Ceci n'est probablement valable que pour les images en pleine page comme les scans.

  1. Ouvrez le pdf avec Reader-
  2. Fichier> Propriétés -Onglet Description -Taille de la page. Mon exemple a dit 8,5 x 11,0 pouces.

  3. Ouvrez le pdf avec un éditeur de texte (bloc-notes), recherchez /widthet/height

  4. Prenez la hauteur et la largeur et divisez-les par la hauteur et la largeur de la page (en pouces)

Exemple:

5100/8.5=600
6600/11.0=600

Mon PDF a été numérisé à une résolution de 600x600.

Vous pouvez ignorer les 2 premières étapes si vous connaissez la taille du document (généralement A4 est 8.27x11.69).

Jeff21050
la source
0

Pour répondre à votre deuxième point, en plus de la mention de @slhck sur le dpi de l'imprimante, 300 dpi est également le nombre minimal recommandé typique pour l'OCR avec des tailles de police de 10 + pt.

De plus, un écran d'ordinateur portable moderne de 15 "4K n'a également qu'environ 280PPi, donc si vous voulez afficher un A4 entier sur l'écran (paysage), il n'y a aucun point à numériser à plus de ~ 320 dpi, car tout document plus élevé que cela sera Bien sûr, cela n'a pas d'importance si vous prévoyez de zoomer, vous aurez peut-être besoin de dpi plus élevés.

Pour répondre à vos deux autres points, de nos jours, vous pouvez au moins utiliser Acrobat Pro pour vérifier la résolution et la résolution des images, et vous pouvez également les modifier.

jiggunjer
la source