Недавно после перемещения нашего веб-сайта с Windows Server 2008 на Server 2016 мы столкнулись с проблемами при экспорте документов PDF из нашего кода C #, использующего библиотеку MigraDoc / PDFsharp.
Проблема также может быть воспроизведена в Windows 10. Точно такой же код работаетотлично подходит для Windows 7 или, как упоминалось ранее, любой серверной ОС до Server 2016.
Ранее мы получали это исключение:
Ошибка при синтаксическом анализе шрифта OpenType.InnerException: InvalidOperationException: у шрифта нет используемой платформы или идентификатора кодировки.Его нельзя использовать с PDFsharp.
Поэтому мы попытались обновить ссылки до последней версии сборки, и теперь мы получаем другую ошибку:
Шрифты TrueType коллекцииPDFsharp еще не поддерживается.
Пожалуйста, не прыгайте с пистолетом и пометьте это как дубликат некоторых других проблем, когда китайские иероглифы отображаются в виде квадратов или ???в экспортированном PDF.Это не проблема встраивания шрифта.Это отличается от этого.Почему-то в Windows 10 и Server 2016, если вы попытаетесь использовать шрифт Microsoft Ya Hei (微软 雅 黑), он просто не будет работать.Достаточно странно, что все работало нормально с тем же кодом в той же сборке версии до перехода на Server 2016. Вот соответствующий код без атрибутов
.
.
.
using MigraDoc.DocumentObjectModel;
using MigraDoc.Rendering;
.
.
Document document = new Document();
document.Info.Title = "Report";
document.Styles["Normal"].Font.Name = "微软雅黑"; // Microsoft YaHei Chinese Font
Section section = document.AddSection();
document.LastSection.AddParagraph("### This font is: 微软雅黑");
PdfDocumentRenderer renderer = new PdfDocumentRenderer(true);
renderer.Document = document;
renderer.RenderDocument();
renderer.PdfDocument.Save(@"Test.pdf");
Может кто-нибудь помочь мне понять общую картину: что изменилось в отношениина китайские шрифты и что именно здесь происходит?