2016-11-17 5 views
1

Windowsシステムでghostscript 9.19を使用しています。 バッチファイルからghostscriptを実行すると、pdfが作成されます。 ghostscriptがプログラムからスケジュールされると、コンテンツなしでpdfが作成されます。空白ページは1つだけです。 コマンドラインは、どちらの場合も同じである(1本のロングライン、原因整形に以下の分割):が作成されることは決してありませんghostscriptからpdf-a-iccファイルに変換できますか?

gswin32c.exe -sstdout=d:\my_data\gs_stdout.log 
     -dPDFA=1 -dBATCH -dNOPAUSE -dNOOUTERSAVE 
     -sColorConversionStrategy=/RGB 
     -sOutputICCProfile=d:\my_ps_files\AdobeRGB1998.icc 
     -sDEVICE=pdfwrite 
     -sOutputFile=d:\my_data\my_hopeful_pdfa_pdfa.pdf 
     -dPDFACompatibilityPolicy=1 "d:\my_ps_files/PDFA_def.ps" "d:\my_data\my_hopeful_pdfa_pdfa.ps" 
     > d:\my_data\my_hopeful_pdfa_gs_out.log 

my_hopefule_pdfa_gs_out.log。しかし、gs_stdout.logが作成されます。

pdfが作成されるかどうかは、ghostscriptが実行されるディレクトリに* .iccファイルが存在するかどうかに関係しているように見えます。

私はstdout.logファイルで異なる出力を得ます。

それは私が手に動作します:

GPL Ghostscript 9.19 (2016-03-23) 
Copyright (C) 2016 Artifex Software, Inc. All rights reserved. 
This software comes with NO WARRANTY: see the file PUBLIC for details. 
Error: /undefinedfilename in (>) 
Operand stack: 
    false 
Execution stack: 
    %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 
Dictionary stack: 
    --dict:1201/1684(ro)(G)-- --dict:0/20(G)-- --dict:80/200(L)-- 
Current allocation mode is local 
Last OS error: Invalid argument 

エラーログ、それが失敗したときは、次のとおりです。

GPL Ghostscript 9.19 (2016-03-23) 
Copyright (C) 2016 Artifex Software, Inc. All rights reserved. 
This software comes with NO WARRANTY: see the file PUBLIC for details. 
Error: /undefinedfilename in --file-- 
Operand stack: 
    --nostringval-- --nostringval-- (AdobeRGB1998.icc) (r) 
Execution stack: 
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1967 1 3 %oparray_pop 1966 1 3 %oparray_pop 1950 1 3 %oparray_pop 1836 1 3 %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval--  --nostringval-- 2 %stopped_push --nostringval-- 
Dictionary stack: 
    --dict:1201/1684(ro)(G)-- --dict:0/20(G)-- --dict:79/200(L)-- 
Current allocation mode is local 
Last OS error: No such file or directory 
Current file position is 818 

誰かがこの出力の解釈で私を助けることができます。両方の場合のAdobeRGB1988.iccは、コマンドラインで指定したとおり、d:¥my_ps_files¥AdobeRGB1998.iccにあります。

+0

通常のウィンドウパス区切り文字ではない '/ PDFA_def.ps'にスラッシュを使用しています。バックスラッシュで置き換えてみてください。もう一つのポイントは、プログラムから起動したときに環境変数が異なるかもしれないが、どのプログラムがどのような方法で起動しているのかわからなければ、これは分かりにくいでしょう。 –

答えて

2

フォワードスラッシュは無関係ですが、Ghostscriptはどちらか一方、または両方を同じパスで扱うことができます(どちらか一方に固執するのが少なくとも賢明だとは思いますが)。

実際の問題は、「AdobeRGB1998.icc」というファイル(PostScript undefinedfilenameではインタープリタがファイルを見つけることができないことを意味します)を見つけることができず、PDFA_def.psファイルの内容を見ることができないため、 (ファイルがPDFA_def.psで開かれているため)

しかし、あるケースでは、d:\ my_ps_filesフォルダからGhostscriptを実行しているので、ICCプロファイルファイルは現在のディレクトリにあります。もう1つのケースでは、Ghostscriptを 'some other'ディレクトリから実行しているため、ファイルは現在のディレクトリにありません。明らかにデフォルトの名前ではないので、ここでファイル名を変更しましたが、完全なパスを指定しなかったようです。

'コマンドラインで指定されたとおりに'は完全に異なる呼び出しを指します。この場合、OutputICCProfileとしてAdobeRGB1998.iccを使用していますが、PDFA_def.psを使用してOutputIntent辞書のDestOutptuProfileを設定する必要がありますこれはコマンドラインでではなくと指定されています。これは、コマンドラインで辞書オブジェクトを作成する方法がないため、PostScriptで行う必要があります。また、辞書の作成はPostScriptで行う必要があるため、その内容の作成も行われます。 DestOutputProfileであり、ファイルから読み込んだので、PostScriptでもそれを指定する必要があります。

暗黙的に現在の作業ディレクトリのままにするのではなく、ICAプロファイルのフルパス指定をPDFA_def.psに入れる必要があります。 、あなたがいないがハイレベル出力用OutputICCProfileを指定する必要があり、それはレンダリングのための制御DestOutputProfileとOutputICCProfileは異なるものであることを

注意だん、それはここでは何の効果もありませんし、私はそれをドロップすると思います。

バッチファイルでエラーが発生するのは、 '>'がシェルコマンドなので、バッチファイルに入れても機能しないため、コマンドとしてGhostscriptに渡されます行引数。幸いなことに、これは処理が完了した後に起こるので、悪影響はありません。とにかくstdoutをファイルにリダイレクトしたので、これは何も含まれていませんでした。

単純なフォークロア語ではなく、正当な理由がない限り、-dNOOUTERSAVEを設定しないでください(設定する理由はありますが、そのように使用しないようです)。特定の条件が適用されない限り、ガベージコレクションに関する複雑な理由により、処理が遅くなることはありません。

+0

私はこれを答えに設定しています。 PDFA_def.psでフルパスを設定すると、問題なく動作します。 -dNOOUTERSAVEを削除すると、パフォーマンスが変わりました。あなたはあなたのことを知っている。あなたは経験の浅い道からそれを学んだのですか、またはインターネットの問い合わせ以外に便利な具体的な参考資料がありますか? – infowanna

+0

経験、私はGhostscript開発チームの一人だと思う(shh、誰も知らないように...-) – KenS

+0

もし私がPDFA_def.PSで完全なパスを設定しなければ、Ghostscriptは全部検索しますpath環境変数のパス? – infowanna

関連する問題