Медленное создание iTextSharp PdfReader с большой заполняемой формой - PullRequest
6 голосов
/ 19 августа 2011

У меня есть большой (6 страниц, 222 полей) заполняемый PDF, который я использую в качестве шаблона с iTextSharp PdfReader. Когда этот объект создается, это занимает 5 минут или больше. Я пробовал:

string pdfPath = Path.Combine(context.Server.MapPath("~/apps/ssgenpdf/App_Data"), "07-2011 Worksheets.pdf");
reader = new PdfReader(pdfPath);

В качестве альтернативы я попытался прочитать файл в поток памяти и передать поток памяти конструктору PdfReader. Дополнительно я попробовал использовать:

reader = new PdfReader(new RandomAccessFileOrArray(pdfPath), null);

Ни одна из этих альтернатив не показывает значительного увеличения.

Это приложение ASP.Net, и поэтому мое временное решение состоит в том, чтобы сделать это создание при запуске приложения и кэшировать читателя, затем я проверяю, получаю ли я действительный читатель из кэша и создаю экземпляр нового читателя из этого читатель. Теперь я обычно вижу менее 50 миллисекунд ответа от этого подхода.

Меня беспокоит то, что это не кажется масштабируемым, если другие члены моей группы хотят использовать эту стратегию «заполняемый PDF как шаблон с iTextSharp». У кого-нибудь есть предложения по альтернативным стратегиям, чтобы сбалансировать производительность с масштабируемостью?

1 Ответ

0 голосов
/ 08 ноября 2012

Убедитесь, что используемый вами PDF-файл такой же, как на сервере, так и локально. Иногда из-за контроля версий они повреждаются. [У меня возникла проблема с VSS с заполняемыми PDF-формами, которые я создал через нитро.] Также лучшеЗадать вопрос и соответствующий форум http://forum.pdfsharp.net

...