ファイルサイズに合わせて多数の大きなPDFドキュメントを最適化する必要があるため、次のようghostscript
に呼び出して を使用してみました:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -sOutputFile=output-my-doc.pdf input-my-doc.pdf
一部のページでこれが実行されているのを確認できますが、特定のページでクラッシュします。
gs
バージョン 9.02にアップデートしましたが、同じことが起こりました。ドキュメントを別々のページにバーストし、各ページで上記のコマンドを実行した後、問題のあるページを確認できました。実際、単に呼び出してもエラーが発生しますgs input-my-doc-pageX.pdf
-これによりビューアーが起動し、クラッシュした画像になるまでテキストがタイプセットされているのを見ることができました。
したがって、私の場合、gs
特定の画像でクラッシュすることを確認できました-そして最後に、問題を示す最小限の動作する(または動作しない)例を提供することもできます(以下)。特に、特定の方法で指定された 8 ビット RGB 画像に問題があるようです。
これがバグかどうかはわかりませんが、これを行う必要があるためghostscript
、アプリケーションを介して PDF を実行することで「ごまかす」ことができるのではないかと考えていました。画像を単一の形式(PNGなど)に再エンコードします。gs
オプティマイザがクラッシュすることなくこれらのファイルを実行できるようにします。
Linux でコマンド ラインを使用して特定の PDF の画像のみを再エンコードするには、どのようなオプションが必要ですか?
ご回答ありがとうございます。
乾杯!
PS: テスト ケースは基本的に、投稿のソース コード PDF の例です。.
その PDF ( hello2.pdf
) は、たとえば、evince
次のように問題なく開きます。
...しかし、それは xref-table が壊れているので、修復します:
$ 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
修復されたファイルhello2O.pdf
も正常に開きますevince
- ただし、上記のgs
最適化コマンドを実行しようとすると失敗します:
$ 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