使用PDFSharp将多个.rdlc报告渲染为单个PDF

本文关键字:单个 PDF 报告 rdlc PDFSharp 使用 | 更新日期: 2023-09-27 18:28:35

我正在运行多个报告,并将它们组合成一个PDF文件。对于每个报告,我将数据源、参数和报告路径传递给以下对象。结果是一个具有正确页数的PDF文件,但所有页面都是空白的。我错过了什么?

LocalReport report = null;
PdfDocument pdfDoc = new PdfDocument();
private void ProcessReport(
    ReportDataSource reportDS, 
    ReportParameter[] reportParms, 
    string reportPath)
{
    string format = "PDF";
    string deviceInfo = null;
    string encoding = String.Empty;
    string mimeType = String.Empty;
    string extension = String.Empty;
    Warning[] warnings = null;
    string[] streamIDs = null;
    report = new LocalReport();
    report.EnableExternalImages = true;
    report.ReportPath = reportPath;
    if (reportParms != null)
        report.SetParameters(reportParms);
    if (reportDS != null)
        report.DataSources.Add(reportDS);
    Byte[] pdfArray = report.Render(
        format, 
        deviceInfo, 
        out mimeType, 
        out encoding,
        out extension, 
        out streamIDs, 
        out warnings);
    //Stream s = new MemoryStream(pdfArray);
    MemoryStream ms = new MemoryStream(pdfArray);
    PdfDocument tempPDFDoc = PdfReader.Open(ms, PdfDocumentOpenMode.Import);
    for (int i = 0; i < tempPDFDoc.PageCount; i++)
    {
        PdfPage page = tempPDFDoc.Pages[i];
        pdfDoc.AddPage(page);
    }
}

使用PDFSharp将多个.rdlc报告渲染为单个PDF

请尝试使用本线程中描述的不同设置生成报告:http://forum.pdfsharp.net/viewtopic.php?p=1613#p1613

如果您向我们提供了一些不起作用的文件,我们可以尝试在PDFsharp中修复此问题。

您需要更改字符串deviceInfo=null;至deviceInfo="<DeviceInfo><HumanReadablePDF>True</HumanReadablePDF></DeviceInfo>";