2012-03-14 13 views
1

今私はすべての印刷ボタンをpdfボタンを使って置き換えるASP.NETサイトを構築しています。これは、私たち自身のブランドが印刷されているすべてのブラウザーで応答が均一であることを単純な理由で示しています。PDF生成のパフォーマンスASP.NET

これはうまく動作し、生成されたpdfsは完璧です(EO.PDF)。しかし、かなりの負荷がかかるようです。

ここで、パフォーマンスを向上させるために使用できる優れたテクニックはありますか?

マルチスレッドについてはよく分かりませんが、1つのスレッドを2つの仮想スレッドに分割し、特定のリソースセットを1つに割り当てる方法はありますか?あるいは、ある特定のスレッドのみをPDF生成に使用するよう割り当て、他のイベントでそれを非アクティブにすることができますか? asp.netでPDFを生成するためのコードを、次の

おかげ

答えて

1

EO.PDFは少なくともEO.PDF 2011として、「スレッドセーフ」ですが/3.x、それはすべてをシリアル化します。つまり、スレッド化はEO.PDFのパフォーマンスをまったく助けません。バックグラウンドサービスとしてEO.PDFを実行すると、レスポンスが「ハングする」ことがなくなり、非同期プロセスに変更されます。これはOKでも構いませんが、全く異なるアプローチです。

EO.PDFサポートを使用して別のASP.NETページを変換すると、ページがすばやく読み込まれるようにすることで、パフォーマンスが向上する場合があります。 EO.PDFはキャッシングをサポートしていますが、これが異なるプロセス間で持続するかどうかはわかりません。この側面では、EO.PDFによって生成されたWebリクエストを分析して、改善できる深刻なボトルネックがないかどうかを検討することを検討してください。

0

ユーザー:あなたは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を生成することができます。私は、サーバサイドのテクニックを使うか、マルチスレッドを最適に使うことで、パフォーマンスを向上させる方法を模索しています。 –