Telerik,导出到 pdf 操作抛出错误,不支持异常:不支持字体世纪哥特式 9 常规



我们使用 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 报告渲染所期望的一些安装或配置。请提出一些解决方法。

尽管存在奇怪的错误,但解决方案更奇怪,但有效。正如我在问题中所解释的那样,即使字体存在于容器下,并且经过几次搜索,我只找到了一个可能的答案,那就是将字体文件从"C:\Windows\Fonts"文件夹移动到其他地方,然后将其复制回同一文件夹。最终我尝试了这种方法,它奏效了。

关注这篇文章,https://www.itwriting.com/blog/3050-font-does-not-support-style-regular.html

不知何故,Windows操作系统有自己的方法来产生错误并解决相同的:)

最新更新