Ponowne kodowanie tylko obrazów PDF? (lub ghostscript nie działa na 8-bitowym RGB podczas optymalizacji)
Muszę zoptymalizować wiele dużych dokumentów PDF dla rozmiaru pliku, więc spróbowałem użyćghostscript
, wywołany w ten sposób:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -sOutputFile=output-my-doc.pdf input-my-doc.pdf
Widzę to na niektórych stronach, ale na niektórych stronach ulega awarii.
Zaktualizowałem dogs
wersja 9.02, a ja doświadczam tego samego. Po rozerwaniu dokumentu na osobne strony i uruchomieniu powyższego polecenia na każdej stronie, mogę potwierdzić, które strony są problematyczne; w rzeczywistości błąd występuje nawet wtedy, gdy zadzwonię po prostugs input-my-doc-pageX.pdf
- to uruchamia przeglądarkę i mogłem zobaczyć tekst złożony, dopóki nie pojawił się obraz, gdy się zawiesił.
Mogę więc potwierdzić, że w moim przypadkugs
zawiesza się na konkretnych obrazach - i wreszcie mogę również podać minimalny działający (lub raczej nie działający) przykład, który demonstruje problem (poniżej). W szczególności problemem wydają się być 8-bitowe obrazy RGB, określone w określony sposób.
Teraz nie mogę powiedzieć, czy to jest błąd, ale ponieważ muszę to zrobić - myślałem, że może mógłbym „oszukać”ghostscript
, uruchamiając pliki PDF za pomocą aplikacji, która prawie nie pozostawia plików PDF - z wyjątkiem tego, że koduje obrazy ponownie w jednym formacie (powiedzmy PNG); tak, żegs
Optymalizator może również uruchomić te pliki bez awarii.
Jakie opcje muszę ponownie kodować tylko obrazy danego pliku PDF przy użyciu wiersza poleceń w systemie Linux?
Z góry dziękuję za wszelkie odpowiedzi,
Twoje zdrowie!
PS: Sprawa testowa jest w zasadzieprzykładowy kod źródłowy w formacie PDF w poście:Imagemagick: generowanie surowych danych obrazu do osadzania flot PDF?.
Ten plik PDF (hello2.pdf
) otwiera się dobrze, powiedzmy,evince
:
... ale ponieważ jego tabela Xref jest uszkodzona, naprawiam ją:
$ 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
Naprawiony plikhello2O.pdf
również otwiera się dobrzeevince
- jednak kiedy próbuję uruchomić powyższegs
polecenie optymalizacji na nim się nie powiedzie:
$ 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