iTextSharp аварийно завершает работу с StackOverflowException при получении шрифта

iTextSharp очень, очень не нравится, когда я пытаюсь создать шрифты:

FontFactory.GetFont(Font.HELVETICA, 12)

Это дает мне удобный StackOverflowException. Итак, я попробовал это:

new Font(Font.HELVETICA, 12)

который делает то же самое. Пробовал Font.TIMES, тоже самое. Поэтому я попытался опуститься немного ниже, основываясь на этом ответе, что предполагает следующее:

BaseFont bf = BaseFont.CreateFont(
            HttpContext.Current.Server.MapPath("/path/to/times.ttf"), 
            BaseFont.IDENTITY_H, 
            BaseFont.EMBEDDED);
new Font(bf, 12);

Еще раз StackOverflowException. Хотя согласованность хороша, я бы предпочел, чтобы библиотека позволяла мне выбирать шрифт.

Я уверен, что где-то ошибся в конфигурации; но это ускользает от меня, что это может быть.


person TALlama    schedule 13.11.2009    source источник


Ответы (1)


Я нашел эту статью на nabble, в которой предлагается создать шрифт на отдельный поток, поэтому у вас есть больший стек для работы.

ЗСТ

Thread smartCopyThread = new Thread(new ThreadStart(RunSmartCopy),
0x800000);
smartCopyThread.Start();
smartCopyThread.Join(); 

Здесь RunSmartCopy выполнит работу, которую вы описываете.

person Joseph    schedule 13.11.2009
comment
Я тоже нашел эту ссылку, и все, что она делает, это то, что сбой происходит в другом потоке. Это немалый комфорт — он позволяет избежать модального диалога, который появляется на сервере в случае сбоя в основном потоке, — но это не способствует созданию настоящего PDF-файла. - person TALlama; 13.11.2009