ImageMagick: falsche Größe beim Konvertieren von PDF in JPG

1993
supergiox

Ich möchte einige Verbesserungen (Änderung der Helligkeit, des Kontrasts usw.) auf eine PDF-Datei anwenden, um sie lesbarer zu machen. Daher habe ich mich für ImageMagick und pdftk entschieden. Ich habe den folgenden Befehl verwendet, um die PDF-Datei in mehrere PDF-Dateien mit einer einzigen Seite aufzuteilen, sodass ich mit ImageMagick jeweils eine Datei bearbeiten kann.

pdftk a.pdf burst output %04d.pdf 

Zu diesem Zeitpunkt ist alles in Ordnung. Ich nehme eine dieser Dateien (zB 0038.pdf), um meine Tests durchzuführen. Um den Kontrast anzupassen, habe ich beispielsweise diesen Befehl verwendet:

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

Aber das ist das Ergebnis:

ORIGINAL

Ursprüngliches pdf

UMGEWANDELT

Konvertiertes PDF

Ich habe versucht, den Wert für Qualität, Dichte, Größe, Größe und Geometrie zu ändern. Das Ausgabe-PDF hat eine andere Größe / Auflösung, ist jedoch immer unlesbar. So stellte ich fest, dass das Problem vor der Konvertierung liegt. Es scheint, als würden die eingegebenen PDF-Größen und Auflösungen falsch gelesen convert.

Infact, wenn ich gerade diesen Befehl eingebe:

convert -verbose 0038.pdf out.pdf 

Ich bekomme:

/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" 

Wie Sie sehen, ist die Größe 380 x 482, aber ich weiß, dass die tatsächliche Größe 1653 x 2338 Pixel beträgt.

Dies sind die Metadaten von 0038.pdf (lesen mit 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 

Irgendwelche Ideen?

3
Können Sie Beispiel-PDF-Dateien hinzufügen / hinzufügen? ozbek vor 9 Jahren 1

1 Antwort auf die Frage

5
mpy

Das Problem tritt auf, weil ImageMagick die Auflösung der PDF-Eingabe nicht bestimmen kann und daher die Standardauflösung von 72x72 dpi verwendet, wie in der convert -verbose 0038.pdf out.pdfAusgabe gezeigt:

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

Sie haben die richtige Option angewendet -density 300, jedoch als Ausgabeoption, dh nach dem Namen der Eingabedatei. Tatsächlich werden die meisten Optionen für die convertsind Ausgabeoptionen, aber man convertweiß, dass

(...) eine begrenzte Anzahl von Einstellungen sind Eingabemöglichkeiten. Dazu gehören: -antialien, -caption, -Dichte, -define, -encoding, -font, -pointsize, -size und -texture sowie alle anderen Optionen.

Der korrekte convertBefehl sollte also lauten:

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

Zum Schluss noch zwei Anmerkungen:

  • Ich würde eine verlustfreie Kompression einsetzen -compress LZW; Die -qualityOption ist nur für die JPEG / MIFF / PNG-Komprimierung verfügbar .

  • -brightness-contrastFunktioniert wahrscheinlich nicht für s / w-Dokumente und wirkt sich nicht auf die Anti-Alias-Bildschirmdarstellung einiger PDF-Reader für diese Art von Dateien aus. (In der Regel für gescannte Zeitschriftenartikel.)

Es hat perfekt funktioniert. Ich danke dir sehr! supergiox vor 9 Jahren 0