3

ユーザーが自分の印刷物(監査/マージ/レビュー/複数のプリンターに送信)などを管理できる社内印刷ソリューションを開発しましたが、プロセスの最後、つまり最終的な印刷物に問題があります。

現在、当社のソリューションはドキュメント(元のドキュメントとマージ後のドキュメント)をPDFで保存しています。これらのドキュメントを特定のプリンターに送信し、場合によっては(ユーザーがオプションを選択した場合)、ページ1をトレイ8に印刷し、残りをトレイ1に印刷できるようにする必要があります。PDFを分割して印刷することはできません。また、単一のジョブとしてプリンタでホチキス止めする必要があるため、別々に使用します。

私たちのアイデアは、ghostscriptを使用してPDFファイルをPostScriptファイルに変換し、PJLコマンドをPostScriptに挿入してから、gsprintを使用してこの変更されたPostScriptファイルを印刷することでした。

残念ながら、ghostscript、postscript、PJL、gsprintの組み合わせは機能していないようです。私たちが試しているPJLコマンドは、Windowsのコピーコマンドを介してプリンターに送信されたテキストファイル内で機能することができますが、PostScriptファイルに入れてgsprintを使用して印刷した場合と同じ影響はないようです。

誰かがPostScriptに対して行っていることの恐ろしい欠陥を見つけたり、PostScript-> PJL amends-> gsprintワークフローが機能しない理由を知っている人はいますか?

オンラインで例を見つけるのは非常に困難であるため、PJLコマンドの配置が正しくない可能性があります。

(//コメントは最終ファイルにありません)

<ESC>%-12345X@PJL JOB<ESC>&l8H           //start job printing first page 
@PJL ENTER LANGUAGE = Postscript         //to tray 8 (letterhead)
@PJL COMMENT CANPJL SET STAPLE=ONEUPLEFT //indicate the document should be stapled
%!PS-Adobe-3.0                           //start of PostScript file proper
---
%%PageTrailer                            //end of first page
<ESC>%-12345X@PJL EOJ<ESC>%-12345X       //end the first job
%%Page: 2
<ESC>%-12345X@PJL JOB<ESC>&l7H           //start 2nd job to print remaining
---                                      //pages to tray 1 (plain)
---
%%EOF
<ESC>%-12345X@PJL EOJ<ESC>%-12345X       //end 2nd job

次に、この変更されたPostScriptを使用して、gsprintを次のように使用します。

gsprint -noquery -ghostscript gswin32c -printer "printer" "C:\postscriptfile.ps"

これはすべてデフォルトのトレイに印刷され、ステープルされていません。つまり、これは期待どおりに機能しません。

私たちが何を達成しようとしているのかが明確になっていることを願っています。どんな助けでも大歓迎です。

前もって感謝します。

PS:私たちのプリンターはすべてキヤノンのプリンターです。

編集:

以下のKenSの回答の後、論理ワークフローは代わりにPDF->PCL->PJLを追加->「コピー」でプリンターに送信する必要があるようです。

残念ながら、これにはまだ問題があります。特定のPJLコマンドはプリンターによって無視されているようです(プリンターは間違いなくPCLプリンターです)。

Microsoft Wordで作成された2ページのPDFを取得する場合は、ghostscriptを使用してPCLに変換し、そのPCLファイルをNotepad++で編集して次を追加します。

<ESC>%-12345X@PJL JOB NAME = "My Print Job Name"<CR><LF>
@PJL SET DUPLEX = ON
@PJL SET OUTBIN = LOWER
@PJL ENTER LANGUAGE = PCL
...original PCL data...
<ESC>%-12345X@PJL EOJ<CR><LF>
<ESC>%-12345X

ドキュメントは下部の出力トレイから出てきますが、両面印刷されません。しかし、さらに奇妙なのは、DUPLEX = ONの場合、DUPLEX = OFFの場合とまったく同じジョブよりも、プリンターの印刷にはるかに長い時間がかかるようであり、内部で何か別のことをしているように聞こえるということです。

何か案は?

4

2 に答える 2

3

gsprintの動作を誤解していると思います。入力ファイルを受け取り、それをビットマップにレンダリングし、そのビットマップを適切なキャンバスに描画してから、Windows印刷システムを使用してそのキャンバスをプリンターで印刷します。プリンターをまったく制御できません。その結果、(レンダリングではなく)プリンターを制御することが期待されるものを埋め込んでも効果はありません。

さらに、PJLは、PostScriptプリンターではなく、HPPCLプリンターに関連付けられています。PJLPCLプリンターで動作する可能性がありますが、各ページを個別のジョブとして処理するため、PostScriptプリンターではまったく動作せず、インタープリターかどうかによってはエラーが発生する可能性があります。 PJLコマンドを無視するかどうか。

プリンターを制御するには、プリンターがサポートする入力の種類(PostScriptまたはPCL)を決定し、PDFをその形式に変換してから、適切な制御シーケンスを挿入する必要があります。PCLプリンターの場合は、合理的にPJLを使用できますが、PostScriptプリンターの場合は、setpagdeviceオペレーターを使用してこれを制御する必要があります。プリンタ用のWindows.WPDまたは.PPDファイルがあると仮定すると、関連する制御シーケンスはそこで見つけることができます。または、いくつかのテストファイルを印刷してその内容を調べることによって見つけることができます。

通過中; 使用しているコマンドは、テキストファイルをプリンタに送信するときに機能すると言います。これは、プリンターが少なくともPJLを理解し、ほぼ確実にPCLプリンターであることを意味します。PostScriptはプログラミング言語であり、ランダムなテキストで構文エラーが発生するため、PostScriptプリンターにテキストを送信することはできません。エラーが発生します。ただし、0x1B(エスケープ)で始まらないものはすべて印刷されるテキストであると想定するPCLプリンターにテキストを送信することはできます。

したがって、Ghostscriptを使用してPCL出力を生成し、上記のようにPJLを挿入してから、結果を直接プリンターに送信すると、おそらく機能するはずです。もちろん、各ページの終わりを特定することは、PCLファイルではより難しい場合があります。

于 2012-12-05T08:17:09.427 に答える