在PHP中打印到打印机

我试图设置一个CLI PHP应用程序来打印一组网页到默认或指定的打印机。 我在一台运行在CLI中的PHP 5.2.11的Windows 7机器上。 为了testing打印function,我已经加载了PHP_printer.dll,并且正在使用PRINTER_ENUM_LOCAL中给出的确切的打印机名称打印到Onenote(打印到文件选项)。
更新 :这是最新的代码:

$handle = printer_open("Send To OneNote 2010"); printer_start_doc($handle, "My Document"); printer_start_page($handle); $filename='index.html'; $fhandle=fopen($filename, 'r'); $contents = fread($fhandle, filesize($filename)); fclose($fhandle); printer_set_option($handle, PRINTER_MODE, "RAW"); printer_write($handle,$contents); printer_end_page($handle); printer_end_doc($handle); printer_close($handle); 

我已经得到这个代码来打印一个空白页面到正确的打印机,但我无法打印我传递给printer_write的string。 我确认$contents正确填写了我的testingHTML文件的内容。 不pipe我提供什么作为第二个参数(要打印的string),我都会得到一个空白页面。 有什么我错过了,至less让我打印一些文字到一个页面上?

或者是有更好的方式来做到这一点(使用PHP / JavaScript文件)? 我想要做的是打印网页,因为它们出现(包括CSS)通过CLI应用程序,网站是用PHP编写的,我试图尽量减less复杂性。 如果有更好的方法来打印这些(转换为PDF和打印是一个选项显然),我打开,但它听起来像这是PHP中最简单的/事实上的方法。

我搞砸了printer.dll的年龄和厌倦了它。

不知道如果它的使用很多,但我购买了这个应用程序http://www.coolutils.com/TotalPDFPrinter

它可以让我打印来自PHP的CMD行的PDF文件,这对我来说很好,但它有一个弹出窗口,如果你购买服务器版本,你只能摆脱(如果你的Apache运行,你将需要作为服务)。 显然非弹出式版本是更昂贵的方式。

有一件事我挣扎着,是得到一个可用的打印机列表,所以我写了这个在C#中的小应用程序,吐出一列打印机为纯文本,然后使用PHP来调用,并把它们放到我的网站上的下拉列表形式。

 using System; using System.Collections.Generic; using System.Text; using System.Drawing.Printing; namespace printerlist { class Program { static void Main(string[] args) { foreach (String printer in PrinterSettings.InstalledPrinters) { Console.WriteLine(printer.ToString()); } } } } 

据我所知,你应该使用php_printer.dll 在这里检查。 然后,将php_printer.dll扩展名添加到您的php.ini。 如果你这样做了,那么…

如果你有资格和明确的IP /路线安装打印机,它应该做的伎俩。 就像printer_open('\\\\xx.x.xx.xx\\_printername_'); (本地打印机不需要手动添加服务器,afaik)

要检查打印机,请尝试如printer_list(PRINTER_ENUM_LOCAL | PRINTER_ENUM_SHARED) 如果我回想起来,在php.ini中有一个像printer.default_printer指令的东西。 很久以前在php 5.x安装上测试过了。 祝你好运。