QuestPDF не отображает текст в функциях Azure.C#

Место общения программистов C#
Ответить
Anonymous
 QuestPDF не отображает текст в функциях Azure.

Сообщение Anonymous »

Я использую пакет QuestPDF для создания PDF-файла из шаблона SVG в своих функциях Azure .NET 9.0 с изолированным рабочим процессом в Linux, например:

Код: Выделить всё

var pdfBytes = Document.Create(container =>
{
container.Page(page =>
{
page.Size(PageSizes.A4);
page.Content().Svg(svgContent);
});
}).GeneratePdf();
Когда я запускаю этот код локально на своем компьютере с Windows, весь текст, изображения и таблицы отображаются правильно. Когда я делаю это внутри контейнера Docker — опять же ок. Мои шрифты не применяются, но весь текст присутствует.
И, наконец, когда я развертываю свое приложение в функциях Azure, ни один текст не отображается. Изображения и таблицы есть, но ни одной буквы нет.
Поскольку мои шрифты не применяются в Docker, подозреваю, что дело в шрифтах. Вероятно, ни один из них не доступен в облачном контейнере (даже резервный), и поэтому текст не может отображаться. Но как я могу решить эту проблему?
Я попробовал включить шрифты в свой проект и зарегистрировать их во время выполнения, как предложено в документации QuestPDF, вот так:

Код: Выделить всё

private static void AddFonts()
{
try
{
var fontsDir = Path.Combine(AppContext.BaseDirectory, "Resources", "Fonts");

using (var juraStream = File.OpenRead(Path.Combine(fontsDir, "Jura.ttf")))
{
FontManager.RegisterFontWithCustomName("Jura", juraStream);
}

using (var interItalicStream = File.OpenRead(Path.Combine(fontsDir, "Inter-Italic.ttf")))
{
FontManager.RegisterFontWithCustomName("Inter", interItalicStream);
}

Console.WriteLine("Fonts registered successfully via streams: Jura, Inter-Italic");
}
catch (Exception ex)
{
Console.WriteLine($"Error registering fonts: {ex.Message}");
throw;
}
}
Я пробовал делать это как при запуске, так и непосредственно перед созданием PDF. Я использовал все доступные способы регистрации шрифтов (

Код: Выделить всё

RegisterFont
, RegisterFontWithCustomName и RegisterFromEmbeddedResource). Во всех этих комбинациях регистрация проходит успешно (исключение не создается), но ничего не меняется — текст отображается нормально при запуске на локальном компьютере или в контейнере Docker, но не в облачном ресурсе функций Azure.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -functions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»