如何使用 MVC 应用程序中的 QZ 托盘将 HTML 页面直接打印到多台打印机

How to Print HTML page directly to multi printers using QZ Tray from an MVC app

提问人:Ghaith Bezem 提问时间:11/17/2023 最后编辑:tresfGhaith Bezem 更新时间:11/17/2023 访问量:36

问:

我正在从我的 MVC Web 应用程序尝试 QZ Tray

  • 我想在定义要打印的打印机后,立即直接从 JS 将我已经生成的 html 页面打印到多台打印机

  • 打印机正在打印白纸,文件名标题仅在顶部

我已经阅读了 QZ 快速入门并阅读了他们的几页文档并尝试了这个:

@{ Layout = null;}

<div>Print test Print test Print test Print test Print test Print test</div>

<script src="~/Scripts/jquery-3.5.1.min.js"></script>

<script src="~/Scripts/qz-tray.js"></script>

<script>
    $(document).ready(function (){
        qz.websocket.connect({ retries: 5, delay: 1 }).then(function () {
            return qz.printers.find("hp", { margins: 2, orientation: 'portrait' });              // Pass the printer name into the next Promise
        }).then(function (printer) {
            var config = qz.configs.create(printer, { scaleContent: false });       // Create a default config for the found printer
            var data = [{
                type: 'pixel',
                format: 'html',
                flavor: 'plain', // or 'plain' if the data is raw HTML
                data: 'http://localhost:27210/Home/View1',
                options: { pageWidth: 8.5 /* pageHeight: 11 */ }
            }]; return qz.print(config, data);
        }).catch(function (e) { console.error(e); });
    })
</script>
model-view-controller 打印 qz-tray

评论


答:

0赞 tresf 11/17/2023 #1

HTML 页面同时直接发送到多台打印机

从 2.1.0 开始(根据 qzind/tray/issues/161),您可以在数组中提供打印机,以便向每个打印机发送相同的作业。

// ...
var config1 = qz.configs.create("Printer 1", { scaleContent: false }); 
var config2 = qz.configs.create("Printer 2", { scaleContent: false });
var config3 = qz.configs.create("Printer 3", { scaleContent: false }); 
return qz.print([ config1, config2, config3 ], data);
// ...

仅顶部显示文件名标题的白皮书 (注释)代码上有什么问题,它没有打印HTML页面内容

如果要提供 URL,则应使用 ,而不是 .如果这仍然导致问题,请确保可以从隐身模式/隐私浏览访问该页面,因为 QZ 托盘需要对 HTML 内容进行公开访问。flavor: fileflavor: plain

// ...
            var data = [{
                type: 'pixel',
                format: 'html',
                flavor: 'file', // or 'plain' if the data is raw HTML
//              ^------ HERE
                data: 'http://localhost:27210/Home/View1',
                options: { pageWidth: 8.5 /* pageHeight: 11 */ }
            }]; return qz.print(config, data);
// ...

评论

0赞 Ghaith Bezem 11/17/2023
谢谢 Tresf,我将尝试在几台打印机上打印。实际上,这是问题的第二部分,任何机构都可以知道代码上有什么问题,它没有打印html页面内容
0赞 Ghaith Bezem 11/17/2023
我正在尝试打印包含代码本身的当前页面
0赞 tresf 11/17/2023
@GhaithBezem答案已更新。
0赞 Ghaith Bezem 11/18/2023
是的,谢谢 Tresf,我已经在我的代码版本中尝试了flavor: 'file',但它仍然打印一个白色页面,标题上有文件路径,对不起
0赞 Ghaith Bezem 11/18/2023
与隐身模式/隐私浏览相同,仍然打印带有标题的白页