gpt4 book ai didi

android - 从 Xamarin.Forms 使用 PdfSharp .Net Standard 预览加载字体失败 : No appropriate font found

转载 作者:行者123 更新时间:2023-11-29 16:45:20 25 4
gpt4 key购买 nike

我目前正在评估如何从 Xamarin.Forms(目前仅在 Android 上运行该应用程序)生成 PDF 并检查 .NET Standard port of PdfSharp .

绘图到 PDF 并显示它有效,但我在向文档写入文本时遇到问题。当我尝试使用以下代码加载 XFont

var font = new XFont("sans-serif", 20);

异常失败

System.InvalidOperationException: No appropriate font found.

根据 these示例,它应该以这种方式工作,但它们适用于 PdfSharp.Xamarin 而不是 PdfSharp .NET Standard。根据this answer "sans-serif" 字体系列应该是正确的,但我拼命尝试了其他选项,例如 "Roboto",但无济于事。

.NET Standard 的 PdfSharp 是否完全与 Xamarin 兼容? (它将 PdfSharp.Xamarin 列为它的创建来源,因此我假设它。)还有什么我错过的吗?

编辑

我尝试了 PdfSharp.Xamarin,它确实有效。显然,这是 .NET Standard 端口的问题。

最佳答案

我遇到了类似的问题,我通过编写自己的 IFontResolver 实现并将其分配给 GlobalFontSettings.FontResolver 解决了这个问题。

public class FileFontResolver : IFontResolver // FontResolverBase
{
public string DefaultFontName => throw new NotImplementedException();

public byte[] GetFont(string faceName)
{
using (var ms = new MemoryStream())
{
using (var fs = File.Open(faceName, FileMode.Open))
{
fs.CopyTo(ms);
ms.Position = 0;
return ms.ToArray();
}
}
}

public FontResolverInfo ResolveTypeface(string familyName, bool isBold, bool isItalic)
{
if (familyName.Equals("Verdana", StringComparison.CurrentCultureIgnoreCase))
{
if (isBold && isItalic)
{
return new FontResolverInfo("Fonts/Verdana-BoldItalic.ttf");
}
else if (isBold)
{
return new FontResolverInfo("Fonts/Verdana-Bold.ttf");
}
else if (isItalic)
{
return new FontResolverInfo("Fonts/Verdana-Italic.ttf");
}
else
{
return new FontResolverInfo("Fonts/Verdana-Regular.ttf");
}
}
return null;
}
}

然后告诉 PDFSharp 使用它:

GlobalFontSettings.FontResolver = new FileFontResolver();

关于android - 从 Xamarin.Forms 使用 PdfSharp .Net Standard 预览加载字体失败 : No appropriate font found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48679265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com