3 votes

ImageMagick : taille incorrecte lors de la conversion de PDF en JPG

Je veux appliquer quelques améliorations (changer la luminosité, le contraste, etc) à un pdf, pour le rendre plus lisible, donc j'ai choisi ImageMagick et pdftk. J'ai utilisé la commande suivante pour diviser le pdf en plusieurs fichiers pdf d'une seule page, afin de pouvoir opérer avec ImageMagick un fichier à la fois.

pdftk a.pdf burst output %04d.pdf

Pour l'instant, tout va bien. Je prends un de ces fichiers (ex. 0038.pdf) pour faire mes tests. Par exemple, pour ajuster le contraste, j'ai utilisé cette commande :

convert 0038.pdf -quality 100 -density 300 -brightness-contrast 0x10% out.pdf

Mais c'est le résultat :

ORIGINAL

Original pdf

CONVERTE

Converted pdf

J'ai essayé de changer la valeur de la qualité, de la densité, de la taille, du redimensionnement, de la géométrie et le pdf de sortie a différentes tailles/résolutions, mais est toujours illisible. J'ai donc réalisé que le problème se situe en amont de la conversion. Il semble que la taille et la résolution du pdf d'entrée soient mal lues à partir de convert .

En fait, quand je tape juste cette commande :

convert -verbose 0038.pdf out.pdf

J'ai compris :

/tmp/magick-9894W9c_JPl1I7QV1 PNG 380x482 380x482+0+0 8-bit sRGB 128KB 0.010u 0:00.010
0038.pdf PNG 380x482 380x482+0+0 16-bit sRGB 128KB 0.000u 0:00.000
0038.pdf=>out.pdf PNG 380x482 380x482+0+0 16-bit sRGB 125KB 0.050u 0:00.049
[ghostscript library] -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r72x72"  "-sOutputFile=/tmp/magick-9894W9c_JPl1I7QV%d" "-f/tmp/magick-9894s1cR4gD9oYuz" "-f/tmp/magick-9894KMmuVq0n9U8c"

Comme vous pouvez le voir, la taille est de 380 x 482, mais je sais que la taille réelle est de 1653 x 2338 pixels.

Ce sont les métadonnées de 0038.pdf (lire avec exiftool )

 ExifToolVersion = 9.70
  FileName = 0038.pdf
  Directory = .
  FileSize = 429577
  FileModifyDate = 1414935360
  FileAccessDate = 1414935693
  FileInodeChangeDate = 1414935693
  FilePermissions = 33188
  FileType = PDF
  MIMEType = application/pdf
  PDFVersion = 1.4
  Linearized = false
PDF dictionary (1 of 1) with 4 entries:
  0)  Info (SubDirectory) -->
  + [Info directory with 5 entries]
  | 0)  ModifyDate = (D:20141101192012Z)
  | 1)  CreateDate = (D:20141101192012Z)
  | 2)  Title = 0038
  | 3)  Creator = (pdftk 2.02 - www.pdftk.com)
  | 4)  Producer = (itext-paulo-155 \(itextpdf.sf.net-lowagie.com\))
  1)  ID = [<e5af52575d23dc1a2aca80f7453fa203>,<4cc6d7fb99aca8c755033ca2973b713c>]
  2)  Root (SubDirectory) -->
  + [Root directory with 3 entries]
  | 0)  Metadata (SubDirectory) -->
  | + [Metadata directory with 3 entries]
  | | 0)  Subtype = /XML
  | | 1)  Type = /Metadata
  | | 2)  Length = 3008
  | | + [XMP directory, 3008 bytes]
  | | | XMPToolkit = Image::ExifTool 9.70
  | | | Title = 0038
  | | | Artist = A
  | 1)  Type = /Catalog
  | 2)  Pages (SubDirectory) -->
  | + [Pages directory with 3 entries]
  | | 0)  Kids (SubDirectory) -->
  | | + [Kids directory with 7 entries]
  | | | 0)  Resources (SubDirectory) -->
  | | | + [Resources directory with 2 entries]
  | | | | 0)  ProcSet = [/PDF,/Text,/ImageB,/ImageC,/ImageI]
  | | | | 1)  XObject (SubDirectory) -->
  | | | | + [XObject directory with 1 entries]
  | | | | | 0)  JI19a (SubDirectory) -->
  | | | | | + [JI19a directory with 9 entries]
  | | | | | | 0)  Subtype = /Image
  | | | | | | 1)  Name = /JI19a
  | | | | | | 2)  Type = /XObject
  | | | | | | 3)  Width = 1653
  | | | | | | 4)  Filter = /DCTDecode
  | | | | | | 5)  Height = 2338
  | | | | | | 6)  BitsPerComponent = 8
  | | | | | | 7)  Length = 425229
  | | | | | | 8)  ColorSpace = /DeviceGray
  | | | 1)  Rotate = 90
  | | | 2)  Parent = ref(1 0 R)
  | | | 3)  Contents (SubDirectory) -->
  | | | + [Contents directory with 1 entries]
  | | | | 0)  Length = 57
  | | | 4)  Type = /Page
  | | | 5)  MediaBox = [22,440,504,820]
  | | | 6)  CropBox = [22,440,504,820]
  | | 1)  Type = /Pages
  | | 2)  PageCount = 1
  3)  Size = 10

Des idées ?

6voto

mpy Points 24817

Le problème se pose, car ImageMagick ne peut pas déterminer la résolution du PDF d'entrée et utilise donc la résolution par défaut de 72x72dpi, comme indiqué dans le fichier convert -verbose 0038.pdf out.pdf sortie :

[ghostscript library] -q -dQUIET (...) "-r72x72" (...)

Vous avez appliqué l'option correcte -density 300 mais en tant que sortie c'est-à-dire après le nom du fichier d'entrée. En effet, la plupart des options de convert sont sortie options, mais man convert sait que

(...) un nombre limité de paramètres sont des options d'entrée. Ils comprennent : -antialias, -caption, -densité, -define, -encodage, -font, -pointsize, -size, et -texture ainsi que toutes les options diverses.

Donc, la bonne convert devrait être :

convert -density 300 0038.pdf -brightness-contrast 0x10% out.pdf

Enfin, deux remarques :

  • J'utiliserais une compression sans perte comme -compress LZW ; le -quality L'option est pour Compression JPEG/MIFF/PNG seulement.

  • -brightness-contrast ne fonctionnera probablement pas sur les documents en noir et blanc et n'affecte pas l'affichage anti-alias de certains lecteurs de PDF pour ce type de fichiers. (Typiquement pour les articles de journaux scannés).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X