一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

PHP控制連接打印機(jī)

 小馬哥技術(shù)屋 2016-12-06

一、需求

  1. 使用PHP控制連接打印機(jī)
  2. 現(xiàn)場(chǎng)實(shí)時(shí)連續(xù)打印動(dòng)態(tài)數(shù)據(jù)

二、配置

  1. php運(yùn)行環(huán)境正確安裝(Apache|Nginx + PHP)
  2. 下載與php版本對(duì)應(yīng)的php_printer.dll擴(kuò)展
  3. 擴(kuò)展文件添加到ext目錄
  4. 編輯php.ini 添加extension=php_printer.dll;

三、使用

1.基本的代碼結(jié)構(gòu):
<?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);
?>

以上為基本的代碼結(jié)構(gòu),如果不指定printer_start_docprinter_start_page,打印機(jī)是不會(huì)進(jìn)行打印的。

2.具體文字與圖形的打印方法介紹
  • 對(duì)打印機(jī)的初始設(shè)定:printer_set_option,可以設(shè)定打印模式、doc標(biāo)題、打印份數(shù)、紙張格式等,參考printer_set_option文檔。
  • 創(chuàng)建一個(gè)字體:$font = printer_create_font('simsun',字體高度,字體寬度,字體粗細(xì), 是否斜體, 是否加下劃線, 是否加刪除線, 方向);具體參見。
  • 在打印文字之前首先要選擇字體printer_select_font($handle, $font);
  • 使用printer_draw_text($handle,'要打印的文字',起始x,起始y);

四、遇到的坑

使用一個(gè)服務(wù)器端的弱類型的腳本語(yǔ)言去跟硬件打交道,本來(lái)就是一件略扯得事情,過(guò)程中磨難多多啊。

  1. 在windows上開始配置的服務(wù)器是Apache,在打印的時(shí)候總是無(wú)法打印出正常的尺寸,總是連續(xù)打三頁(yè)。后來(lái),在直接在命令行使用php 命令運(yùn)行腳本,可以正常的打印,最終究其原因,是Apache服務(wù)運(yùn)行的權(quán)限為普通用戶,改為超級(jí)管理員,或者以超級(jí)管理員的身份登錄即可。
  2. 字體,一些打印機(jī)都附帶了相應(yīng)的客戶端軟件。但是使用php去控制打印機(jī)軟件這些東西就沒(méi)卵用了,所以創(chuàng)建字體就是個(gè)坑,字體的名稱,首先是在windows font 文件夾中找到相應(yīng)的文字,然后右鍵屬性查看名稱,就是需要填在printer_create_font的第一個(gè)參數(shù)了。但是:
  • 部分類型的字體中文是無(wú)法正常顯示。至今無(wú)解,可能是打印機(jī)內(nèi)存有限,無(wú)法裝下全部的字體文件。
  • 創(chuàng)建字體需要指定寬高,但是寬高的單位不知道是什么鬼,只能自己嘗試
  • 同樣指定問(wèn)題的位置需要x y的位置坐標(biāo)值,方法是printer_draw_line 畫一條對(duì)角線,自己根據(jù)寬高比計(jì)算。
  1. 打印中文亂碼,原因:使用表單提交過(guò)了的數(shù)據(jù)為UTF-8編碼,而打印機(jī)不一定是UTF-8編碼的,需要查閱說(shuō)明書,進(jìn)行編碼格式轉(zhuǎn)換。
  2. 連續(xù)打印幾十幾百windows直接被干死,藍(lán)屏思密達(dá)。最終是Apache進(jìn)程的問(wèn)題,每一次打印都會(huì)創(chuàng)建一個(gè)進(jìn)程,但是,Apache的進(jìn)程回收貌似總是不及時(shí),最終系統(tǒng)直接死掉,嘗試進(jìn)行最大連接數(shù)等的配置更改,并無(wú)作用。最終解決辦法:更換Nginx服務(wù)器,問(wèn)題解決。

遺留問(wèn)題:
對(duì)于寬度高度單位與標(biāo)簽紙的尺寸的關(guān)系和單位換算,現(xiàn)在沒(méi)弄清楚。
對(duì)于為什么只有部分的Windows字體可以使用的原因,現(xiàn)在沒(méi)弄清楚。


2016.11.10更新

一、遺留問(wèn)題寬高尺寸單位換算

通過(guò)當(dāng)前使用的打印機(jī)Godex ez1105指令文檔,打印機(jī)中的單位為dot,1mm=8dot,所以對(duì)于單位需查閱相應(yīng)打印機(jī)型號(hào)的打印機(jī)文檔。

二、使用printer_write打印條碼

最開始打印條碼的方案是使用php生成條碼圖片,然后使用printer_draw_bmp來(lái)打印圖片,但是這樣效率比較低,通過(guò)查閱決定使用printer_write方法直接打印指令

1.找到打印機(jī)指令文檔,ez1105這款打印機(jī)使用的是EZPL指令
2.查看語(yǔ)法,找到條碼打印指令Bt,x,y,narrow,wide,height,rotation,readable,data
3.php代碼示例

$handle = printer_open('打印機(jī)名');
printer_set_option($handle, PRINTER_MODE, "RAW");//printer mode必須設(shè)定為RAW
$ZPL = "
^L
Dy2-me-dd
Th:m:s
AZ3,86,66,4,4,0,0E,{$name}
BA,42,158,2,5,50,0,3,99922959
E
"
printer_write($handle, $ZPL);
printer_close($handle);
三、遇到的新坑

1.在原有代碼結(jié)構(gòu)的基礎(chǔ)上使用printer_write會(huì)打印兩份出來(lái),一份是基本的打印名字,另一個(gè)是指令打印的,所以使用指令打印,就不到將代碼放到printer_start_doc printer_start_page中,會(huì)被視為兩個(gè)不同的文檔。

2.打印指令不執(zhí)行

//使用這種EZPL指令字符串
$ZPL = "^L".PHP_EOL;
$ZPL .= "Dy2-me-dd".PHP_EOL;
...
//這種格式生成的指令無(wú)法執(zhí)行,需要把指令直接放到雙引號(hào)之間

3.打印機(jī)總是延遲打印一個(gè)(第一次執(zhí)行代碼,打印機(jī)沒(méi)有執(zhí)行,好像緩存了)
最終發(fā)現(xiàn)問(wèn)題的所在是最后一個(gè)指令后面沒(méi)有換行直接跟雙引號(hào)

$ZPL = "
^L
Dy2-me-dd
Th:m:s
AZ3,86,66,4,4,0,0E,{$name}
BA,42,158,2,5,50,0,3,99922959
E"//這里這樣是不可以的,必須換行,同樣起始位置也一樣,雙引號(hào)后必須換行

附件:鏈接打印機(jī)實(shí)例代碼

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产丝袜美女诱惑一区二区| 免费在线播放不卡视频| 日本熟妇五十一区二区三区| 欧美日韩亚洲国产av| 精品女同一区二区三区| 国产麻豆一线二线三线| 国产精品日韩精品一区| 一个人的久久精彩视频| 欧美国产日产综合精品| 亚洲欧美黑人一区二区| 国产又粗又猛又大爽又黄同志| 午夜激情视频一区二区| 国产日韩欧美一区二区| 亚洲av日韩一区二区三区四区| 99久久精品午夜一区二| 亚洲综合色婷婷七月丁香| 女人精品内射国产99| 国产传媒精品视频一区| 欧美多人疯狂性战派对| 激情中文字幕在线观看| 韩国激情野战视频在线播放| 久久机热频这里只精品| 欧美日韩黄片免费试看 | 91人人妻人人爽人人狠狠| 好骚国产99在线中文| 东京热电东京热一区二区三区| 欧美日韩精品一区免费| 欧美日韩久久精品一区二区| 国产精品刮毛视频不卡| 男人操女人下面国产剧情| 精品偷拍一区二区三区| 日韩精品第一区二区三区| 国产免费操美女逼视频| 国产亚洲不卡一区二区| 亚洲熟女国产熟女二区三区| 日韩人妻欧美一区二区久久| 国产农村妇女成人精品| 精品综合欧美一区二区三区| 久久午夜福利精品日韩| 亚洲国产天堂av成人在线播放| 午夜福利92在线观看|