2

如此罕见的事情正在发生。

在我的 rdlc 报告中,我将一些文本框设置为在 MVC 4 项目中显示为 PDF,如果我在 localhost 模式下运行它,它的效果非常好。

但是,如果我部署了解决方案,则会引发以下错误。

参数无效。[ArgumentException: 参数无效。] System.Drawing.Graphics.GetHdc() +1144409
Microsoft.ReportingServices.Rendering.RichText.LineBreaker.Flow(TextBox textBox, Graphics g, FontCache fontCache, FlowContext flowContext, Boolean keepLines, Single& height) +57
Microsoft.ReportingServices.Rendering.RichText.TextBox.MeasureFullHeight(TextBox textBox, Graphics g, FontCache fontCache, FlowContext flowContext, Single& contentHeight) +500
Microsoft.ReportingServices.Rendering.HPBProcessing.TextBox.DetermineVerticalSize(PageContext pageContext, Double topInParentSystem, Double bottomInParentSystem, ....

[LocalProcessingException: 本地报表处理过程中发生错误。]
Microsoft.Reporting.WebForms.LocalReport.InternalRender(String format, Boolean allowInternalRenderers, String deviceInfo, PageCountMode pageCountMode, CreateAndRegisterStream createStreamCallback, Warning[]& warnings) +338
Microsoft.Reporting.WebForms .LocalReport.InternalRender(字符串格式,布尔allowInternalRenderers,字符串设备信息,PageCountMode ...

在此处输入图像描述

注意:我注意到如果删除我的 rdlc 中的那些文本框(我的意思是删除所有内容),生成一个空白 PDF。所以,我意识到文本框是个麻烦,但我不知道为什么只有当我部署时。

我错过了什么?

我正在使用的代码是下一个:

    public ActionResult SampleReport()
    {
        LocalReport localReport = new LocalReport();
        localReport.ReportPath = Server.MapPath("~/Reports/Report1.rdlc");

        string reportType = "PDF";
        string mimeType;
        string encoding;
        string fileNameExtension;

        //The DeviceInfo settings should be changed based on the reportType
        //http://msdn2.microsoft.com/en-us/library/ms155397.aspx
        string deviceInfo =
        "<DeviceInfo>" +
        "  <OutputFormat>PDF</OutputFormat>" +
        "  <PageWidth>8.5in</PageWidth>" +
        "  <PageHeight>11in</PageHeight>" +
        "  <MarginTop>0.5in</MarginTop>" +
        "  <MarginLeft>1in</MarginLeft>" +
        "  <MarginRight>1in</MarginRight>" +
        "  <MarginBottom>0.5in</MarginBottom>" +
        "</DeviceInfo>";

        Warning[] warnings;
        string[] streams;
        byte[] renderedBytes;

        //Render the report
        renderedBytes = localReport.Render(
            reportType,
            deviceInfo,
            out mimeType,
            out encoding,
            out fileNameExtension,
            out streams,
            out warnings);
        //Response.AddHeader("content-disposition", "attachment; filename=NorthWindCustomers." + fileNameExtension);
        return File(renderedBytes, mimeType);
    }

更新: 当我开始研究如何使用 Report Services 创建 PDF 时,我只遵循以下指南:

最后一个是因为,我必须将其中三个作为引用库包括在内Microsoft.ReportViewer.CommonMicrosoft.ReportViewer.WebForms并且Microsoft.ReportViewer.ProcessingObjectModel因为,当我部署我的解决方案时不计入这些库,所以我手动添加。

就是这样!

4

0 回答 0