Heim  >  Fragen und Antworten  >  Hauptteil

Das Hinzufügen der Erweiterung php_printer zu PHP hat keine Auswirkung

Kürzlich möchte ich PHP verwenden, um eine Verbindung zum Drucker herzustellen, um Inhalte zu drucken, aber es ist nichts passiert. Bitte helfen Sie mir, den Grund zu finden:

  1. Ich verwende die PHP7.25+Apache-Version Neueste Version. Nach dem Herunterladen der php_printer.dll.

  2. entpacken Sie die Datei und legen Sie sie im Verzeichnis der php7.25-Version ab: E:phpStudyphpphp-7.2.5ext

  3. Um php.ini zu ändern, habe ich das Beste hinzugefügt Satz: extension= php_printer.dll. Anschließend speichern und den Server neu starten.

  4. Verwendung in PHP:

    $handle = Printer_open("ZDesigner 105SL 203DPI");

    Einen Fehler direkt melden: Schwerwiegender Fehler: Nicht erfasster Fehler: Aufruf der undefinierten Funktion print_open() in E:phpStudyWWWtest1.php:3 Stacktrace: #0 {main} wird in E:phpStudyWWWtest1.php in Zeile 3 geworfen

青松哥青松哥2054 Tage vor1794

Antworte allen(3)Ich werde antworten

  • 秋香姐家的小书童

    秋香姐家的小书童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服务器,问题解决。


    Antwort
    0
  • 秋香姐家的小书童

    秋香姐家的小书童2019-03-31 11:39:13

    PHP操作打印机 你直接用JS不是更好吗

    Antwort
    0
  • StornierenAntwort