以下是一部分代码。现在问题出在运行完之后无法打印出来,不知道是什么原因。请问有人知道吗?打印机有反应但是反应之后就打印不出来。。。。
印刷
Using rp As New ReportPrint(Me.m_bilMessage.MessageTitle)
rp.Print(Me.C1FlexReport1)
End Using
Public Function Print(ByVal C1FlexReport1 As FlexReport.C1FlexReport) As Boolean
Try
' 印刷
' プリントドキュメントを生成します
Dim pDoc As PrintDocument = ConvertToPrintDocument(C1FlexReport1)
Try
' 設定があれば取得します
Dim rptSetting As New ReportSetting
Dim prtSetting As PrinterSettings = rptSetting.GePrintertSetting(C1FlexReport1.DocumentName)
If prtSetting IsNot Nothing Then
' 設定ファイルのプリンタのインストール確認
' なければ、通常使うプリンタでプレビューする
Dim result As Boolean = False
For Each pName As String In System.Drawing.Printing.PrinterSettings.InstalledPrinters
If prtSetting.PrinterName.Equals(pName) Then
result = True
Exit For
End If
Next
If result.Equals(True) Then
pDoc.PrinterSettings = prtSetting
Dim pagSetting As PageSettings = rptSetting.GePageSetting(C1FlexReport1.DocumentName)
If pagSetting IsNot Nothing Then
pDoc.DefaultPageSettings = pagSetting
End If
Else
' 通常使うプリンタを設定
Dim pd As New System.Drawing.Printing.PrintDocument
prtSetting = pd.PrinterSettings
pDoc.PrinterSettings = prtSetting
End If
End If
Catch ivo As System.InvalidOperationException
m_bilMessage.Show("I_CanNot", "設定が保存できないプリンタの種類のため、復元")
Return False
End Try
' 印刷
pDoc.Print()
Return True
Catch ex As Exception
Throw
End Try
End Function
''' <summary>
''' パラメータのFlexReportを受け取り、ビューアのデータソースに設定後、ビューアからPrintDocumentを生成する。
''' </summary>
''' <param name="C1FlexReport1">FlexReportのインスタンス</param>
''' <returns></returns>
Public Function ConvertToPrintDocument(ByVal C1FlexReport1 As FlexReport.C1FlexReport) As PrintDocument
Try
Dim pd As PrintDocument = New PrintDocument
Dim fv As C1FlexViewer = New C1FlexViewer
Dim left As Double = 0
If Double.TryParse(C1FlexReport1.Layout.MarginLeft.ToString, left) = True Then
left = left / C1.Win.C1Document.Unit.CmPerInchF
End If
Dim right As Double = 0
If Double.TryParse(C1FlexReport1.Layout.MarginRight.ToString, right) = True Then
right = right / C1.Win.C1Document.Unit.CmPerInchF
End If
Dim top As Double = 0
If Double.TryParse(C1FlexReport1.Layout.MarginTop.ToString, top) = True Then
top = top / C1.Win.C1Document.Unit.CmPerInchF
End If
Dim bottom As Double = 0
If Double.TryParse(C1FlexReport1.Layout.MarginBottom.ToString, bottom) = True Then
bottom = bottom / C1.Win.C1Document.Unit.CmPerInchF
End If
fv.DocumentSource = C1FlexReport1
pd.DefaultPageSettings.PaperSize = fv.PageSettings.PaperSize
pd.DefaultPageSettings.PaperSource = fv.PageSettings.PaperSource
pd.DefaultPageSettings.Landscape = fv.PageSettings.Landscape
pd.DefaultPageSettings.Margins.Left = CInt(left)
pd.DefaultPageSettings.Margins.Right = CInt(right)
pd.DefaultPageSettings.Margins.Top = CInt(top)
pd.DefaultPageSettings.Margins.Bottom = CInt(bottom)
Return pd
Catch ex As Exception
Throw ex
End Try
End Function
|
|