- PR -

printdocumentからimageを作る方法

投稿者投稿内容
rvmx
大ベテラン
会議室デビュー日: 2002/09/26
投稿数: 184
お住まい・勤務地: 愛媛県
投稿日時: 2006-01-21 15:05
今日は、PreviewPrintControllerを継承したFile出力Controllerを作り
NSSPRNXAで操作後PrintDocument1のPrintControllerとして設定
これでいけませんか?

Public Class Print2File : Inherits PreviewPrintController
Private met As Metafile
Private ofile As String = ""
Sub New(ByVal file As String)
ofile = file
End Sub
Public Overrides Sub OnEndPage(ByVal doc As PrintDocument, ByVal e As PrintPageEventArgs)
MyBase.OnEndPage(doc, e)
Dim pageinfos() As PreviewPageInfo = GetPreviewPageInfo()
Dim pageinfo As PreviewPageInfo = pageinfos(pageinfos.Length - 1)
Dim img As Image = pageinfo.Image
met = CType(img, Metafile)
Dim bm As Bitmap = New Bitmap(e.PageBounds.Width, e.PageBounds.Height)
Dim g As Graphics = Graphics.FromImage(bm)
g.Clear(Color.White)
Dim cb As Graphics.EnumerateMetafileProc = New Graphics.EnumerateMetafileProc(AddressOf PlayRecord)
g.EnumerateMetafile(met, New Point(0, 0), cb)
bm.Save(ofile, System.Drawing.Imaging.ImageFormat.Jpeg)
End Sub
Protected Function PlayRecord(ByVal recordType As EmfPlusRecordType, ByVal flags As Integer, ByVal dataSize As Integer, ByVal data As IntPtr, ByVal callbackData As PlayRecordCallback) As Boolean
Dim dataArray() As Byte = Nothing
If Not data.Equals(IntPtr.Zero) Then
ReDim dataArray(dataSize)
Marshal.Copy(data, dataArray, 0, dataSize)
End If
met.PlayRecord(recordType, flags, dataSize, dataArray)
Return True
End Function

End Class

印刷処理の最後に追加

Dim pc As PrintController = New Print2File(出力ファイル名(.jpg))
PrintDocument1.PrintController = New PrintControllerWithStatusDialog(pc, "Exporting")
PrintDocument1.Print()

はま
会議室デビュー日: 2006/01/18
投稿数: 14
投稿日時: 2006-01-24 17:20
流行のタミフルを服用していました。
返信が遅くなってすみません。

引用:

rvmxさんの書き込み (2006-01-21 15:05) より:
今日は、PreviewPrintControllerを継承したFile出力Controllerを作り
NSSPRNXAで操作後PrintDocument1のPrintControllerとして設定
これでいけませんか?



試してみました。
バッチリ動いています。
でも知らない関数がちらほら・・・
もっと精進します。

書き込みしていただいた皆さん、ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)