2017-01-16 3 views
1

私は外部アプリケーションで使用するために "GS Wrapper"(9.20 SDKを使用)を使っています。 A0 SheetをA1、A2、A3にスケールダウンしてもうまく動作します。 (PDFからPSへ、次に印刷)GhostScript(PostScript):A *からA4にスケールダウンする際のプリンタの境界線。

問題:入力フォーマットをA4に縮小すると、用紙の端から5mmずつ黒い境界線を描いた技術的な図が印刷されます。

  • A4(〜A4)をもう一度約95%縮小して画像を中央に置く機会はありますか?スケーリングするため

私は次のパラメータを使用します(これは、小さいベースイメージにつながるべきである、離れて、その後シート国境から〜約10mmのブラックボーダーと言う):

GhostArg[0] = "-dNOPAUSE"; 
GhostArg[1] = "-dBATCH"; 
GhostArg[2] = "-dSAFER"; 
GhostArg[3] = "-dNOPAUSE"; 
GhostArg[4] = "-g2480x3508"; 
GhostArg[5] = "-dPDFFitPage"; 
GhostArg[6] = "-r300x300"; 
GhostArg[7] = "-sDEVICE=ps2write"; 
GhostArg[8] = Output; 
GhostArg[9] = Input; 

ソリューションの更新:

私は挿入することによって、この問題を解決するために管理[8]およびArg [9] Argの間のこの3行:

GhostArg[9] = "-c"; 
GhostArg[10] = "<< /BeginPage { 0.99 0.99 scale 10 10 translate } >> setpagedevice"; 
GhostArg[11] = "-f"; 

/BeginPageヒントのKenSのおかげです。

答えて

1

プリンタに印刷できない領域があるようです。これは珍しいことではないが、紙の取り扱いは印刷中に紙を保持する必要があり、印刷可能でない媒体の領域が生じる可能性がある。

コンテンツがメディアの端に達すると、プリンタのシンプルさが印刷されず、コンテンツが切り取られる可能性があります。

ps2writeでメディアコンテンツをより小さなサイズにすることは完全に可能ですが、コンテンツがメディアサイズに適合しているため、(自動的に)スケールダウンしてコンテンツの位置をシフトすることはできません。

しかし、FitPageメカニズムでは、メディアサイズの要求だけではコンテンツを参照しません。したがって、入力要求A3および選択されたメディアがA4(および固定)である場合、スケールファクタが適用されて、コンテンツが必要なメディアサイズにスケールされます(A3のメディア要求は無視されます)。

あなたができることは、現在のコードをそのまま残すことですが、スケール演算子を使用してページ上のマークのサイズをさらに小さくするBeginPageまたはInstallプロシージャを追加し、translate演算子を移動させます起源はわずかになるので、最終的なコンテンツは中央に配置されます。

(例のみ、テストされていない)のようなもの:ところで

<< 
    /BeginPage { 
    0.95 0.95 scale 
    16 20 translate 
    } 
>> setpagedevice 

、あなたはGhostscriptのがAGPLの下でライセンスされて実現していますか?

また、-gスイッチと-rスイッチを使用せず、単に-dDEVICEWIDTHPOINTSと-dDEVICEHEIGHTPOINTSを使用してメディアサイズを変更することを強くお勧めします。

-gスイッチはピクセル単位で動作しますが、高レベルの出力デバイス(pdfwriteやps2writeなど)はピクセルを出力せず、ハイレベルのベクタオブジェクトを書き込みます。しかし、PostScriptとPDFグラフィックスモデルの違いにより、PostScript出力でイメージにレンダリングし、そのように要素を囲む必要がある要素もあります。解像度を300に設定すると、それらの要素(透明度を含むページなど)がレンダリングされる解像度が固定されます。非常に厳密に管理されたワークフローで作業していて、最終出力の解像度を知っていない限り、そうしないことをお勧めします。

DEVICEHEIGHTPOINTSおよびDEVICEWIDTHPOINTSスイッチを使用すると、解像度を参照せずにメディアサイズを制御できます。 PostScript(およびPDF)の1ポイント= 1/72インチに注意してください。

+0

私は '-c'と' -f'スイッチを使って/ BeginPage(..)を追加しようとしましたが、これはもう出力されません。なぜなら、私は同時にPDFFitPageで使うことができないのでしょうか? 元のSourceCodeを変更せず、ライブラリとして使用するだけで、管理されたコンテキストで使用できます。つまり、コードを再配布する必要はありませんか? Howewer、私は毎回最終的な出力の解像度を知っていますが、私は自分のコードを-g * x *から-dDEVICE *に変更すると思います。 – Essigwurst

+0

ライブラリ(おそらくDLL)を使用している場合は、理解しているようにAGPLに準拠する必要があります。なぜなら、使用している 'ライブラリ'を別のライブラリに置き換える必要があるからです。これは、APIが変更された可能性があることを意味します。その場合、ソースを変更できる必要があります。そのため、コードをAGPLする必要があります。もちろん、私は弁護士ではない、あなたの解釈は異なるかもしれません。 BeginPageを-dFitPageと一緒に使うことができるはずですが、(私が言ったように)試したことはありません。/BeginPageの代わりに/ Installを使用してみることもできます。私は後で試してみる。 – KenS

+0

ええ、私はこのAPIを使用しています:https://ghostscript.com/doc/9.02/API.htm。ちょうどGoogleを使用することから、私は個人的な使用のためにライブラリを使用しているので、私はそれを再配布することがわかりません。ファイルを作成し、独自のDLLを使ってメソッドをエクスポートしてください。 PSを作成するときにGSがシートの「ピース」を使用せずに、FitPageとの両方で試しました。私は私の解決策で質問を更新しました。スケールと翻訳コマンドは私のためにそれをしました。 – Essigwurst

関連する問題