Я использую MigraDoc и PdfSharp (.Net Standard), но когда я пытаюсь создать абзац, я получаю сообщение об ошибке: «Не найден подходящий шрифт» - PullRequest
0 голосов
/ 29 сентября 2019

Я использую MigraDoc и PdfSharp (.Net Standard), но когда я пытаюсь создать paragraph(section.AddParagraph("Text")), я получаю эту ошибку:

«Не найден подходящий шрифт»

Например, когда я добавляю абзац:

section.AddParagraph("Text"); 

Я получаю эту ошибку:

"Не найден подходящий шрифт"

Возможно, это связано с использованием стандартного порта PdfSharp / MigraDoc .NET. Если у вас есть какое-либо решение, я буду очень признателен за это.

PS: Извините за мой английский!

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Основываясь на моем тесте, я воспроизводлю сообщение об ошибке, ошибка вызвана Шрифт .

enter image description here

ВозможноВы используете шрифт в своем коде.

    Paragraph para = sec.AddParagraph("Text");//sec.AddParagraph();
        para.Format.Alignment = ParagraphAlignment.Justify;
        para.Format.Font.Name = "Tinos";
        para.Format.Font.Size = 12;

Я добавляю ссылку с двумя стандартными пакетами .net.

PDFSharp для .NET Standard 2.0 https://github.com/Didstopia/PDFSharp

MigraDoc для .NET Standard https://github.com/Connatix/MigraDoc

Я использую Шрифт Tinos , например.

Сначала создайте FontResolver класс.

public class FontResolver : IFontResolver
{
    public string DefaultFontName => "Tinos";

    public byte[] GetFont(string faceName)
    {
        using (var ms = new MemoryStream())
        {
            var assembly = typeof(FontResolver).GetTypeInfo().Assembly;
            var resources = assembly.GetManifestResourceNames();
            var resourceName = resources.First(x => x == faceName);
            using (var rs = assembly.GetManifestResourceStream(resourceName))
            {
                rs.CopyTo(ms);
                ms.Position = 0;
                return ms.ToArray();
            }
        }
    }

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

Вы можете получить TinosФайл шрифтов по ссылке ниже. https://github.com/Didstopia/PDFSharp/tree/master/Didstopia.PDFSharp.Tests/Fonts

Обновлено:

Добавьте папку Fonts с файлами, как показано ниже.

enter image description here

И добавьте код ниже для вызова FontResolver, прежде чем использовать шрифт в своем коде.

   if (GlobalFontSettings.FontResolver == null)
        {
            GlobalFontSettings.FontResolver = new FontResolver();
        }        
0 голосов
/ 30 сентября 2019

Проверьте реализацию IFontResolver и убедитесь, что используются только шрифты, поддерживаемые вашим распознавателем шрифтов.

См. Также:
https://stackoverflow.com/a/29059207/162529
https://stackoverflow.com/a/36177630/162529

...