DELPHI7でcanvasを使用してドットプリンタ(EPSON VP6000)に出力する際に、プリンタ側で設定している余白(5.5mm)ではなく、それよりも多くの余白を取って印刷されてしまいます。(OS win2000とwinxp home)
プリンタはネットワーク上にあり、ローカル(OS 98SE)で印刷するとプリンタ側の設定の余白で印刷されます。
用紙設定はサーバーのプロパティから新規の用紙を作成し、余白は0で設定しています。98SEではユーザー設定でこちらも余白を0にしております。
何が原因なのでしょうか。
解決方法ではないですが、印刷の情報は以下のようなものから
取得できますので、調べてみてはいかかでしょうか?
//紙の実寸(単位:ピクセル)
GetDeviceCaps(Printer.Handle, PHYSICALWIDTH);
GetDeviceCaps(Printer.Handle, PHYSICALHEIGHT);
//印刷可能領域(単位:ピクセル)
GetDeviceCaps(Printer.Handle, HORZRES);
GetDeviceCaps(Printer.Handle, VERTRES);
//マージン(単位:ピクセル)
GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
deldelさん、レスありがとうございます。
今確認できる環境にないので明日にでも確認してみます。
質問を読んでいて,印刷可能領域の関係で印刷できない部分があるなら
ともかく,余白が? と思っていたのですが,deldelさんのレスで,なるほど
と思いました.
多分,プリンタによって,余白(は自分が設定しているとは思いますが)だけ
でなく,印刷の位置なども違っているのではないでしょうか.
とすると,プリンタの解像度の違いによるのが原因かも知れませんね.
(開発の時にテストしたプリンタでは期待通り?)
Mr.XRAYさん、おはようございます。レスありがとうございました。
いま、試してみたことをお伝えします。
win2000(ネットワーク経由)でサーバーのプロパティで用紙の設定をしたときに、用紙の高さを4.5inch、
余白を上を1インチ、下を0インチにしました。
printer.pageheightの値を見ると630ピクセルとなります。(1インチあたり180ピクセル)
次に余白を上を0インチ、下を1インチのするとprinter.pageheightの値が566ピクセルになります。
この差の64ピクセルなのですがインチに直すと0.355インチ(約9mm)で、ちょうど余分に取られている余白と同じ幅になるのです。
ローカルでつなげているPCから(98SE)でprinter.pageheightの値を見ると、余白を上下ともに0にすると810ピクセル(4.5インチ)になります。
ちなみにプリンタドライバはエプソンのサイトになかったのでos標準のものを使っています。
64ピクセルはどこへ消えたのでしょうか。
deldelさん、Mr.XRAY、解決いたしました。
原因はプリンタドライバでした。
epsonのサイトでESC/Pのドライバを見つけてそれで印刷したら印刷できました。
ありがとうございました。
ツイート | ![]() |