2012-03-14 57 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