У меня есть большой (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». У кого-нибудь есть предложения по альтернативным стратегиям, чтобы сбалансировать производительность с масштабируемостью?