我使用Telerik在C#中将一些简单文本渲染为PDF:
using Telerik.Reporting;
using Telerik.Reporting.Processing
...
ReportProcessor reportProcessor = new ReportProcessor();
InstanceReportSource instanceReportSource = new InstanceReportSource();
instanceReportSource.ReportDocument = new MyReport();
RenderingResult result = reportProcessor.RenderReport("PDF", instanceReportSource, null);
这在当地很有效。
我已经设置了一个Azure应用服务,当我运行reportProcessor.RenderReport()时出现以下错误:
An error has occurred while rendering the report: System.ArgumentException: Parameter is not valid.
at System.Drawing.Graphics.GetHdc()
at Telerik.Reporting.Pdf.PdfContext..ctor()
at Telerik.Reporting.Pdf.PdfDocument..ctor()
at Telerik.Reporting.ImageRendering.DocumentPdf.FindOrCreateDocument()
at Telerik.Reporting.ImageRendering.DocumentPdf..ctor(PdfRenderingContext context, IMeasureContext measureContext)
at Telerik.Reporting.ImageRendering.PdfReport.CreateDocument(IDictionary renderingInfo, IDictionary deviceInfo, CreateStream createStreamCallback, PageSettings pageSettings)
at Telerik.Reporting.BaseRendering.DocumentRenderingExtensionBase.CreateWriter(IDictionary renderingContext, IDictionary deviceInfo, CreateStream createStreamCallback, PageSettings pageSettings)
at Telerik.Reporting.ImageRendering.PdfReport.CreateWriter(IDictionary renderingContext, IDictionary deviceInfo, CreateStream createStreamCallback, PageSettings pageSettings)
at Telerik.Reporting.BaseRendering.RenderingExtensionBase.Render(Report report, Hashtable renderingContext, Hashtable deviceInfo, CreateStream createStreamCallback, EvaluateHeaderFooterExpressions evalHeaderFooterCallback)
我觉得这可能是我配置Azure应用服务的方式的问题。这是我的配置: - 地点:美国西部(我们位于犹他州) - 具有1 GB存储空间并由2 App Services使用的“F1免费”定价层(也是美国西部)
我的Azure应用服务配置是否遗漏了什么?
答案 0 :(得分:7)
Azure的免费定价层目前不支持GDI +,Telerik Reporting将其用于呈现为PDF。您的Azure应用服务必须使用基本或标准模式,而不是免费或共享模式。 Microsoft在2014年部署了此功能,在Telerik论坛中提到:
http://www.telerik.com/forums/out-of-memory-in-azure-websites#yDA-ydAnBEOF0qKbHljCvw