Nur Bilder einer PDF-Datei neu codieren? (oder Ghostscript schlägt bei 8-Bit-RGB während der Optimierung fehl)

Ich muss eine Reihe großer PDF-Dokumente für die Dateigröße optimieren, also habe ich versucht, sie zu verwendenghostscript, wie folgt aufgerufen:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -sOutputFile=output-my-doc.pdf input-my-doc.pdf

Ich kann das für einige Seiten laufen sehen, aber dann auf bestimmten Seiten stürzt es ab.

Ich habe auf aktualisiertgs Version 9.02, und ich erlebe das gleiche. Nachdem Sie das Dokument in separate Seiten aufgeteilt und den obigen Befehl auf jeder Seite ausgeführt haben, konnte ich feststellen, welche Seiten problematisch sind. in der Tat tritt der Fehler auf, auch wenn ich gerade anrufegs input-my-doc-pageX.pdf - dies startet einen Betrachter und ich konnte den Textsatz sehen, bis es zu einem Bild kam, als es abstürzte.

So konnte ich das in meinem Fall bestätigen,gs stürzt bei bestimmten Bildern ab - und schließlich kann ich auch ein minimal funktionierendes (oder eher nicht funktionierendes) Beispiel angeben, das das Problem veranschaulicht (siehe unten). Insbesondere scheint das Problem 8-Bit-RGB-Bilder zu sein, die auf eine bestimmte Weise spezifiziert sind.

 

Jetzt kann ich nicht sagen, ob dies ein Fehler ist, aber da ich dies erledigen muss - dachte ich, dass ich vielleicht "schummeln" könnteghostscriptdurch Ausführen der PDFs durch eine Anwendung, die die PDFs so gut wie unberührt lässt - mit der Ausnahme, dass die Bilder in ein einziges Format (z. B. PNG) umcodiert werden; so, dass diegs Der Optimierer könnte diese Dateien auch ohne Absturz überfliegen.

Mit welchen Optionen kann ich unter Linux nur die Bilder einer bestimmten PDF-Datei über die Befehlszeile neu codieren?

Vielen Dank im Voraus für alle Antworten,
Prost!

 

PS: Der Testfall ist grundsätzlich derQuellcode-PDF-Beispiel in der Post:Imagemagick: Rohbilddaten für das Einbetten von PDF-Dateien generieren?.

Das PDF (hello2.pdf) öffnet ganz gut in, sagen wir,evince:

... aber da es sich um eine beschädigte XREF-Tabelle handelt, repariere ich sie:

$ pdftk hello2.pdf output hello2O.pdf
$ qpdf --check hello2O.pdf 
checking hello2O.pdf
PDF Version: 1.4
File is not encrypted
File is not linearized
No errors found

Die reparierte Dateihello2O.pdf öffnet auch gut inevince - aber wenn ich versuche, das oben genannte auszuführengs Optimierungsbefehl darauf, schlägt fehl:

$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -sOutputFile=optihello2O.pdf hello2O.pdf
GPL Ghostscript 9.02 (2011-03-30)
Copyright (C) 2010 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1
Loading NimbusSanL-Regu font from /usr/share/ghostscript/9.02/Resource/Font/NimbusSanL-Regu... 2756020 1410650 1869284 568021 3 done.
Error: /undefined in --run--
Operand stack:
   --dict:6/15(L)--   false   --dict:11/19(L)--   --dict:4/4(L)--   --nostringval--   FlateDecode   --dict:4/4(L)--   0
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1910   1   3   %oparray_pop   1909   1   3   %oparray_pop   1893   1   3   %oparray_pop   --nostringval--   --nostringval--   2   1   1   --nostringval--   %for_pos_int_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %array_continue   --nostringval--   false   1   %stopped_push   --nostringval--   %loop_continue   --nostringval--   576   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %array_continue   --nostringval--   --nostringval--
Dictionary stack:
   --dict:1160/1684(ro)(G)--   --dict:1/20(G)--   --dict:82/200(L)--   --dict:82/200(L)--   --dict:108/127(ro)(G)--   --dict:295/300(ro)(G)--   --dict:23/30(L)--   --dict:6/8(L)--   --dict:25/40(L)--   --dict:7/17(L)--
Current allocation mode is local
GPL Ghostscript 9.02: Unrecoverable error, exit code 1

Antworten auf die Frage(1)

Ihre Antwort auf die Frage