非常に限定的な話なのですが、
VB6.0
FormのAutoRedraw=True
Formにラインメソッドで線を描く(グラフなど)
PrintFormで画面を印刷
FormのBorderStyle=1.固定 or 3.固定ダイアログ or
4.固定ツールウィンドウ
にしたとき、あるプリンタでのみ、線画だけが印刷されません。
文字などは印刷されます。(AutoRedrawをFalsにしたときの現象)
FormのBorderStyleが鍵のようで、上記以外、つまりユーザーが
勝手に大きさを変えられるモードでは、線画も印刷されます。
VB6,0では、Borderstyleによって、プリンタに与えられる情報が変わる
ような仕様になっているのでしょうか?
実はプリンタメーカーさんに問い合わせたら、降参されたので、
メーカー名や機種名は伏せさせていただきました。
プリンタに与えられる仕様だけでもわかるならと思い、
質問いたしました。
描画系メソッドがうまく表示されないという件は、VB4 時代に1度経験して、
その時は、プリンタドライバのバージョンダウンで回避しました。
# △を書いたのに、匚のような図形になってしまうという妙な状態。
## Line メソッドではなく、描画系のカスタムコンポーネントだったけど。
でも、私の時も原因は分からなかったんですよね…。
回答しておいて何ですが、お役に立てそうには無いです。すみません。
> Formにラインメソッドで線を描く(グラフなど)
> PrintFormで画面を印刷
この件に関して言えば、Form に描いてから PrintForm するのではなく、
Printer に直接描くようにすれば済む話のような気もします。
PrintForm 法だと、細かい調整が行えませんし。
> あるプリンタでのみ、線画だけが印刷されません。
手元の仮想プリンタ(Microsoft Office Document Image Writer 等)数台で、こんなサンプルで実験しましたが、再現しませんでした。
Private Sub Form_Click()
AutoRedraw = True
Cls
Print BorderStyle
Line (0, 0)-(600, 600)
Line (0, 600)-(600, 0)
PrintForm
End Sub
確認なのですが、その印刷データを、フリーのPDFプリンタなどに印刷し、
その PDF を、実プリンタに印刷した場合、線画はどうなりますか?
魔界の仮面弁士様、いつも大変有益なご回答をいただきまして
ありがとうございます。
実は、この問題、国内最大手数社のプリンタでは起きません。
海外最大手の、ある特定のIJプリンタでのみ起きました。
このプリンタを使わないと、現象の再現はできないのでは
ないかと思います。
その会社に問い合わせましたら、対応不能ということでした。
(というより、マイナーな問題なのでやってられない風でした。)
今まで、PrintFormを使うと画質は悪くても楽なので使って
いました。 魔界の仮面弁士さまもおっしゃるように、printerで、
印刷すれば回避できる問題なので、今後こちらに移行しようと思います。
PDF云々の確認は、申し訳ありませんが、私の力量では
力及ばずでした。
これからも、どうかよろしくお願い申し上げます。
プリンタのプロパティの[詳細設定]タブにある、
『プリンタに直接印刷データを送る』『プリント プロセッサ』
の設定の組み合わせを変更した場合、結果は変わりますか?
# メーカーが匙を投げた以上、解決できる可能性は低そうですが…。
> printerで、印刷すれば回避できる問題なので、今後こちらに移行しようと思います。
それで回避できるのであれば、今回の質問自体はクローズしますか?
それとも、もう少し足掻いてみますか?
> PDF云々の確認は、
http://xelo.jp/xelopdf/xelopdf/index.html
http://www.forest.impress.co.jp/article/2004/03/26/primopdf.html
http://soft.s103.xrea.com/
https://www.iothe.co.jp/pdfyss/download.cgi/download.html
などの仮想プリンタを登録し、それを通常使うプリンタにして
PrintForm すると、PDF ファイルが出来上がります。
あとは、できあがった PDF を Adobe Reader で開いてみて、
そこから「ある特定のIJプリンタ」に対して印刷してみて、
結果が崩れるかどうかを確認する、ということです。
というのも、今回の件とは微妙に現象が異なるのですが、つい最近、
「ある VB.NET 対応帳票ツールから、特定機種のプリンタに出力したときにだけ、
半角文字が化けてしまう(漢字は正常に印字される)」という問題を経験しており、
その時には、『プリンタメーカが提供するドライバのかわりに、
Microsoft 製ドライバに変更する』もしくは『PDF 化してから印刷する』
という手順で回避できた、という経験則によるものです。
> プリンタに与えられる仕様だけでもわかるならと思い、
プリンタのプロパティで、出力先を [FILE:]ポートにしておき、
そのファイルをプリンタメーカに送れば、違いがわかるのかな…。
魔界の仮面弁士様、何度も懇切丁寧なご回答をいただきまして
大変ありがとうございます。
pdfは、試行錯誤の結果、問題の印刷をPDFファイルで出力
できました。 パソコンのディスプレイに線画がくっきり出て、
VB直接では印刷されない線画が当該のプリンタで印刷できました。
プリンタの詳細設定で、
・プリンタに直接データを送る
・プリントプロセッサ(MadPrint,WinPrint)と規定のデータ型
(RAW,NTEMF1.006-1.008,TEX)の各種組み合わせをいろいろ変える
を試みましたが、どれでも線画の印刷は不可能でした。
あくまで推定ですが、今回問題になった条件でのVBの印刷時に、
線画の情報はプリンタには送られていて、PDFを含む国内大手の
プリンタは線画を印刷できるのに、なぜか問題のおきた海外大手製の
プリンタは、線画の情報をキャッチできないか、何か別の理由で
線画を印刷しない。(BorderStyleが固定時)
今回の問題は、非常に重箱の隅のまたさらに隅をつつくような
問題で、しかも、一歩先はメーカーの企業秘密の中の話なので
すっきり解決するとは思っていませんでした。
しかし、魔界の仮面弁士様からの様々な非常に有益なご助言により、
いろいろ掘り下げた確認ができたので、大変勉強になりました。
printerによる印刷の検討に踏ん切りをつけていただいたことに
感謝しつつ、区切りをつける意味で解決とさせていただきたいと
思います。
魔界の仮面弁士様、いつも本当にありがとうございます。
どうかこれからも、よろしくお願いいたします。
ツイート | ![]() |