具有大型可填写形式的iTextSharp PdfReader的缓慢实例化

时间:2011-08-19 17:39:05

标签: c# asp.net pdf itextsharp

我有一个大的(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 :(得分:0)

确保你使用的PDF在服务器和local.sometime上都是相同的来自源代码控制它们会被破坏。[我已经面临VSS的问题,可填写的pdf表格是我通过nitro创建的。] 还可以更好地提出问题和相关论坛http://forum.pdfsharp.net