2012-03-14 81 views
1

我正在構建ASP.NET網站,我們正在用下載pdf按鈕替換每個打印按鈕。這個原因很簡單,我們希望在所有瀏覽器上使用我們自己的品牌進行統一的響應。PDF生成性能ASP.NET

它工作的很好,生成的PDF文件是完美的(EO.PDF)。然而,它似乎需要相當多的負載。

現在我想知道,有沒有很好的技術可以用來提高性能?節流,'通過電子郵件發送'等。

我不太瞭解多線程,但有沒有辦法將一個線程拆分爲兩個虛擬線程併爲其分配一組特定的資源?或者可能分配一個特定線程僅用於PDF生成,並使其在任何其他事件中處於非活動狀態?

感謝

回答

1

雖然EO.PDF是「線程安全」的,至少在2011 EO.PDF的/3.x,它會將所有內容序列化 - 這意味着,線程無法幫助EO.PDF的性能。雖然運行EO.PDF作爲後臺服務可以防止它「掛起」響應,但它也會將其更改爲異步進程 - 這可能會也可能不會,但卻是一種完全不同的方法。

如果使用EO.PDF支持轉換另一個ASP.NET頁面,則可以通過確保快速加載頁面來獲得性能提升。 EO.PDF確實支持緩存,但我不確定這是否持續存在於不同的進程之間。在這方面,請考慮分析由EO.PDF生成的網絡請求,以查看是否存在可以改進的嚴重瓶頸。

此外,請務必抓住您的許可證允許的最新版本。

0

用戶對於之後在生成PDF asp.net代碼:你必須下載itextSharp.dll然後給你的web應用程序的參考。

下面有一個完整的代碼示例可幫助您入門。 //代碼

using System; 
using System.IO; 
using System.Diagnostics; 

using iTextSharp.text; 
using iTextSharp.text.pdf; 

public class iTextDemo 
{ 
public static void Main() 
{ 
    Console.WriteLine("iText Demo"); 

    // step 1: creation of a document-object 
    Document myDocument = new Document(PageSize.A4.Rotate()); 

    try 
    { 

    // step 2: 
    // Now create a writer that listens to this doucment and writes the document to desired Stream. 

    PdfWriter.GetInstance(myDocument, new FileStream("Salman.pdf", FileMode.Create)); 

    // step 3: Open the document now using 
    myDocument.Open(); 

    // step 4: Now add some contents to the document 
    myDocument.Add(new Paragraph("First Pdf File made by Salman using iText")); 

    } 
    catch(DocumentException de) 
    { 
    Console.Error.WriteLine(de.Message); 
    } 
    catch(IOException ioe) 
    { 
    Console.Error.WriteLine(ioe.Message); 
    } 

    // step 5: Remember to close the documnet 

    myDocument.Close(); 
} 
} 

如果你想保存格式化PDF然後在下面的鏈接中使用如下代碼: http://www.4guysfromrolla.com/articles/030911-1.aspx

+0

嗨,事情是,我已經可以生成PDF。我正在尋找一種通過使用服務器端技術或使用多線程優化來提高性能的方法。 – 2012-03-14 17:22:44