概要
印刷システムは 3 つの部分からなります。
これは、請求書、発注書、見積、製造指図の現品票など、ファイルとして届く生成ドキュメントとは異なります。印刷は出力を物理プリンターに送るもので、デフォルトでは、その出力は感熱式の ZPL ラベルです。
形式
ジョブがどのプリンターにルーティングされるかによって、レンダリングの方法が決まります。- ZPL は感熱式ラベルプリンターのコマンド言語で、部品ラベルと保管ラベルのデフォルトです。ZPL ラベルは、メディアサイズに ZPL の寸法がある場合にのみレンダリングされます。
- PDF は完全なドキュメントで、請求書や現品票を生成するのと同じ React-PDF エンジンで描画されます。かんばんカードはPDF のみのため、テンプレートで対応しない限り、ZPL 専用のプリンターに送ると失敗します。
ドキュメントタイプ
3 種類のラベルが定義されています(packages/web/printing/src/registry.ts の documentTypeRegistry)。
どのタイプを印刷できるかは、元のドキュメントによって決まります。出荷を転記すると製品ラベルが、保管ユニットをスキャンすると保管ラベルが作成されます。この検索は getDocumentTypesForSource が行います。
印刷を設定する
1. プリンタールートを追加する
プリンタールートは、1 台の物理プリンターを表します。設定 → 印刷 → プリンターに移動し、プリンターを追加を選択します。2. プリンターをテストする
すべてのルートにはテストアクションがあり、小さな ZPL ラベルをprinterUrl に直接送信するため、使用する前にプリンターに到達できることを確認できます。テストが使えるのは、メディアサイズのある ZPL ルートだけで、成功すると "Test label sent to printer"(テストラベルをプリンターに送信しました)と表示されます。
3. プリンターをコンテキストに割り当てる
ルートはプリンターであり、割り当てがそれをいつ使うかを決めます。設定 → 印刷 → 割り当てを開くと、ロケーションごとにブロックがあります。その中で、各コンテキストにプリンターを割り当てます(packages/web/printing/src/assignments.ts の printerContexts)。
各コンテキストの行には自動印刷スイッチもあり、オンの場合、対応する業務イベントが、誰もクリックしなくても印刷されます。getPrinterContextForSource が元のドキュメントのコンテキストを見つけ、resolveContextAssignment がフォールバックを適用するため、割り当てのないコンテキストは、ロケーションのデフォルトのプリンターを使います。
自動印刷
対応する業務イベントの後、Alforse はロケーションとコンテキストに対するプリンターを見つけ、autoPrint(未設定の場合はオンとして扱われる)を確認して、ジョブをキューに入れます。印刷の失敗が、それを引き起こした入荷、出荷、製造指図をブロックすることはありません。
ステーションを静かにするには、そのロケーションのコンテキストの行で自動印刷をオフにします。
手動で印刷する
関連する画面で印刷を選択するか、元のドキュメントを手動印刷ルート(/x/print)に送信します。リクエストを検証し、同じ種類のジョブをキューに入れます。
印刷の動作は、ロケーションによって異なります。
印刷ジョブキュー
ジョブのステータス
origin を記録します。
ジョブは、
sourceDocument、sourceDocumentId、読みやすい ID、contentType、送信先の printerUrl も保存します。
監視と再印刷
設定 → 印刷 → 印刷ジョブを開きます。テーブルは、ステータス、説明、ソース、タイプ、起源、時刻とともにリアルタイムで更新されます。行を展開すると、プリンターの URL、試行回数、タイムスタンプ、エラーが確認できます。行からは次の操作ができます。- 内容を表示:ZPL は Labelary でプレビューされ、PDF はインラインフレームで表示されます。
- 再印刷:
origin: "reprint"の新しいジョブが作成されます。 - 削除。
ラベルサイズ
メディアサイズは、固定のカタログ(packages/web/utils/src/labels.ts)から取得されます。label2x1、label4x2、メートル法の label100x50mm と label50x25mm、PDF 専用の avery5163 です。感熱式プリンターで印刷できるのは ZPL の寸法を持つサイズだけなので、Avery のような PDF 専用のサイズは使えません。
サイズは 2 か所で設定されます。
- 各プリンタールートは、そのプリンターにセットされたラベルに合わせて、独自の
mediaSizeIdを固定します。 - 文書テンプレート画面で設定する、会社のデフォルトの製品ラベルサイズ(
companySettings.productLabelSize)は、どのルートもサイズを設定していない場合に、対話型のラベルダウンロードルートで使用されます。
トラブルシューティング
ラベルが印刷されなかった
次の項目を順に確認してください。- ロケーションとコンテキストにプリンタールートが割り当てられており、その自動印刷スイッチがオンになっている。
- ルートに到達可能な
printerUrlがある。ない場合、ジョブはレンダリングされますが、配信できません。 - ジョブが設定 → 印刷 → 印刷ジョブで失敗になっていない。行を展開して
errorを読みます。