PrintFormで線画が印刷されない

解決


garakuta  2007-06-13 01:37:36  No: 136707

非常に限定的な話なのですが、
      VB6.0
      FormのAutoRedraw=True
      Formにラインメソッドで線を描く(グラフなど)
      PrintFormで画面を印刷
      FormのBorderStyle=1.固定  or  3.固定ダイアログ  or  
                                    4.固定ツールウィンドウ
にしたとき、あるプリンタでのみ、線画だけが印刷されません。
文字などは印刷されます。(AutoRedrawをFalsにしたときの現象)

  FormのBorderStyleが鍵のようで、上記以外、つまりユーザーが
勝手に大きさを変えられるモードでは、線画も印刷されます。

  VB6,0では、Borderstyleによって、プリンタに与えられる情報が変わる
ような仕様になっているのでしょうか?

  実はプリンタメーカーさんに問い合わせたら、降参されたので、
メーカー名や機種名は伏せさせていただきました。

  プリンタに与えられる仕様だけでもわかるならと思い、
質問いたしました。


魔界の仮面弁士  2007-06-13 19:25:49  No: 136708

描画系メソッドがうまく表示されないという件は、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 を、実プリンタに印刷した場合、線画はどうなりますか?


garakuta  2007-06-13 23:41:29  No: 136709

魔界の仮面弁士様、いつも大変有益なご回答をいただきまして
ありがとうございます。

  実は、この問題、国内最大手数社のプリンタでは起きません。
海外最大手の、ある特定のIJプリンタでのみ起きました。
このプリンタを使わないと、現象の再現はできないのでは
ないかと思います。

  その会社に問い合わせましたら、対応不能ということでした。
(というより、マイナーな問題なのでやってられない風でした。)

  今まで、PrintFormを使うと画質は悪くても楽なので使って
いました。  魔界の仮面弁士さまもおっしゃるように、printerで、
印刷すれば回避できる問題なので、今後こちらに移行しようと思います。

  PDF云々の確認は、申し訳ありませんが、私の力量では
力及ばずでした。

  これからも、どうかよろしくお願い申し上げます。


魔界の仮面弁士  2007-06-14 01:41:59  No: 136710

プリンタのプロパティの[詳細設定]タブにある、
  『プリンタに直接印刷データを送る』『プリント プロセッサ』
の設定の組み合わせを変更した場合、結果は変わりますか?

# メーカーが匙を投げた以上、解決できる可能性は低そうですが…。

> 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:]ポートにしておき、
そのファイルをプリンタメーカに送れば、違いがわかるのかな…。


garakuta  2007-06-14 23:16:54  No: 136711

魔界の仮面弁士様、何度も懇切丁寧なご回答をいただきまして
大変ありがとうございます。

  pdfは、試行錯誤の結果、問題の印刷をPDFファイルで出力
できました。  パソコンのディスプレイに線画がくっきり出て、
VB直接では印刷されない線画が当該のプリンタで印刷できました。

  プリンタの詳細設定で、
      ・プリンタに直接データを送る
      ・プリントプロセッサ(MadPrint,WinPrint)と規定のデータ型
      (RAW,NTEMF1.006-1.008,TEX)の各種組み合わせをいろいろ変える
を試みましたが、どれでも線画の印刷は不可能でした。

  あくまで推定ですが、今回問題になった条件でのVBの印刷時に、
線画の情報はプリンタには送られていて、PDFを含む国内大手の
プリンタは線画を印刷できるのに、なぜか問題のおきた海外大手製の
プリンタは、線画の情報をキャッチできないか、何か別の理由で
線画を印刷しない。(BorderStyleが固定時)

  今回の問題は、非常に重箱の隅のまたさらに隅をつつくような
問題で、しかも、一歩先はメーカーの企業秘密の中の話なので
すっきり解決するとは思っていませんでした。

  しかし、魔界の仮面弁士様からの様々な非常に有益なご助言により、
いろいろ掘り下げた確認ができたので、大変勉強になりました。

  printerによる印刷の検討に踏ん切りをつけていただいたことに
感謝しつつ、区切りをつける意味で解決とさせていただきたいと
思います。

  魔界の仮面弁士様、いつも本当にありがとうございます。
どうかこれからも、よろしくお願いいたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加