问题描述
我正在 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);