php_printer 拡張機能を php に追加しても効果はありません
青松哥
青松哥 2019-03-29 17:30:39
0
3
1815

最近、php を使用してプリンターに接続し、コンテンツを印刷したいと考えています。いくつかの手順を実行しましたが、応答がありません。理由を見つけるのを手伝ってください:

  1. 私は使用していますphp7.25 Apache バージョンの場合、最新の php_printer.dll をダウンロードしました。

  2. ダウンロード後、ファイルを解凍し、php7.25 バージョンのディレクトリ E:\phpStudy\ に置きます。 php\php-7.2 .5\ext

  3. php.ini を変更するために、次の文を追加しました: extension=php_printer.dll。次に、保存してサーバーを再起動します。

  4. PHP で使用します:

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

    エラーを直接報告します: 致命的なエラー: 捕捉されませんエラー: E:\phpStudy\WWW\test\1.php:3 の未定義関数 printer_open() の呼び出し スタック トレース: #0 {main} が E:\phpStudy\WWW\test\1.php の 3 行目でスローされました

青松哥
青松哥

全員に返信(2)
秋香姐家的小书童

1. 要件

PHP コントロールを使用してプリンターに接続します

動的データをオンサイトでリアルタイムに連続印刷する

構成

PHP オペレーティング環境が正しくインストールされていること (Apache|Nginx + PHP) php のバージョンに対応する php_printer.dll 拡張子をダウンロードします

拡張子ファイルを ext ディレクトリに追加します

php.ini を編集し、extension=php_printer.dll;

3 を使用します

1.

上記は基本的なコード構造です。printer_start_doc、printer_start_pageが指定されていない場合、プリンターは印刷しません。

2. テキストとグラフィックの具体的な印刷方法の紹介

プリンターの初期設定: printer_set_option 印刷モード、ドキュメントのタイトル、印刷部数、用紙形式などを設定できます。printer_set_option のドキュメントを参照してください。

フォントを作成します: $font = printer_create_font('simsun', フォントの高さ、フォントの幅、フォントの太さ、斜体かどうか、下線を付けるかどうか、取り消し線を追加するかどうか、方向); 詳細を参照してください。

テキストを印刷する前に、まずフォントを選択する必要があります printer_select_font($handle, $font);

Use printer_draw_text($handle,'text to be print', starting x, starting y);

4. 落とし穴に遭遇しました。

ハードウェアを扱うためにサーバーサイドの弱い型指定のスクリプト言語を使用するのは、もともと少し面倒で、そのプロセスには多くの困難があります。

Windows で設定を開始したサーバーは Apache でしたが、印刷するときに常に通常のサイズで印刷できず、常に 3 ページ連続で印刷されました。その後、コマンドラインで php コマンドを直接使用してスクリプトを実行したところ、最終的には正常に印刷できました。これは、Apache サービスの実行権限が通常ユーザーに変更され、またはスーパー管理者に変更されたことが原因でした。スーパー管理者としてログインできます。

フォント、一部のプリンターには対応するクライアント ソフトウェアが付属しています。ただし、プリンター ソフトウェアの制御に PHP を使用するのは役に立たないため、フォントの作成は落とし穴になります。フォントの名前については、まず Windows のフォント フォルダーで対応するテキストを見つけ、次にプロパティを右クリックして名前を表示します。最初のパラメータに printer_create_font を入力します。ただし:

一部の種類の中国語フォントは正しく表示されません。今のところ解決策はありません。プリンタのメモリが限られており、すべてのフォント ファイルを保持できない可能性があります。

フォントを作成するには、幅と高さを指定する必要がありますが、幅と高さの単位がわからないので、自分で試すしかありません

同様に、問題の位置を指定するには、 x y 位置座標値を用いて斜線を描画するメソッドであり、高比率の計算に応じて斜線を描画することができます。

中国語が文字化けして印刷される 理由: フォームを使用して送信されたデータは UTF-8 でエンコードされており、プリンターは必ずしも UTF-8 でエンコードされているわけではありません。エンコード形式を変換するにはマニュアルを参照する必要があります。

何十、何百ものウィンドウを継続的に印刷すると、ブルースクリーン Smecta が私を直接殺しました。結局のところ、Apache のプロセスに問題があり、印刷するたびにプロセスが作成されますが、最終的にはシステムが直接停止してしまうようです。接続の最大数は影響しないためです。最終的な解決策: Nginx サーバーを交換すると、問題は解決します。


いいねを押す +0
秋香姐家的小书童

PHP は JS を直接使用した方が良いのではないでしょうか?

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート