最近想用php連接印表機列印內容,我做了步驟但是沒任何反應,請各位大神幫忙找找原因:
我用的php7.25 Apache 版本,我去下載了一個最新的 php_printer.dll.
#下載後,解壓縮得到檔案放置php7.25版本目錄裡面:E:\phpStudy\php\php-7.2 .5\ext
去修改php.ini,我最好加了一個: extension=php_printer.dll。然後保存重啟伺服器。
去PHP使用:
$handle = printer_open("ZDesigner 105SL 203DPI");
直接錯誤:Fatal error: Uncaught Error: Call to undefined function printer_open() in E:\phpStudy\WWW\test\1.php:3 Stack trace: #0 {main} thrown in E:\phpStudy\WWW\test\1.php on line 3
秋香姐家的小书童2019-03-31 11:39:50
一、需求
使用PHP控制連接印表機
在現場即時連續列印動態資料
二、設定
##php運作環境正確安裝( Apache|Nginx + PHP)下載與php版本對應的php_printer.dll擴充包擴充檔加入ext目錄編輯php.ini 新增extension=php_printer.dll ;三、使用1.基本的程式碼結構:<?php$handle = printer_open('printer name'); printer_start_doc($handle, "doc name"); printer_start_page($handle); printer_set_option($handle, PRINTER_MODE, "RAW");//具体的打印部分printer_end_page($handle); printer_end_doc($handle); printer_close($handle);?>以上為基本的程式碼結構,如果不指定printer_start_doc與printer_start_page,印表機是不會進行列印的。 2.具體文字與圖形的列印方法介紹對印表機的初始設定:printer_set_option,可以設定列印模式、doc標題、列印份數、紙張格式等,參考printer_set_option文件. 建立一個字體:$font = printer_create_font('simsun',字體高度,字體寬度,字體粗細, 是否斜體, 是否加底線, 是否加刪除線, 方向);具體參見。 在列印文字之前先選擇字型printer_select_font($handle, $font);使用printer_draw_text($handle,'要列印的文字',起始x,起始y) ;四、遇到的坑使用一個伺服器端的弱型別的腳本語言去跟硬體打交道,本來就是一件略扯得事情,過程中磨難多多啊。 在windows上開始設定的伺服器是Apache,在列印的時候總是無法列印出正常的尺寸,總是連續打三頁。後來,在命令列直接使用php 指令執行腳本,可以正常的列印,最終究其原因,是Apache服務運作的權限為普通用戶,改為超級管理員,或是以超級管理員的身分登入即可。 字體,有些印表機都附帶了對應的客戶端軟體。但使用php去控製印表機軟體這些東西就沒卵用了,所以建立字體就是個坑,字體的名稱,首先是在windows font 資料夾中找到對應的文字,然後右鍵屬性查看名稱,就是需要填在printer_create_font的第一個參數了。但是:部分類型的字體中文是無法正常顯示。至今無解,可能是印表機記憶體有限,無法裝下全部的字體檔案。 建立字體需要指定寬高,但是寬高的單位不知道是什麼鬼,只能自己嘗試同樣指定問題的位置需要x y的位置座標值,方法是printer_draw_line 畫一條對角線,自己根據寬高比計算。 列印中文亂碼,原因:使用表單提交過了的資料為UTF-8編碼,而印表機不一定是UTF-8編碼的,需要查閱說明書,進行編碼格式轉換。
連續印幾十幾百windows直接被幹死,藍屏思密達。最終是Apache進程的問題,每一次列印都會創建一個進程,但是,Apache的進程回收貌似總是不及時,最終系統直接死掉,嘗試進行最大連接數等的配置更改,並無作用。最終解決方法:更換Nginx伺服器,問題解決。