- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我一直在寻找一种在客户端从 Web 打印的解决方案(https://medium.com/@yehandjoe/angular-2-raw-printing-service-56614d358754)是我一直关注的,它建议使用 qz 托盘来访问打印机。我已经按原样复制了代码,但它不起作用。
每当执行函数 getprinters() 时,它都会说“qz 未定义”
我已经使用这些 npm 命令导入了包
npm 安装 qz-tray sha ws
npm install rsvp,这是我的打印机服务代码:
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromPromise';
import 'rxjs/add/observable/throw';
import 'rxjs/add/operator/map';
declare var qz: any;
@Injectable()
export class PrinterService {
constructor() { }
errorHandler(error: any): Observable<any> {
return Observable.throw(error);
}
// Get list of printers connected
getPrinters(): Observable<string[]> {
return Observable
.fromPromise(qz.websocket.connect().then(() => qz.printers.find()))
.map((printers: string[]) => printers)
.catch(this.errorHandler);
}
// Get the SPECIFIC connected printer
getPrinter(printerName: string): Observable<string> {
return Observable
.fromPromise(qz.websocket.connect().then(() => qz.printers.find(printerName)))
.map((printer: string) => printer)
.catch(this.errorHandler);
}
// Print data to chosen printer
printData(printer: string, data: any): Observable<any> {
// Create a default config for the found printer
const config = qz.configs.create(printer);
return Observable.fromPromise(qz.print(config, data))
.map((anything: any) => anything)
.catch(this.errorHandler);
}
// Disconnect QZ Tray from the browser
removePrinter(): void {
qz.websocket.disconnect();
}
如果我做错了,请纠正,否则我将非常感谢任何其他替代解决方案
最佳答案
看来您需要将 qz 托盘导入您的供应商。
我使用了SHA.js:https://www.npmjs.com/package/sha.js用于加密和使用原生 promise 。
所以我将以下行添加到现有导入文件下方的文件顶部:
import * as shajs from 'sha.js';
import * as qz from 'qz-tray';
为 QZ 设置 SHA
记得告诉 QZ 使用新的 sha.js 包:
qz.api.setSha256Type(function (data) {
return shajs('sha256').update(data).digest('hex')
});
为 QZ 设置原生 promise
记得告诉 QZ 使用新的 sha.js 包:
qz.api.setPromiseType(function (resolver) {
return new Promise(resolver);
});
关于typescript - qz 未定义 qz_tray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48181466/
我尝试使用 qz 托盘打印标签,我的技术规范是: React 网络应用 从API获取数据,然后将其渲染为html元素,使用html2pdf.js将其转换为pdf 将 pdf 转换为 base64 字符
我正在使用 jZerba 打印插件进行 POS 发票打印,我创建了一个 ftl 并将其发送到 jZebra HTML 打印,一切都按预期工作,但是当涉及多个页面时,它只打印第一页,其他页面得到 tri
我一直在寻找一种在客户端从 Web 打印的解决方案(https://medium.com/@yehandjoe/angular-2-raw-printing-service-56614d358754)
我正在尝试使用 QZ-Tray 打印条码但是我似乎找不到一个很好的例子,我试过这里的代码 https://groups.google.com/forum/#!topic/qz-print/5ybFBj
我正在尝试使用 QZtray 2.0 打印 HTML 文件。文件正在页面左侧打印。我也设置了高度和宽度,但同样的问题。 function printHTML() { var printData
我正在尝试将 sql.qz 文件上传到 phpmyadmin 上,但我不断收到此错误。我使用 Xampp 创建了一个离线网站,但现在当我上传它时却不允许我上传。我拥有所有特权,我的房东甚至与我核实。任
测验的代码位于名为 tview 的 javasource 包中 package tview.quiz; import java.awt.*; import java.awt.event.*; impo
我正在尝试使用 Java 插件从浏览器打印到票据打印机的原始打印。我已经用 HTML 和 Javascript 编写了一个测试程序,该程序运行正常,但现在我正在尝试将代码传输到 php 脚本,以便在更
我有一个带有 html 标签的 php 页面 Invoice Print body {font-
我尝试使用 qz-print 和 EPSON - TM-T20II 打印文件夹中的多个 html 文件,但似乎不起作用。 这是我使用的脚本示例: function printPages() {
如何正确抑制 localhost wants to access connected printers Untrusted Website 访问打印机时的模态? 我已尝试通过此 OpenSSL 命令创
我们都知道 NPAPI 将在几个月内从 Chrome 中完全删除。 有什么可以替代 Jzebra/QZ Java 插件将原始打印(发送原始 ESC/P 命令)到 POS 打印机? 是否有 Chrome
过去几天我在谷歌上搜索,但在网络上的任何地方都找不到相关的解决方案。 我想使用安装在我的 win7 32 位桌面上的 qz 托盘通过 Google 脚本编辑器中的代码从 google 电子表格打印到通
我是一名优秀的程序员,十分优秀!