65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 ItextSharp 库和 ASP.NET 创建 PDF 文件

starIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

1.00/5 (6投票s)

2009年3月31日

CPOL

2分钟阅读

viewsIcon

41737

使用 ItextSharp 库和 ASP.NET 及 C# 创建 PDF 文件,并在显示后从服务器删除该文件。

引言

今天我将解释如何使用 ASP.NET 在服务器上创建 PDF 文件以及如何从服务器中删除它。

我尝试借助 ItextSharp 创建 PDF 文件,这是一项相对容易的任务。创建完成后,我想将此文件加载到用户的 Web 浏览器中。加载后,我想从服务器中删除该文件。我搜索了关于此主题的资料,但几乎没有找到有用的信息。经过一番思考,我提出了这个解决方案。如果您有更好的解决方案,请与我分享。

背景

此应用程序的主要要求是 PDF 文件模板、数据源(将进入 PDF 文件中的数据)和 ItextSharp 库。从 SourceForge.net 下载 ItextSharp。 我要感谢 ItextSharp 的作者,感谢他们创建了这样一个优秀的库,它使创建 PDF 变得轻而易举。

请阅读 这篇文章,以了解如何创建 PDF 文件。

使用代码

我将解释如何在 PDF 文件创建后将其从服务器目录加载到 Web 浏览器,我们还将看到如何在显示后删除该文件。

步骤 1:在服务器上创建一个目录,例如 "/pdfFactory/"。将此文件夹用作 PDF 文件创建方法的输出路径。

步骤 2:创建文件后,构造一个线程

protected void Page_Load(object sender, EventArgs e){
    .
    .
    .

    string filePath = Server.MapPath("/pdfFactory/")+"/pdfFile.pdf"; 
    if (File.Exist(filePath)){
        Thread t = new Thread( deleteMe); 

        t.Start(filePath); 

        Response.Redirect("/pdfFactory/pdfFile.pdf"); 
    }
    .
    .
    .
}

static void deleteMe(object fileObject){
    string filePath = (string) fileObject; 
    Thread.Sleep(5000); 
    if(File.Exist(filePath)){
    File.Delete(filePath); 
    }
}

解释

一旦 PDF 文件在 "pdfFactory" 文件夹内创建完成,就可以使用相对 URL 直接将其加载到浏览器中。Response.Redirect 方法使用此路径将新创建的 PDF 文件加载到 Web 浏览器中。一旦使用上述方法重定向了文件,服务器端控制就丢失了。因此,我们需要另一个事件来从客户端浏览器中删除文件。但是,这需要客户端的另一个服务器调用。为了克服这个问题,我们使用一个 Thread

创建的线程 "t" 调用 deleteMe 方法。此方法接受一个 filePath 参数。启动后,它会休眠,直到文件加载到客户端计算机上。 5000 毫秒后,服务器使用 File 对象删除此文件。

如果客户端希望保存此文件,客户端可以将其保存在其本地计算机上。这样,服务器就不会加载很多文件。

© . All rights reserved.