首页 > 解决方案 > 如何使用 Windows API 打印任何文件类型?

问题描述

有没有一种简单的方法可以使用 Windows API 打印任何文件?基本上,将 PostScript、PDF、JPG 等发送到 API 并打印。我发现的每个 C 代码示例都使用设备上下文并绘制到它,然后将 DC 传递给 API。我知道有一个 RAW 选项,您可以绕过打印机驱动程序并将文件直接发送到打印机,但我发现它不适用于所有打印机。我已经搜索了几个小时,找不到任何东西。

标签: cwinapiprinting

解决方案


Windows API 不知道“任何文件”的内容。所以它不能在纸上渲染(这就是我对“打印”的理解)。

您必须自己处理渲染,解释文件的内容(这是您已经使用 DeviceContext 和绘图找到的那种代码),或者您可以将文件传递给能够打印它的应用程序。

对于后者,Windows API 有一个机制,宋竹在评论中已经提到:使用 print 命令调用 ShellExecute。这通常可以正常工作,但并非总是如此,因为某些应用程序不会将它们自己注册为能够打印它们的文件。

正如您在问题中提到的,还有可能绕过 WinApi 将内容直接发送到打印机(RAW 写入)。这允许应用程序使用其设备驱动程序未处理的打印机的特定功能。使用该方法,您的应用程序将高度依赖打印机型号,同时使用打印机驱动程序(DeviceContext 和绘图)使您的应用程序(如果编写得好)几乎可以在 Window 支持的任何打印机上打印。


推荐阅读