ASP.NET - 向用户发送 PDF

2024-01-06

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

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

我希望避免必须创建清理过程并处理用户在运行清理时同时创建 PDF 时出现的任何竞争条件。

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

UPDATE
请注意,我正在使用第 3 方应用程序来创建 PDF(阿帕奇FOP http://xmlgraphics.apache.org/fop/)。基本上我(将)有一个调用命令行的函数:

C:>fop“输入文件”“输出.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 http://msdn.microsoft.com/en-us/library/system.io.path.gettempfilename.aspx创建一个临时文件并执行“fop”以写入该文件。在返回之前立即删除该文件byte[]。我建议在 a 内执行此删除操作finally堵塞。但是,“Fop”确实支持将其输出通过管道传输到标准输出。拥有CreatePDF函数抓取可能更干净。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET - 向用户发送 PDF 的相关文章

  • 关于逻辑/算法的想法以及如何防止线程写入 Sql Server 中的竞争

    我有以下逻辑 public void InQueueTable DataTable Table int incomingRows Table Rows Count if incomingRows gt RowsThreshold async
  • EntityHydrate 任务失败

    我最近安装了 Visual Studio 11 Beta 和 Visual Studio 2010 之后 我无法在 Visual Studio 2010 中构建依赖于 PostSharp 的项目 因此我卸载了 Visual Studio 1
  • C# 中的 Stack<> 实现

    我最近一直在实现递归目录搜索实现 并且使用堆栈来跟踪路径元素 当我使用 string Join 连接路径元素时 我发现它们被颠倒了 当我调试该方法时 我查看了堆栈 发现堆栈内部数组中的元素本身是相反的 即最近 Push 的元素位于内部数组的
  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • 如何在 C# 中将 Json 转换为对象

    我想将 Json 转换为 C 中的对象 这里的 Json 是 值 e920ce0f e3f5 4c6f 8e3d d2fbc51990e4 如何使用 Object 问题看似愚蠢 但其实并不那么愚蠢 我没有简单的 Json 我有 IEnume
  • Selenium - C# - Webdriver - 无法找到元素

    在 C 中使用 selenium 我试图打开浏览器 导航到 Google 并找到文本搜索字段 我尝试下面的 IWebDriver driver new InternetExplorerDriver C driver Navigate GoT
  • 使用 C# 和 ASP.NET 在电子邮件附件中发送 SQL 报告

    我正在尝试使用 ASP NET 和 C 从 sql reportserver 2008 作为电子邮件附件发送报告 到目前为止我学会了如何获取 PDF 格式的报告 http weblogs asp net srkirkland archive
  • 如何向 Mono.ZeroConf 注册服务?

    我正在尝试测试 ZeroConf 示例http www mono project com Mono Zeroconf http www mono project com Mono Zeroconf 我正在运行 OpenSuse 11 和 M
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • 来自嵌入图像的 BitmapSource

    我的目标是在 WPF 窗口上重写 OnRender 方法中绘制图像 someImage png 它是嵌入资源 protected override void OnRender System Windows Media DrawingCont
  • LinkLabel 无下划线 - Compact Framework

    我正在使用 Microsoft Compact Framework 开发 Windows CE 应用程序 我必须使用 LinkLabel 它必须是白色且没有下划线 因此 在设计器中 我将字体颜色修改为白色 并在字体对话框中取消选中 下划线
  • wordexp 失败时我们需要调用 wordfree 吗?

    wordexp 失败时我们需要调用 wordfree 吗 在某些情况下 调用 wordfree 似乎会出现段错误 例如 当 wordfree 返回字符串为 foo bar 的错误代码时 这在手册页中并不清楚 我已经看到在某些错误情况下使用了
  • __doPostBack 重新加载整个页面而不仅仅是 UpdatePanel

    在我的 javascript 中 我有以下行 doPostBack MyPanel MyParam 在后面的代码中 我使用 MyParam 查询数据库并将结果绑定到 MyPanel updatepanel 内的 gridview updat
  • 如何在多线程应用程序中安全地填充数据并 Refresh() DataGridView?

    我的应用程序有一个 DataGridView 对象和一个 MousePos 类型的列表 MousePos 是一个自定义类 它保存鼠标 X Y 坐标 类型为 Point 和该位置的运行计数 我有一个线程 System Timers Timer
  • MySQL 连接器 C++ 64 位在 Visual Studio 2012 中从源代码构建

    我正在尝试建立mySQL 连接器 C 从源头在视觉工作室2012为了64 bit建筑学 我知道这取决于一些boost头文件和C 连接器 跑步CMake生成一个项目文件 但该项目文件无法编译 因为有一大堆非常令人困惑的错误 这些错误可能与包含
  • ASP.NET Core 中间件与过滤器

    在阅读了 ASP NET Core 中间件之后 我对何时应该使用过滤器以及何时应该使用中间件感到困惑 因为它们似乎实现了相同的目标 什么时候应该使用中间件而不是过滤器 9频道有一个关于此的视频 ASP NET 怪物 91 中间件与过滤器 h
  • 如何使用 jQuery 过滤 DropDownList 中的选项

    我有 2 个 DropDownList 第一个 DropDownList 有 4 个选项 第二个 DropDownList 有 20 个选项 我想要一个选项value 1在第一个 DropDownList 中选择我在第二个 DropDown
  • 任何人都可以清楚地告诉如何在不使用像 这样的预定义函数的情况下找到带有小数值或小数值的指数吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 例如 2 0 5 1 414 所以想要 我是 c 的新手 所以请解释简单的逻辑 如果不是复杂的逻辑也足够了 在数学中 从整数取幂到实数
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有

随机推荐

  • 重载的 ++ 运算符在 C++ 中不起作用

    有人可以向我解释为什么我的重载 之前版本 没有更新该值吗 片段是这样的 circle circle operator Area Area 2 0 return this int main class circle c1 4 1 1 c2 1
  • AutoMock - 如何使用键控注册进行单元测试?

    我在使用 Autofac 键控注册的工厂编写测试时遇到问题 在 Autofac 模块中 我注册如下内容 builder RegisterType
  • python套接字和VPN

    我的问题是 如果我使用VPN并尝试在Python套接字消息上发送消息 而不是任何协议 我的套接字流量是否会通过VPN并且我的IP对消息接收者隐藏 我发现使用wireshark看不到流量 因为它不属于任何协议 谢谢您的帮助 与 VPN 建立套
  • 如何在 CentOS 7 中为终端创建键盘快捷键

    刚刚在我的笔记本电脑上安装了 CentOS 7 这个新版本的 CentOS 与旧版本有很大不同 我无法以旧方式为终端创建键盘快捷键 有人知道怎么做吗 Go to Settings gt gt gt keyboard gt gt gt Sho
  • 我可以同时安装 Visual Studio 2010 和 2008 吗?

    我需要在一台计算机上安装它们 首先用于教育目的 其次用于工作 会不会有兼容性问题 是的 我将它们并排安装 没有任何问题
  • jQuery 和 AJAX 响应标头

    我收到了这个 jQuery AJAX 调用 并且响应以 302 重定向的形式来自服务器 我想采用此重定向并将其加载到 iframe 中 但是当我尝试使用 javascript 警报查看标头信息时 它显示为空 即使 firebug 正确地看到
  • python中的整数平方根

    python 或标准库中是否有整数平方根 我希望它是精确的 即返回一个整数 并且如果输入不是完美的平方则引发异常 我尝试使用这段代码 def isqrt n i int math sqrt n 0 5 if i 2 n return i r
  • 当第一次访问静态类是基类上的静态方法时,为什么我的静态对象没有被实例化?

    我有以下课程 public class DocketType Enumeration
  • 在 Twig 路径中​​添加多个参数

    如何在 Twig 路径中 添加多个参数 假设你有这条路线 article show pattern article slug defaults controller AcmeArticleBundle Article show 您可以在树枝
  • 如何根据窗口大小动态更改图像/div 尺寸?

    对我来说 最终目标是创建一个非常简单的画廊 几乎与此示例完全相同 EXAMPLE http www iheartdropdead com spring summer lookbook 2011 html http www iheartdro
  • Prolog 中的流推理/反应式编程?

    我想知道您是否知道使用 prolog 进行流处理的任何方法 即某种反应式编程 或者至少让查询在不断更新的知识库 实际上是流 上运行 并不断输出推理的输出 在流行的 prolog 例如 SWI prolog 中实现了什么 您可以使用 Logt
  • 撤消 github 上的 git Push

    我犯了一个错误 而且我不知道如何修复它 我解释一下这个问题 我正在做我的项目 并且我做了第一次提交 在此提交中添加了 2 个大的无用文件 我不想要这些文件 所以我做了一个 git rm file 然后又犯了 我很愚蠢 因为我推到了 gith
  • 当设备语言更改时,TextView 显示 strings.xml 中不存在的字符串

    当我更改设备语言时 strings xml 中没有的字符串将显示在我的文本视图中 下面是我的文本视图代码
  • 为什么 FusedLocationApi.getLastLocation 为 null

    我正在尝试使用获取位置FusedLocationApi getLastLocation我在清单文件中获得了位置权限
  • 处理传入消息的最佳方式是什么?

    我正在为一个在线游戏编写一个服务器 最终应该能够处理 1 000 2 000 个客户端 我发现做到这一点的三种方法基本上是 1 个线程 连接 阻塞 制作客户端列表 并循环它们 非阻塞 选择 基本上是一次针对所有客户端的阻塞语句 并带有可选超
  • Vuex getter 未更新

    我有以下吸气剂 withEarmarks state gt var count 0 for let l of state laptops if l earmarks length gt 0 count return count 在组件中 这
  • 如何在 Visual Studio Code 中手动终止任务?

    Visual Studio Code 使我们能够在tasks json 中设置任务 我见过人们使用 监视 任务 但不知道如何手动终止它们 我这样做的唯一方法是尝试再次启动同一任务 这会提示我终止正在运行的任务 有键盘快捷键可以做到这一点吗
  • 为什么 $nin 比 $in 慢,Mon​​godb

    我有 5M 文档的集合 索引正确 in 工作完美 但相同的查询 nin 超级慢 这是什么原因 超级快 tech in Wordpress wordpress WORDPRESS 超级慢 tech nin Wordpress wordpres
  • 为什么 useEffect 不会在 window.location.pathname 更改时运行?

    Why 使用效果不运行window location pathname变化 我明白了loc仅记录一次 我怎样才能运行使用效果当路径名更改而没有任何附加库时 useEffect gt const loc window location pat
  • ASP.NET - 向用户发送 PDF

    我有一个创建 PDF 的过程 我希望这些 PDF 是临时的 短暂的 我希望能够在用户单击按钮时执行以下操作 string CreatePDF returns fileName pdf PromptUserToDownloadPDF Dele