2008/05/29

マイクロドライプリンタのPSプリンタ化 〜 印刷までのデータの流れ

プリンタデバイス印刷までのデータの流れ(==>)、プログラム(<< >>)のアクション((*n))、及び作られるデータ形式(( )) は次のようになると思います。

  <<アプリケーション>> ==(生の非PS、PS形式データ)==

==> <<PSプリンタドライバ (*1)>> ==(PS形式データ)==

==> <<Redirected Port (PRTn) (*2)>> ==(PS形式データ)==

==> <<Ghostscript (*3)>> ==(Windows印刷用標準中間データ)==

==> <<Windows用プリンタドライバ (*4)>> ==

==(機種依存(印刷行動用)データ)==

==> |プリンタデバイス(*5)|---> 印字

(*1)PSプリンタドライバ
   (Windows用Adobe PSプリンタドライバ+PPDファイル)
   アプリケーションで作成されたデータを
   PS形式データに変換し、
   Redirect Port(PRTn)へ出力する。

(*2)RedMonにより作られた特殊なポートで、Ghostscript へデータを渡す。

(*3)日本語 Ghostscript(Windowsでの実行ファイルはgswin32c.exe)で、
   色々なスイッチや引数に従いながら、
   内含するmswinpr2デバイスを使って
   機種依存しないWindows印刷用標準中間データ形式に変換
   (スイッチと引数 : -sDEVICE=mswinpr2)し、
   Windows用プリンタドライバへ出力する。
   (スイッチと引数 : -sOutputFile="\\spool\ALPS MD-5500P")

(*4)渡されたCMYKデータはそのままに、RGBデータはCMYKデータに変換されるが、その際、更に解像度や線数、用紙サイズ、オプション(ページ合成、特色印刷等)、イメージ調整等ここで付加され、機種依存のデータとして出力される。

(*5)該当プリンタ(ここでは、ALPS MD-5500P)により印字行動。

重要な役割を担うのは RedMon(Redirection Port Monitor)というプログラムです。これは「Redirected Portという特別なポートを作り、送られて来たPS形式データをGhostscriptに渡し、さらにGhostscriptがWindows用プリンタドライバへ渡す。」 という一連のWindows用プリンタドライバまでのデータの受け渡しをバックアップするプログラムです。

次は、データの流れの中にある プログラム について実践的な解説をしていきます。

2008/05/26

マイクロドライプリンタのPSプリンタ化 〜 PPDファイル作成 (5)

最初に戻ります。

*PPD-Adpbe: "4.3"
・・・・・
・・・・・
・・・・・
*TTRasterizer: Type42

この辺は、どのPPDファイルでもほぼ同じです。

*ModelName: "MDPusr MD-5500P"
*ShortNickName: "MDPusr MD-5500P"
*NickName: "MDPusr MD-5500P"

" "内は全部同じにしています。

*Manufacturer: "MDPusr"

" "内事項は、Mac OS X10.4.11において、当PPDファイルを 「ライブラリ/Printers/PPDs/Contents/Resources/en.lproj フォルダ」 に保存後、再起動しておくと、「プリントとファックス」の「プリンタブラウザ」-「使用するドライバ」或いは「プリンタの機種名」の一覧に登録されます。プリンタ追加時にそこから機種名を選べるようになります。

*NickName: "MDPusr MD-5500P"

" "内事項が上述の機種名になります。

*ShortNickName: "MDPusr MD-5500P"

" "内事項は、Adobe Postscript ドライバセットアップによって、プリンタのモデル名として参照され、Windows OS ではデフォルトでプリンタ名として登録されます。

以上、一応使えれば・・・というコンセプトの基、とても乱暴な内容になってしまいました。 m(_ _)m

※参考Webなど
・参考PPDファイル
 ADIST5J.PPD(本ファイルの基本構造)
   AdobeのWeb内にある 「adobe.zip」 を解凍して得られます。
 各種ALPS マイクロドライプリンタ用PPDファイル
   AdobeのWeb内にある自己解凍ファイル 「birmy.exe」 から得られます。
 ALPS Micro Dry RIP 2.05Jシステム PPDファイル
 その他PSプリンタ用PPDファイル
・「PPDのファイル構造」 (PPDファイルの理解に役立ちます)

(PPDファイル作成 終わります)

2008/05/25

マイクロドライプリンタのPSプリンタ化 〜 PPDファイル作成 (4)

*% Custom Page Sizes===================
・・・

カスタムページサイズの設定、編集に関わる部分です。
これらの値も、前回(1)~(5)の方法によって、得ることができます。

*ParamCustomPageSize Width: 1 points 277.92 1683.72

カスタムページサイズの幅の範囲(単位はpt、Windows用ドライバで98mm~594mmに相当)を表します。

*ParamCustomPageSize Height: 2 points 277.92 1683.72

カスタムページサイズの高さの範囲(単位はpt、Windows用ドライバで98mm~594mmに相当)を表します。

*MaxMediaWidth: "634.92"

用紙の幅の最大サイズ(単位はpt、Windowsドライバで 224mm )を表します。

*MaxMediaHeight: "1683.72"

用紙の高さの最大サイズ(単位はpt、Windowsドライバで 594mm )を表します。

*LeadingEdge Short: ""
*LeadingEdge Long: ""
*DefaultLeadingEdge: Short

用紙の出力時の向きを表します。 Shortは用紙の短辺から出力、Longは長辺から出力を表し、デフォルトで短辺から出力することを示しています。

*HWMargins: 9.60 42.60 9.60 34.08

左側の数値(単位はpt)から順に、プリンタの右余白 下余白 左余白 上余白を表します。カスタムページサイズ編集時にこの値(右余白 0.34cm、下余白 1.50cm、左余白 0.34cm、上余白 1.20cm)が自動的に設定、表示されます。

(次回へ続く)

マイクロドライプリンタのPSプリンタ化 〜 PPDファイル作成 (3)

MD-5500P用PPDファイルについて簡単に説明します。

以前も言ったように、Windows用プリンタドライバを使用することで、PPDファイルの内容は、かなり簡略化できます。しかし、アプリケーションでデータ作成する時、ページサイズや用紙サイズを指定することがあるので、(PSプリンタドライバに組込まれる)PPDファイルにはそれらの情報等最低限の記述が必要になります。

*% Paper Handling =================== より下が、ページサイズや用紙サイズ関連項目になります。

実際の印刷において使用するALPS MD-5500P用のドライバ「Micro Dry プリンタドライバ Ver.2.3.2 for Windows 2000/XP」をインストールし、以下のようにしてAdobe Illustrator CS2 からページサイズや用紙サイズを参照し、決定します。

(1)Adobe Illustrator CS2の「ファイル」-「プリント」画面の「プリンタ」ダイアログから、プリンタドライバ 「ALPS MD-5500P」 を選ぶ。

(2)「用紙-サイズ」ダイアログから「プリンタドライバで定義」を選び、左端下の「プリンタ」ボタンをクリックする。

(3)お馴染のドライバ機能による「印刷」画面が出てくるので、「ALPS MD-5500P」が選ばれているのを確認して、用紙タグをクリックします。用紙サイズダイアログから必要な用紙サイズを選んで、印刷ボタンをクリックする。

(4)上記(1)のIllustratorのプリント画面に戻るので、右下の完了ボタンをクリックする。

(5)「表示」メニューのポップアップウィンドウから「アートボードを隠す」、「ページ分割を表示」を指定して、 ページ分割(破線)だけを表示させる。
PPDファイルに必要なページサイズや用紙サイズに関する記述はこのページ分割表示画面から得られます。ページ分割の外側の破線は用紙サイズを、内側の破線はプリンタで印字可能な領域を表します(下の(6)の図を参照)。

(6)下図のように、用紙サイズ領域の左下を原点(0pt, 0pt)にして(定規の原点を移動する)、ページ分割の内と外の破線にピッタリ重ねて矩形を描く。そして、Illustratorの「変形」タグから必要な座標値を得る(あらかじめ、「環境設定」から単位をptにしておく)。図は、A4用紙のページ分割表示画面に書き加えをしたものです(他の用紙サイズについても同様にします)。


以上の方法で得られた情報を基に、PPDファイルのページサイズ、用紙サイズに関する項目にその数値を入れていきます。

*PaperDimension A4: "595.20 841.80"

A4用紙とその実際のサイズを記述しています。" " 内数値が短辺と長辺の幅をそれぞれ表しています(" " 内数値の単位は pt(ポイント)です)。他の用紙についても同様です。

*ImageableArea A4: "9.60 42.60 585.60 807.72"

このA4用紙の印字可能領域を示します。" " 内数値については "左下X座標 左下Y座標 右上X座標 右上Y座標"となります。他の用紙についても同様です。

*PageSize A4: "
2 dict dup /PageSize [595.20 841.80] put dup /ImagingBBox null put setpagedevice"
*End

ページサイズに関する記述です。上で得た数値を入れます。

*PageRegion A4: "
2 dict dup /PageSize [595.20 841.80] put dup /ImagingBBox null put setpagedevice"
*End

上の PageSize と同じ記述の仕方です。

Windows用ドライバ ALPS MD-5500P がサポートする用紙サイズは全て組み込めるはずですが、ここでは6種類の用紙サイズ---A4、B5、レター、A4ノビ、官製はがき、VDフォトはがき---を選んでいます。
(次回へ続く)

2008/05/21

マイクロドライプリンタのPSプリンタ化 〜 PPDファイル作成 (2)

取り合えず以下のように・・・

MD-5500P用PPDファイル(MDPusr-5500P.PPD)

+++ この下から +++

*PPD-Adobe: "4.3"
*FormatVersion: "4.3"
*FileVersion: "1.0"
*LanguageEncoding: JIS83-RKSJ
*LanguageVersion: Japanese
*PCFileName: "MD5500P.PPD"
*Product: "(MDPusr MD-5500P)"
*PSVersion: "(3011.104) 0"
*ModelName: "MDPusr MD-5500P"
*ShortNickName: "MDPusr MD-5500P"
*NickName: "MDPusr MD-5500P"
*Manufacturer: "MDPusr"
*% PPD for MDPusr MD-5500P
*% === Options and Constraints =========

*% ==== Device Capabilities ===============
*ColorDevice: True
*DefaultColorSpace: CMYK
*FileSystem: True
*?FileSystem: "(True) == flush"
*LanguageLevel: "3"
*FreeVM: "1000000"
*FCacheSize None/Standard: 204800
*Throughput: "1"
*VariablePaperSize: True
*TTRasterizer: Type42
*% Paper Handling ===================

*% Code in this section both selects a tray and sets up a frame buffer.
*OpenUI *PageSize: PickOne
*OrderDependency: 50 AnySetup *PageSize
*DefaultPageSize: A4
*PageSize A4: "
2 dict dup /PageSize [595.20 841.80] put dup /ImagingBBox null put setpagedevice"
*End
*PageSize B5: "
2 dict dup /PageSize [515.76 728.40] put dup /ImagingBBox null put setpagedevice"
*End
*PageSize Letter/レター: "
2 dict dup /PageSize [612.00 792.00] put dup /ImagingBBox null put setpagedevice"
*End
*PageSize A4Extra/A4ノビ: "
2 dict dup /PageSize [634.92 1006.20] put dup /ImagingBBox null put setpagedevice"
*End
*PageSize PostCard/はがき: "
2 dict dup /PageSize [283.44 419.52] put dup /ImagingBBox null put setpagedevice"
*End
*PageSize VDPhotoCard/VDフォトはがき: "
2 dict dup /PageSize [283.44 453.60] put dup /ImagingBBox null put setpagedevice"
*End
*?PageSize: "
save
currentpagedevice /PageSize get aload pop
2 copy gt {exch} if
(Unknown)
6 dict
dup [595.20 841.80] (A4) put
dup [515.76 728.40] (B5) put
dup [612.00 792.00] (Letter) put
dup [634.92 1006.20] (A4Extra) put
dup [283.44 419.52] (PostCard) put
dup [283.44 453.60] (VDPhotoCard) put
{ exch aload pop 4 index sub abs 5 le exch
5 index sub abs 5 le and
{exch pop exit} {pop} ifelse
} bind forall
= flush pop pop
restore
"
*End
*CloseUI: *PageSize

*% definition of imaging area of page ========================
*OpenUI *PageRegion: PickOne
*OrderDependency: 50 AnySetup *PageRegion
*DefaultPageRegion: A4
*PageRegion A4: "
2 dict dup /PageSize [595.20 841.80] put dup /ImagingBBox null put setpagedevice"
*End
*PageRegion B5: " 2 dict dup /PageSize [515.76 728.40] put dup /ImagingBBox null put setpagedevice" *End *PageRegion Letter/レター: "
2 dict dup /PageSize [612.00 792.00] put dup /ImagingBBox null put setpagedevice"
*End
*PageRegion A4Extra/A4ノビ: "
2 dict dup /PageSize [634.92 1006.20] put dup /ImagingBBox null put setpagedevice"
*End
*PageRegion PostCard/はがき: "
2 dict dup /PageSize [283.44 419.52] put dup /ImagingBBox null put setpagedevice"
*End
*PageRegion VDPhotoCard/VDフォトはがき: "
2 dict dup /PageSize [283.44 453.60] put dup /ImagingBBox null put setpagedevice"
*End
*CloseUI: *PageRegion *% The following entries provide information about specific paper keywords. *DefaultImageableArea: A4
*ImageableArea A4: "9.60 42.60 585.60 807.72"
*ImageableArea B5: "9.60 42.60 506.16 694.32"
*ImageableArea Letter/レター: "9.60 42.60 602.40 757.92"
*ImageableArea A4Extra/A4ノビ: "9.60 42.60 625.32 972.12"
*ImageableArea PostCard/はがき: "9.60 41.16 273.84 411.00"
*ImageableArea VDPhotoCard/VDフォトはがき: "9.6 42.6 273.84 445.08"
*?ImageableArea: "
save
/cvp {( ) cvs print ( ) print } bind def
/upperright {10000 mul floor 10000 div} bind def
/lowerleft {10000 mul ceiling 10000 div} bind def
newpath clippath pathbbox
4 -2 roll exch 2 {lowerleft cvp} repeat
exch 2 {upperright cvp} repeat flush
restore
"
*End

*% These provide the physical dimensions of the paper (by keyword)
*DefaultPaperDimension: A4
*PaperDimension A4: "595.20 841.80"
*PaperDimension B5: "515.76 728.40"
*PaperDimension Letter/レター: "612.00 792.00"
*PaperDimension A4Extra/A4ノビ: "634.92 1006.20"
*PaperDimension PostCard/はがき: "283.44 419.52"
*PaperDimension VDPhotoCard/VDフォトはがき: "283.44 453.60"

*% Custom Page Sizes===================
*CustomPageSize True: "
4 dict begin
3 1 roll
2 array astore /PageOffset exch def
2 mod 0 eq {exch} if
2 array astore /PageSize exch def
/ImagingBBox null def
currentdict end setpagedevice"
*End
*ParamCustomPageSize Width: 1 points 277.92 1683.72
*ParamCustomPageSize Height: 2 points 277.92 1683.72
*ParamCustomPageSize WidthOffset: 3 points 0 0
*ParamCustomPageSize HeightOffset: 4 points 0 0
*ParamCustomPageSize Orientation: 5 int 0 3
*MaxMediaWidth: "634.92"
*MaxMediaHeight: "1683.72"
*LeadingEdge Short: ""
*LeadingEdge Long: ""
*DefaultLeadingEdge: Short
*HWMargins: 9.60 42.60 9.60 34.08

*RequiresPageRegion All: True

*% End of PPD file for MDPusr MD-5500P

+++ この上まで +++

※ PPDファイルの内容は、「*PPD-Adobe: "4.3"」 から 「*% End of PPD file for MDPusr MD-5500P」 までになります。

で、簡単な説明は次回です・・・

2008/05/13

マイクロドライプリンタのPSプリンタ化 〜 PPDファイル作成 (1)

PSプリンタ用のPPDファイルは、プリンタの用紙サイズ、印字可能領域、出力解像度、出力線数、プリンタやソフトRIP搭載フォント等様々な情報が記述されていて、この情報をもとにして専用RIPシステム内蔵のプリンタドライバが稼働し、PSプリンタから相当の出力がなされることになります。
しかし、ここで考えるシステムでは、マイクロドライプリンタを駆動するためのドライバとしてWindows OS 用に準備されたALPS製の(GDI)プリンタドライバを用いることになります。このドライバをWindowsアプリケーションから通常使用すると・・・ドライバ内の「基本設定」タグの「ドキュメント設定」、「用紙の種類」、「印刷モード」指定時に出力解像度(600dpi,1200dpi,2400dpi)、線数(85lpi,145lpi,160lpi,190lpi)が自動的に決定されたり、印字用紙サイズ等このドライバ内で決定される(ユーザーが直接的に決定する)・・・ということが判ります。
つまり、ここでのPSプリンタ化システムでは、Windows用ドライバを使う限り、PPDファイル内に用紙の種類、出力解像度、線数等の( 通常のPSプリンタ用PPDファイルに見られる)記述は不要(在っても無視されるので害はないが、すっきりしない)であり、最低限必要な情報だけあればよいということになります。用紙サイズや印字可能領域等はデータ作成用のアプリケーション(ここでは Adobe Illustrator)のために必要です。

四の五の言った後で、MD-5500P用の簡易PPDファイルを示して少し解説しておきます。

2008/05/01

マイクロドライプリンタのPSプリンタ化 (概要)

一般に、PSプリンタにおける印刷までの流れは、以下のようになります。

(A) プリントクライアント(Illustrator等でPSファイル作成)
 ---(LAN接続)--->
(B) プリントサーバ(RIP起動)
 ---(パラレル、USB、LAN、SCSI接続)--->
(C) プリンタ
 ---> 印字

したがって、PSプリンタ化では、上記 (A)と(B) を構築することになります。 ここで、それぞれに必要なソフトは下のようになります(OS以外はWeb上でダウンロード可)。

プリントクライアント:
 OS・・・Windows 98SE/2000、Mac OS X 10.4.11
 その他・・・マイクロドライプリンタ用PPDファイル

プリントサーバー:
 OS・・・Windows 98SE/2000
 その他・・・Adobe PSプリンタドライバ、マイクロドライプリンタ用PPDファイル、日本語Ghostscript、RedMon、Window用マイクロドライプリンタドライバ

(C) は勿論、マイクロドライプリンタ(検証はMD-5500PとMD-2000J)です。

ーーー>続く