如何使用 Windows API 打印任何文件类型?
How can you print any file type using the Windows API?
有没有使用 windows API 打印任何文件的简便方法?基本上,将 PostScript、PDF、JPG 等发送到 API 并进行打印。我发现的每个 C 代码示例都使用设备上下文并绘制到它,然后将 DC 传递给 API。我知道有一个 RAW 选项,您可以绕过打印机驱动程序并将文件直接发送到打印机,但我发现它不适用于所有打印机。我已经搜索了几个小时,但找不到任何东西。
Windows API 不知道“任何文件”的内容。所以它不能在纸上呈现(这就是我对“打印”的理解)。
您必须自己处理渲染、解释文件的内容(这是您已经在 DeviceContext 和绘图中找到的那种代码),或者您可以将文件传递给能够打印它的应用程序。
后面的,WindowsAPI有个宋竹在评论里已经提到的机制:调用ShellExecute with the print command。这通常可以正常工作,但并非总是如此,因为某些应用程序不会自行注册为能够打印其文件。
正如您在问题中提到的,也可以绕过 WinApi 将内容直接发送到打印机(RAW 写入)。这允许应用程序使用其设备驱动程序未处理的打印机的特定功能。使用该方法,您的应用程序变得高度依赖打印机型号,同时使用打印机驱动程序(DeviceContext 和绘图)使您的应用程序 - 如果编写得当 - 几乎可以在 Window 支持的任何打印机上打印。
有没有使用 windows API 打印任何文件的简便方法?基本上,将 PostScript、PDF、JPG 等发送到 API 并进行打印。我发现的每个 C 代码示例都使用设备上下文并绘制到它,然后将 DC 传递给 API。我知道有一个 RAW 选项,您可以绕过打印机驱动程序并将文件直接发送到打印机,但我发现它不适用于所有打印机。我已经搜索了几个小时,但找不到任何东西。
Windows API 不知道“任何文件”的内容。所以它不能在纸上呈现(这就是我对“打印”的理解)。
您必须自己处理渲染、解释文件的内容(这是您已经在 DeviceContext 和绘图中找到的那种代码),或者您可以将文件传递给能够打印它的应用程序。
后面的,WindowsAPI有个宋竹在评论里已经提到的机制:调用ShellExecute with the print command。这通常可以正常工作,但并非总是如此,因为某些应用程序不会自行注册为能够打印其文件。
正如您在问题中提到的,也可以绕过 WinApi 将内容直接发送到打印机(RAW 写入)。这允许应用程序使用其设备驱动程序未处理的打印机的特定功能。使用该方法,您的应用程序变得高度依赖打印机型号,同时使用打印机驱动程序(DeviceContext 和绘图)使您的应用程序 - 如果编写得当 - 几乎可以在 Window 支持的任何打印机上打印。