gpt4 book ai didi

c# - ASP.NET - 向用户发送 PDF

转载 作者:行者123 更新时间:2023-11-30 19:12:52 25 4
gpt4 key购买 nike

我有一个创建 PDF 的过程。我希望这些 PDF 是临时的且短暂的。我希望能够在用户单击按钮时执行以下操作:

string CreatePDF()//returns fileName.pdf
PromptUserToDownloadPDF()
DeletePDF(fileName.pdf)

我想避免必须创建清理过程并处理因用户在运行清理时同时创建 PDF 而引起的任何竞争条件。

在 winforms 中,我会同步提示用户下载文件。我怎样才能在网络中完成类似的任务?

更新
请注意,我正在使用第 3 方应用程序来创建 PDF(Apache FOP)。基本上我(将)有一个调用命令行的函数:

C:>fop "inputfile" "output.pdf"

所以,在内存中不是一个选项......除非我能以某种方式做......

string CreatePDF()//returns fileName.pdf
string RecreatePDFInMemory()
DeletePDF(fileName.pdf)
PromptUserToDownloadPDF()

最佳答案

像这样:

byte[] _pdfbytes = CreatePDF();
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Length", _pdfbytes.Length.ToString());
Response.BinaryWrite(_pdfbytes);

由于这会在内存中创建 PDF,因此您无需担心清理问题。

针对 OP 的编辑进行编辑:

CreatePDF 中,您可以使用 Path.GetTempFileName创建一个临时文件并执行“fop”以写入该文件。在返回 byte[] 之前立即删除该文件。我建议在 finally block 内执行此删除操作。但是,“Fop”确实支持将其输出通过管道传输到标准输出。使用 CreatePDF 函数抓取可能更干净。

关于c# - ASP.NET - 向用户发送 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5586772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com