【问题标题】:Printing PDF from .NET MVC从 .NET MVC 打印 PDF
【发布时间】:2012-07-31 20:44:46
【问题描述】:

我有一个由我的页面生成的 5-80 页 PDF。我有一个字节数组中的这个 PDF,如果需要,我可以暂时保存到文件中。

我不想让用户下载然后打印 PDF。有没有一种相当简单的方法可以让用户打印这个文件?最好的情况是我可以以某种方式直接从byte[]MemoryStream 打印。

【问题讨论】:

  • 用户必须下载文件内容才能查看/打印它。您的意思是您不希望 PDF 在浏览器中内嵌显示,而是提示用户下载它?
  • 如果您希望用户在不下载的情况下打印文件,您将不得不将 CD 或拇指驱动器邮寄给他们。
  • 哈哈。抱歉,术语不正确。我不希望用户必须在本地保存 PDF,然后查找并打印该文件。
  • @PFranchise 很好,这一切都取决于他们的浏览器是如何配置的,如果它将它加载到浏览器中,他们可以从那里打印,除非你在你知道的内部环境中,否则无法知道这一点机器/浏览器的配置
  • @libertas 啊,没错。当我处理这个问题时,不知何故这个事实让我忘记了。谢谢你让我直截了当。

标签: c# asp.net-mvc pdf printing


【解决方案1】:

您应该在 MVC 操作中简单地 return File(stream, fileName, "application/pdf")

浏览器将使用适当的插件呈现 PDF,并且(通常)会提供一个打印按钮。

【讨论】:

  • 啊,这似乎是个好主意。我现在就试试。非常感谢!
  • 快速提问:什么是“application/pdf”参数?那是哑剧类型吗?
【解决方案2】:

可以使用Controller.File方法返回文件

public ActionResult GetFile()
{    
   byte[] bytes = GetYourByteArrayForPDF();
   return File(bytes, "application/pdf","somefriendlyname.pdf");    
}

假设 GetYourByteArrayForPDF 是您的方法,它返回 PDF 文件的字节数组。

这会将文件内容直接提供给用户可以打印/保存的浏览器。

从 Web 应用程序中,您不能简单地调用打印命令并在客户端计算机中打印某些内容。除非您有一些 activex 控件(仅 IE 支持)/browser 插件,否则用户必须手动执行此操作。

【讨论】:

  • 感谢您的回复。如果您不介意,我确实有一个快速的后续问题。我现在是否可以通过以下 URL 查看我的 pdf:“site.com/controller/getFile”?
  • 我觉得人们对他的问题感到困惑,或者他的问题让我感到困惑......几乎就像他在问如何跳过文件下载并直接进入打印机任何意义。
  • @PFranchise 无论如何,您通过 HTTP 将 PDF 文件传递​​给用户,浏览器如何处理它取决于客户端配置,它可能会弹出下载对话框,在浏览器中加载查看器等
  • @libertas 好的,感谢您的澄清。此应用程序将专门与 FF/Chrome 一起使用,因此他们应该按照我的意愿处理 PDF。我是一个相当新的网络开发人员,所以我非常感谢这些信息。
  • 从 Web 应用程序中,您不能简单地调用打印命令并在客户端计算机中打印某些内容。除非您有一些 activex 控件(仅 IE 支持)/browser 插件,否则用户必须手动执行此操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多