找回密码
 立即注册

QQ登录

只需一步,快速开始

lisa·38757578

注册会员

5

主题

18

帖子

73

积分

注册会员

积分
73
lisa·38757578
注册会员   /  发表于:2019-2-21 17:11  /   查看:2890  /  回复:1
以下是一部分代码。现在问题出在运行完之后无法打印出来,不知道是什么原因。请问有人知道吗?打印机有反应但是反应之后就打印不出来。。。。

印刷
                    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

1 个回复

倒序浏览
JeffryLI
葡萄城公司职员   /  发表于:2019-2-21 17:47:16
沙发
您好,这样看不出您的问提,是否可以给我们一个可以调试的demo。
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部