ラベルを印刷するプログラムを作成していますが、ゼロックスのプリンタに合わせて作成していたのですが、他のプリンタ(ゼロックス以外)で出力すると画像やラインがすこしずれて印刷されてしまいます。
'花DATA
STRMYFILE = Dir("" & App.Path & "\PICDATA\hana.bmp")
If STRMYFILE <> "" Then
MYSTR = App.Path + "\PICDATA\" + STRMYFILE
pictblt 3.5, 20, 34, 41, MYSTR, sift_x
End If
Sub pictblt(Left As Single, Top As Single, Width As Single, Height As Single, PASS As String, sift_x As Integer)
On Error GoTo ERR
Dim R_NAME As String
Dim X1 As Single, X2 As Single, Y1 As Single, Y2 As Single
Set PICWK.Picture = LoadPicture(PASS)
'1
X1 = Left + sift_x
Y1 = Top
X2 = Width
Y2 = Height
Printer.PaintPicture PICWK.Picture, X1, Y1, X2, Y2
Exit Sub
ERR:
End Sub
こんな感じのソースになっています。
開発環境
Windows2000
Visual Basic 6.0SP6
だから何が聞きたいんですか?
画像は印刷されているわけだし
あるプリンタに合わせて作って
そのプリンタできれいに出ているなら問題ないように思えるのですが・・・
説明足らずで失礼しました。
指摘の通りゼロックスでちゃんとでればいいのですが、他プリンタでも出せるように、と変更がありまして・・・
もちろん若干のずれは覚悟してたのですが、画像も1mmほど小さく印刷されてしまいます
文字はテキスト出力なので規定の位置に印刷されています。
ちなみに印刷方法は、Printerコマンドを使用しています。
同じような現象があってどう対処したのかあれば教えていただけませんか
プリンタ個体差は出ます
これはマイクロソフト製品でも出るはずです
また、同一プリンタでもドライババージョンによっても変わったりもします
(大きく変わることはまれですが・・・)
破線も薄い、もしくは細い実線で印字されたり
各々のプリンタにチューンした設定が必要になると思います
話をつける時に
「基本はこのゼロックスで印字してください、他のプリンタは使用は可能ですが
、メーカーや型毎に個体差が発生するため、若干ズレが生じる可能性があります」
と言っておかないと後々全てのプリンタに対応する羽目にもなりかねないですね
要するに・・・
「仕様です!」というわけですが・・・
もし、この辺対応できる人がいたら私も知りたいです
何が何に対してずれるのでしょうか?
位置の細かい設定が出来るように、プログラムして
一番最初にクライアントにチューニングしてもらい
プリンター毎にレジストリーかINIファイルにでも書き込むようにしたら
いかがでしょうか。
細かな設定はVBでは無理でしょうが、大まかな設定なら
出来ると思いますが。
>文字はテキスト出力なので規定の位置に印刷されています。
これだとまだ脈は有るかも。
私は規定の位置に文字が来なくて散々苦労しましたが。
プリンターやドライバにより寸法が変わってしまうとき
プリンターオブジェクトの
「Printer.TwipsPerPixelX」を使用して調整してますが
だめでしょうか。
PaintPictureのX1,X2,Y1,Y2引数の値を算出してます。
ツイート | ![]() |