【问题标题】:Sending Documents to a Network Printer using .NET使用 .NET 将文档发送到网络打印机
【发布时间】:2009-08-03 20:20:19
【问题描述】:

我们有大型 IBM Infoprint 打印机。

我需要从数据库中读取一堆 PDF 文件,将它们合并在一起,然后将其发送到其中一台打印机。
我需要能够指定许多选项,例如要使用的托盘、带/不带订书钉等。
当我尝试从计算机上打印某些东西时(通过高级打印驱动程序首选项),所有这些选项都可以手动设置,所以我确信这些也可以通过编程方式设置。

如何在 .NET (Visual Basic) 中做到这一点?

【问题讨论】:

  • 答案已更新。这应该会为您提供入门所需的信息。

标签: .net vb.net printing


【解决方案1】:

您需要检查 System.Drawing.Printing 命名空间。具体来说,您要查找的设置将在 PrinterSettings 类中。 .NET 中的 GDI 打印入门书有点超出了本网站的范围,但很多都可以在 Web 上找到。我不愿发布指向特定文章的链接,因为许多示例都缺乏深度和最佳实践的遵守。我会做一些额外的查找,看看是否能找到一个好的起点。

编辑

最常见的打印机设置(双面打印、彩色等)在 PrinterSettingsPageSettings 类中实现。对于不属于标准 Windows 打印 API 的“额外”信息,您必须使用 DEVMODE 结构。如需更多信息(以及看起来完全符合您的要求的博客),请查看this article

【讨论】:

  • 它如何知道每台打印机提供哪些选项?我怀疑这个课程是否已经扩展到每台曾经生产的打印机!
  • @Josh:我相信打印驱动程序会为您解决这个问题。 Windows 只是使用它的标准接口来创建打印作业,所以如果你发送它不能做的事情,驱动程序应该忽略它。
  • 我正在尝试使用您的链接提供的示例转储当前的 DEVMODE 设置,但它说 DEVMODE 未定义(除其他外,如 2008Flyer)。我该如何解决这个问题?
  • 查看我在上面的 DEVMODE 上放置的链接。它会将您带到 pinvoke.net,您可以在其中找到结构的定义。
  • 所以我需要自己定义?对不起,这对我来说很陌生!
【解决方案2】:

您可以使用 iTextSharp 将 PDF 文件拼接在一起 (http://itextsharp.sourceforge.net/) 您可以使用 GhostScript (http://www.ghostscript.com/) 将 PDF 文件直接发送到指定打印机。

【讨论】:

  • -1 我没有合并问题。我需要使用 .NET 将其发送到打印机,而不是用 C 编写的解释性脚本语言。
  • 为了将 PDF 发送到打印机,它需要一些东西来解释 PDF 并将其写出到打印机。解释是通过 GhostScript 完成的,您可以使用 .NET 来指示 GhostScript 执行此操作。
  • 我很想看看您的解决方案。如果需要,我有一个 C# GhostScript Wrapper 可以用来执行此操作,联系方式:redmanscave.blogspot.com
  • 我不得不转移到另一个项目一段时间,但我仍然必须解决这个问题。我一定会让你知道我的想法!
  • 不少大型打印机制造商都嵌入了 PDF 渲染器,因此像 PCL 或 PostScript 一样接受 PDF 作为有效的 PDL。好吧,至少我可以这样说我编程的那些。
猜你喜欢
  • 2017-11-24
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多