ReportViewer.LocalReport.Render( "PDF" )



我正在使用 WinForms 的报表查看器。我遇到的问题是:我有一个表单,其中包含一个表单,该表单用于查看工作正常的本地报表,但是当我尝试将同一报表呈现为 PDF 时,它被切断了,但在报表查看器中,同一报表在一页上呈现报表。当我渲染为 PDF 时,它会将其切断,并且被截断的报表部分呈现在第二页上。换句话说,同一报告的一部分在第 1 页上,而下半部分在 PDF 的第 2 页?

法典:

Private Function GetPDfReport() As String
    Dim parameters = Me.GetReportParms()
    Dim query = Me.GetReportQuery()
    Dim rView As Microsoft.Reporting.WinForms.ReportViewer = New Microsoft.Reporting.WinForms.ReportViewer
    rView.Dock = DockStyle.Fill
    rView.SetDisplayMode(DisplayMode.PrintLayout)
    Dim pnl As New Panel()
    pnl.Name = "pnlMain"
    pnl.Location = New System.Drawing.Point(0, 25)
    pnl.Size = New System.Drawing.Size(734, 478)
    pnl.Controls.Add(rView)
    Dim dbReader As New dbReader()
    Dim ds As DataSet = dbReader.DataSet(query)
    Dim rds As Microsoft.Reporting.WinForms.ReportDataSource = New Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", ds.Tables(0))
    rView.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local
    rView.LocalReport.DataSources.Add(rds)
    rView.LocalReport.ReportEmbeddedResource = "EasyDose.rptIncident.rdlc"
    If Not IsNothing(parameters) Then
        Dim Bound0 As Integer = parameters.GetUpperBound(0)
        Dim Bound1 As Integer = parameters.GetUpperBound(1)
        For index = 0 To Bound0
            Dim rParameter As New ReportParameter(parameters(index, 0), parameters(index, 1))
            rView.LocalReport.SetParameters(rParameter)
        Next
    End If
    Dim ps As PageSettings = rView.GetPageSettings
    ps.Margins.Top = 0             ' 10mm approx
    ps.Margins.Right = 0
    ps.Margins.Bottom = 0
    ps.Margins.Left = 0
    ps.Landscape = False
    'ps.PaperSize = New PaperSize("LetterExtra", (9.275 * 100), (12 * 100)) ' Letter paper (8.5 in. by 11 in.) ' Letter extra paper (9.275 in. by 12 in.)
    ps.PaperSize = New PaperSize("A4", (8.27 * 100), (11.69 * 100))
    rView.RefreshReport()
    Dim exePath As String = System.IO.Path.GetDirectoryName(Application.ExecutablePath)
    Dim dir As New DirectoryInfo(System.IO.Path.Combine(exePath, "tmpDir"))
    Dim file As New FileInfo(System.IO.Path.Combine( _
        dir.FullName, String.Format("Patient_Details_{0:yyyyMMdd_hhmmss}.pdf", DateTime.Now)))
    If Not dir.Exists Then
        dir.Create()
    End If
    Dim bytes As Byte() = rView.LocalReport.Render("PDF")
    Using fs As New System.IO.FileStream(file.FullName, System.IO.FileMode.Create)
        fs.Write(bytes, 0, bytes.Length)
        fs.Close()
    End Using
    Return file.FullName
End Function

您是否使用激活的"打印布局"选项在嵌入式报表查看器中看到本地报表?这应该显示与打印结果完全相同的输出。

如果您在PDF中遇到问题可能是由报告本身的设计引起的。检查字体,页面大小和方向,边距,分页符。

uisng System.IO;

byte[] rep = reportViewer1.LocalReport.Render("pdf", deviceInfo: ");如果出现证书警告,只需忽略并重新运行

File.WriteAllBytes(filepath+filename+".pdf",rep);

最新更新