Xamarin.Forms 无法在流中转换 TTF 文件

问题描述

我正在 Syncfusion 的帮助下开发 Xamarin.Forms 应用程序,并希望在 PDF 绘图中添加西里尔文支持。我下载 ArialUnicodeMS.tff 在资源文件夹的共享项目中添加文件添加了构建操作 {{1}并且还添加Embedded Resource 中的 [assembly: ExportFont("ArialUnicodeMS.ttf",Alias = "ArialUni")]。但是Syncfusion Pdf Drawing想要通过AssemblyInfo.cs访问TTF文件

这是我的代码

Stream

但我的字符串总是 var assembly = IntrospectionExtensions.GetTypeInfo(typeof(EmbeddedFont)).Assembly; Stream stream = assembly.GetManifestResourceStream("MyAppName.ArialUnicodeMS.ttf"); PdfFont font = new PdfTrueTypeFont(stream,14); 。我哪里出错了?

解决方法

资源丢失。

很可能是以下三个问题之一:

  • 名称 "MyAppName.ArialUnicodeMS.ttf" 有一个拼写错误。
  • 资源未嵌入到 typeof(EmbeddedFont)).Assembly 程序集中。
  • 您尚未将参数 Build Action 设置为 Embedded Resource。这是 EmbeddedFont 项目的一部分,作用于 ArialUnicodeMS.ttf 资源。

要验证哪些名称可用,您可以使用:

string resourceNames = assembly.GetManifestResourceNames();
,

您可以使用下面的代码从嵌入式资源中获取流。

   var assembly = Assembly.GetExecutingAssembly();
        var resourceName = "App28.Trashtalk.ttf";
        Stream stream = assembly.GetManifestResourceStream(resourceName);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...