【问题标题】:Providing PDF specific parameters in an ASP.NET Generic Handler writing a PDF BLOB stream在编写 PDF BLOB 流的 ASP.NET 通用处理程序中提供 PDF 特定参数
【发布时间】:2014-01-17 19:32:24
【问题描述】:

编辑:修改标题更具体

我在 VS2012 中使用基本模板作为起点创建了一个通用处理程序,并对其进行了修改以从我们的 sqlserver 获取 pdf。主要代码块是这样的:

buffer = DirectCast(rsp.ScalarValue, Byte())
context.Response.ContentType = "application/pdf"
context.Response.OutputStream.Write(buffer, 0, buffer.Length)
context.Response.Flush()

这可以很好地使用任何给定浏览器上安装的任何 pdf 插件将 BLOB 显示为 pdf。

我的问题:如何修改处理程序以将Adobe PDF specific parameters 写入输出?具体来说,我正在尝试设置 width='fit' 以便输出 PDF 流将文档自动调整为弹出窗口的宽度。

注意:将 BLOB 写入 pdf 文件并提供 PDF 不是一种选择。

提前感谢任何建议或链接

【问题讨论】:

    标签: asp.net vb.net pdf ashx


    【解决方案1】:

    我不认为你可以在你的处理程序中做任何事情。根据该文档,PDF 查看器可以检查用于打开 PDF 的 URL,但没有可以设置的 HTTP 标头。因此,您需要修改链接到您的处理程序的东西以使这些参数到位。或者,您可以构建一个预处理程序,将 HTTP 重定向到带有这些参数的新处理程序。

    此外,该文档是在 2007 年编写的,适用于 Adob​​e Acrobat 和 Adob​​e Reader。如今,大多数现代浏览器都带有自己的内部 PDF 查看器,因此除非您只针对 Adob​​e,否则您的努力可能会白费。

    【讨论】:

    • 我已经尝试通过处理程序的 URL 传递参数,使得 ref 看起来像这样 ~/PdfHandler.ashx?id=xxx&width=fit 以及带和不带引号的各种化身,但处理程序没有收到文档,而是访问数据库并随后写入一个字节数组。所以似乎没有放置参数的位置。但是,处理程序会为我想知道是否可以覆盖的 pdf 生成一个 <embed> 对象。
    • 根据该文档,URL 参数应该以井号 (#) 开头,而不是初学者的问号。只是为了确认一下,您正在使用 Adob​​e Acrobat 或 Adob​​e Reader 进行测试,对吗?我刚刚测试了 Chrome 的 PDF 查看器,它似乎也至少可以使用页码。您说处理程序既生成嵌入标记又生成 PDF 字节,这让我感到困惑。您的意思是您将 PDF 字节直接嵌入到 embed 标记中?
    • 我的 OP 中的代码就是它。唯一的其他代码块检索字节数组。我没有编写任何特定的 html,因此一方面处理程序正在编写它,但不是因为我编写了任何代码。如果我不得不猜测,它是由 IIS 在呈现页面时根据内容类型自动注入的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多