【发布时间】:2020-07-02 06:31:14
【问题描述】:
我们使用 Telerik 报告来生成 HTML 和 PDF 报告。这次是容器版本,不知何故在生成 PDF 报告时,telerik 抛出错误,
System.NotSupportedException: Font Century Gothic 9 Regular is not supported.
at Telerik.Reporting.Pdf.Fonts.TrueType.FontReader.GetFontData(Font font, Boolean& isTTC)
at Telerik.Reporting.Pdf.Fonts.TrueType.TrueTypeDescriptor..ctor(Font gdiFont)
at Telerik.Reporting.Pdf.PdfFontTable.GetDescriptor(PdfFont font)
at Telerik.Reporting.Pdf.PdfFontDictionary..ctor(PdfDocument document, PdfFont drawingFont)
at Telerik.Reporting.Pdf.PdfFontType0Dictionary..ctor(PdfDocument document, PdfFont font)
at Telerik.Reporting.Pdf.PdfFontTable.GetFont(PdfFont font)
at Telerik.Reporting.Pdf.PdfPageDictionary.GetFontName(PdfFont font, PdfFontDictionary& fontDictionary)
at Telerik.Reporting.Pdf.Rendering.PdfRendererGraphicsState.Update(PdfFont font, Brush brush, Int32 renderMode)
at Telerik.Reporting.Pdf.Rendering.PdfRenderer.Update(PdfFont pdfFont, Brush brush, Int32 renderMode)
at Telerik.Reporting.Pdf.Rendering.PdfRenderer.DrawString(String text, PdfFont pdfFont, Brush brush, RectangleF rect, Boolean rightToLeft)
at Telerik.Reporting.Pdf.Drawing.PdfGraphics.DrawString(String s, Font font, Brush brush, RectangleF rect, StringFormat format)
at Telerik.Reporting.ImageRendering.CanvasPdf.DrawRegularChunk(String text, Font font, Brush brush, RectangleF rect, TextFormat textFormat)
at Telerik.Reporting.ImageRendering.DocumentBase.WriteTextChunk(String text, RectangleF bounds, IFont font, Color foreground, TextFormat format)
at Telerik.Reporting.Writing.HtmlTextWriter.WriteContent(DocumentWriter writer, HtmlTextElement element, ElementPageInfo pageInfo)
at Telerik.Reporting.Writing.HtmlContentElementWriter`1.Write(T element, ElementPageInfo pageInfo, DocumentWriter writer)
at Telerik.Reporting.Writing.WriteOperationsDispatcher.Visit(HtmlTextElement htmlTextElement)
at Telerik.Reporting.Processing.ProcessingElementVisitor.Visit(LayoutElement element)
at Telerik.Reporting.Writing.DocumentWriter.Telerik.Reporting.BaseRendering.IWriter.WriteStartElement(LayoutElement element, ElementPageInfo pageInfo)
at Telerik.Reporting.Paging.PageElementLayer.AddToPage(IPageHandler handler)
at Telerik.Reporting.Paging.PageElementManager.AddToPage(IPageHandler handler)
at Telerik.Reporting.Paging.PageCompositionBase.SendPhysicalPages()
at Telerik.Reporting.Paging.PageCompositionBase.OutputPage()
at Telerik.Reporting.Paging.PageCompositionBase.CreatePages()
at Telerik.Reporting.BaseRendering.RenderingExtensionBase.Render(Report report, Hashtable renderingContext, Hashtable deviceInfo, CreateStream createStreamCallback, EvaluateHeaderFooterExpressions evalHeaderFooterCallback)
at Telerik.Reporting.Processing.ReportProcessor.RenderCore(ExtensionInfo extensionInfo, IList`1 reports, Hashtable deviceInfo, IRenderingContext renderingContext, CreateStream createStreamCallback)
at Telerik.Reporting.Processing.ReportProcessor.ProcessAndRender(String format, ReportSource reportSource, Hashtable deviceInfo, IRenderingContext renderingContext, CreateStream createStreamCallback)
at Telerik.Reporting.Processing.ReportProcessor.ProcessAndRenderStateless(String format, ReportSource reportSource, Hashtable deviceInfo, IRenderingContext renderingContext, CreateStream createStreamCallback)
at Telerik.Reporting.Processing.ReportProcessor.RenderReport(String format, ReportSource reportSource, Hashtable deviceInfo)
虽然我在容器上安装了世纪哥特式字体,也证明了 HTML 报告运行良好。只是 PDF 报告从 Telerik 抛出字体错误。
我查看了 Telerik 博客,但不明白为什么会失败, 链接, https://docs.telerik.com/reporting/designing-reports-considerations-pdf https://www.telerik.com/forums/export-to-pdf-throwing-error
有趣的是,它适用于本地服务器,但不适用于容器,因此必须是 Telerik 的 pdf 报告呈现所期望的一些安装或配置。请提出一些解决方法。
【问题讨论】:
-
您确定该字体可供创建 PDF 文件的过程使用和访问吗?看起来它在尝试访问磁盘上的字体数据时抛出。
-
是的,请确保字体可用,因为我通过连接到容器确认字体可用,并且 HTML 报告使用的字体也相同,效果很好。
标签: pdf fonts telerik containers