0

gs 8.71、RedHat を使用

jpeg2000 画像が埋め込まれた PDF ファイルの変換に問題があります。コーディングの一部は、-c <> setpagedevice コマンドを使用して pdf 画像を 10% 縮小することです。このコマンドは、pdf ファイルに jpeg2000 画像がない場合に正しく機能します。ただし、pdf ファイルに JPEG2000 画像が含まれている場合、ghostscript コマンドがハングし、「エラー: JPXDecode データを処理できません。ページにデータがありません」というメッセージが表示されます。

jpeg2000 画像に遭遇した場合にハングしないようにするために gs に渡すことができるパラメーターはありますか? jpeg2000 画像に対して pdf ファイルが正しくない場合は対処できますが、実行時にプログラムがハングするだけの場合は対処できません。

また、gs 9.15 をコンパイルして RedHat で実行しようとしましたが (結果は良くなりましたが、素晴らしい結果ではありませんでした)、RedHat の最新の最高のものを使用することを好みました。

4

1 に答える 1

0

動作しないファイルを見つけた場合は、バグとして報告してください。特に「MagicDontHang」パラメーターはありません。特に、JasPer (非常に古いバージョンを使用しているため) または OpenJPEG (新しいバージョン) でハングが発生している可能性があるためです。そのため、Ghostscript ができることは、デコーダがデータを返すのを待つことだけです。

また、RedHat パッケージはほぼ確実にシステム共有ライブラリを使用しますが、これはお勧めしません。出荷するソースは実際には統合された全体としてテストされています (システム共有ライブラリを使用している場合は明らかにそうではありません)。私たちが出荷するバージョンが私たちのコードで動作することを知ってください。また、特定のライブラリ、特に OpenJPEG にはアップストリームで提供されているが必ずしも (まだ) 採用されていない、いくつかの修正が含まれているため、出荷するコードはより適切に機能します。

ところで、'-c <> setpagedevice' が何をすると思うかはわかりませんが、確かに 'pdf 画像を 10% 縮小する' というわけではありません。

したがって、私のアドバイスは、特定のバージョンの Linux に RedHat が同梱しているバージョンを忘れて、www.ghostscript.com からソースを入手してビルドすることです。すぐにバージョン 8.71 よりも大幅に改善されます (4 年分のバグ修正と拡張) システム共有ライブラリを使用しないため、9.15 をパッケージ化したとしても、パッケージャーから取得するものよりも優れています。

ああ、最後に、pdfwrite デバイスを介して JPEG2000 画像を含む PDF ファイルを実行した結果が元のファイルよりも小さい場合は、非常に驚​​くでしょう。出力 PDF ファイルは異なる圧縮スキームを使用するからです。JPEG2000 エンコーダーには商用ライセンスが必要なので (関連する特許が多数あります)、AGPL リリースでは使用できません。その結果、画像データはほぼ確実に入力よりも出力ファイルの方が大きくなります。PDF ファイルに画像が含まれる場合、画像データが PDF ファイルの大部分を占めることが多いため、出力ファイルのサイズが大きくなる可能性があります。

于 2014-10-30T19:06:08.300 に答える