【问题标题】:Telerik, export to pdf operation throwing an error, NotSupportedException: Font Century Gothic 9 Regular is not supportedTelerik,导出到 pdf 操作抛出错误,NotSupportedException: Font Century Gothic 9 Regular is not supported
【发布时间】: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


【解决方案1】:

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

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

windows 操作系统有自己的方式产生错误并解决相同的问题:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-21
    • 1970-01-01
    • 2017-11-27
    • 2015-05-01
    相关资源
    最近更新 更多