Win2000、VB6の環境で、コマンドボタンをクリックすると、tifファイルを印刷する処理を検討しています。tifファイルはWin2000に標準で搭載されているImaging for Windows で保存済みです。コマンドボタンクリックで印刷実行のみで編集の必要が無く、モニタに表示させる必要もありません。このような処理は可能でしょうか? ご存じの方、御教授願います。
環境が無いので未確認ですが、もしかしたら ShellExecute API を用いて、
Imaging for Windows に対して "print" 動作を指定できるかも知れません。
それが駄目ならば、GDI+ を使って印刷すれば、実現できると思います。
GdipCreateFromHDC API で、プリンタに対する Graphics ハンドルを得て、
GdipLoadImageFromFile API で TIF ファイルを Image ハンドルに読み込み、
GdipDrawImageRectI API で描画するといった感じで。
考えてみたら、画像を Picture オブジェクトに変換した方が、
取り扱いやすいかも知れませんね。
とりあえず、サンプルを書いてみました。
http://www.vb-user.net/junk/replySamples/2007.10.16.13.38/Module1.bas
使用方法:
Option Explicit
Private Sub Command1_Click()
'画面表示の場合
Set Image1.Picture = LoadPictureByGDIPlus("C:\sample.tiff")
End Sub
Private Sub Command2_Click()
'印刷の場合
Dim P As Picture
Set P = LoadPictureByGDIPlus("C:\sample.tiff")
Printer.PaintPicture P, 0, 0
Printer.EndDoc
End Sub
魔界の仮面弁士 様
早速のご回答有り難うございます。
2件目の回答 試してみました。
Command1_Clickではフォーム上に表示されました。
Command2_Clickは表示されずプリンターは起動しましたが
印刷されず白紙の排出となります。PaintPictureではtifファイルは
印刷出来ないのでしょうか?
やりたい事は明確になっているのですが、VBの知識が不充分で
いただいたサンプルの詳細な解読が出来てません。御教授願います。
> 印刷されず白紙の排出となります。
ふぅむ。当方では出力されるのですけれどね。(複数のプリンタで実験)
ちなみに、当方では手持ちの tiff ファイルが無かったので、google で
適当に検索して、下記の上から3つめ「4色刷り」の tif ファイルを使いました。
これが印刷できるかどうか、試してみてください。
http://www.lionsclubs.org/JA/content/resources_logos_art.shtml
# そちらで使っている画像が入手できれば、こちらでも試せるのですけれども。
> PaintPictureではtifファイルは印刷出来ないのでしょうか?
元ファイルは tif でも、Picture オブジェクトに渡す時点で、
既にビットマップ化してあるので、Image に表示できるのならば、
PaintPicture でも出力できると思います、多分。
念のため、PaintPicture の他の引数(位置やサイズ)を変更して
試してみてください。
kodakprv.exe /p ファイル
とかじゃなかったかしら?
関連付けを見れば分かるし、見なくてもshellexecuteでprintすればよいのでは?
> 環境が無いので未確認ですが、もしかしたら ShellExecute API を用いて、
> Imaging for Windows に対して "print" 動作を指定できるかも知れません。
Win2000 環境で実行したところ、上記案でいけました。
プリンタ指定などの細かい制御が不要なら、これで十分かな?
> kodakprv.exe /p ファイル
> とかじゃなかったかしら?
おぉ、ありますね。
そうすると、コマンドライン指定だとこうかな。
Public Sub PrintTiff(ByVal fileName As String)
Dim exePath As String
exePath = """C:\Program Files\Accessories\ImageVue\KodakPrv.exe"""
If InStr(1, fileName, " ") > 0 Then
If Not fileName Like """*""" Then
fileName = """" & fileName & """"
End If
End If
Shell exePath & " /p " & fileName, vbNormalFocus
End Sub
同環境でTIFFを扱ったことがありますが、
一番手っ取り早いのはやはりコマンドラインですね。
Kodak Image Edit Controlを使ってもできますけど:D
すみません、全然関係ないんですけど、
>"""C:\Program Files\Accessories\ImageVue\KodakPrv.exe"""
>fileName = """" & fileName & """"
など、""を複数記載するとどのような効果があるのですか?
Wiiさん
shinさんの質問スレッドですので、別に質問としてあげたほうがよいと思いますよ
ちなみに文字列の中に「"」を入れたいときは「""」とてあげると入れることが
できます。なので「a=""""」とするとaの内容は「"」という文字列になります。
「エスケープ文字」等のキーワードで調べてみるとわかるかと思います。
ツイート | ![]() |