#.net-core #pdfsharp #migradoc
#.net-core #pdfsharp #migradoc
Вопрос:
table.Rows[0].Cells[4].AddParagraph("0123456789ABCDEFGHIJKLMNOPQRSTUVWYXZ")
.Format.Font.ApplyFont(new Font("barcode", 36));
...
var documentRenderer = new DocumentRenderer(_document);
documentRenderer.PrepareDocument(); //<--- crash here
Он поступает через мой пользовательский распознаватель шрифтов ResolveTypeface("barcode", false, false)
и GetFont("barcode.ttf")
, как и ожидалось.
Затем он завершается ResolveTypeface("New", false, false)
. Я не знаю, откуда берется «Новый».
Если я изменю новый шрифт («barcode», 36) на новый шрифт («Arial», 36), все хорошо, и он никогда не запрашивает шрифт «New». Я попробовал другой шрифт, на всякий случай, если там что-то перепуталось. Я просмотрел исходный код MigraDoc / PdfSharpCore, но не вижу ссылки на жестко закодированную «новую» строку.
Ответ №1:
Мое лучшее предположение заключается в том, что преобразование MigraDoc в PDF ищет семейство шрифтов из шрифта, который он использовал для разрешения, а затем использует это семейство шрифтов (не исходное) при создании PDF.
Это означает 2 вещи:
- При его разрешении лучше использовать точное имя семейства шрифтов, которое есть в шрифте.
- Ваш шрифт должен быть правильным / не поврежден. Где-то он берет «Новый» из шрифта, который я использовал.