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





1.00/5 (6投票s)
使用 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
对象删除此文件。
如果客户端希望保存此文件,客户端可以将其保存在其本地计算机上。这样,服务器就不会加载很多文件。