2011-08-19 47 views
6

我有一個很大的(6頁,222個字段)可填充PDF,我用它作爲iTextSharp PdfReader的模板。當這個對象實例化時,需要5分鐘或更長時間。我曾嘗試過:iTextSharp PdfReader與大型可填寫表單緩存實例化

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模板」策略,這似乎不具有可擴展性。有沒有人對替代策略有什麼建議來平衡性能和可擴展性?

+0

跟進這個問題。我已經在其他環境中做了進一步的測試。我在我的工作站上創建了一個控制檯應用程序來完成基本相同的任務,並且這一切都花費了不到一秒鐘的時間然後我找到了另一個Web服務器來放置它,並且在那裏也運行了一秒鐘。這兩個Web服務器都是Win2K3。 –

+3

如果是這樣的話,我想這是一個服務器(負載/其他)的問題。任何簡單的方法來驗證這是爲了在問題Web服務器上創建一個簡單的測試頁面,該頁面通過一個小的,常規(無表單域)PDF文件實例化一個PdfReader並查看需要多長時間。 – kuujinbo

回答

0

請確保您使用的PDF在服務器上以及本地.sometime從源代碼管理它們被損壞[我已經面臨與可填寫的pdf格式,我已經通過硝基創建VSS的問題。] 最好提出問題和相關論壇http://forum.pdfsharp.net

+0

[http://forum.pdfsharp.net](http://forum.pdfsharp.net)論壇討論PDFSharp和MigraDoc librairies **而不是** * itextSharp *庫。 – hdoghmen