在NW.js里面使用node-printer

2023-10-29

0、写在前面的一些提示

  • 不要使用太高版本的 NW.js 以及 Node.js,因为 node-printer 会有兼容性问题,目前笔者测试到 node-printer 最高只能在 0.43.x 版本以及低于这个版本的 NW.js 里面正常运行,高于这个版本就会在安装 node-printer 时报错或者程序运行时直接崩溃闪退。并且使用的 Node.js版本应该与 NW.js 里面的 Node.js 版本一致,可以在双击 nw.exe 查看 NW.js 里面的 Node.js 版本,如图:
    在这里插入图片描述
    在这里插入图片描述

1、下载Nw.js

  • https://dl.nwjs.io/ 里面挑选心仪的版本下载,里面有各个操作系统的 SDK 版本以及 NORMAL 版本。下载完解压即可。例如:
    在这里插入图片描述

2、安装Visual C++ Build Tools 以及 Python 环境

  • 为什么需要安装Visual C++ Build Tools 以及 Python 环境?
  • 因为要使用 node-printer 的话需要 node-gyp 进行 rebuild,才能在 NW.js 里面使用,不然无法正常使用
  • 如果电脑有安装过 Visual Studio 那就可以跳过这一步,如果没有那就需要安装。可以使用 windows-build-tools 来安装这个环境:npm install --global windows-build-tools
  • 这个 install 可能会比较久
  • 使用 windows-build-tools 安装可能会出现的问题以及缺陷如下:
    1、安装的 Python 的版本是 2.7 的,但是事实上最新的 node-gyp 已经要求是 3.x 版本了,我们需要去安装旧版本的 node-gyp。
    2、安装完 Python 后依然需要手动配置环境变量,不然无法检测到 Python 环境
    3、windows-build-tools 官网上说 npm 安装完会自动执行 windows-build-tools 来给我们安装 Visual C++ Build Tools 以及 Python2.7 环境,但是有时候安装完并没有执行,这时候我们需要到 path/node_modules/windows-build-tools 目录里执行 node ./dist.index.js
    4、安装 Visual C++ Build Tools 以及 Python2.7 环境时,可能会发生卡住的情况如下图:
    在这里插入图片描述
    这个时候只要去到 C:\Users\用户.windows-build-tools 下双击打开 vs_BuildTools.exe,进入之后勾选 Node.js MSBuild 、Visual C++ Build Tools 支持,然后下载安装即可
    5、如果电脑没有 .NET Framework 的环境,顺便下载安装一下:https://dotnet.microsoft.com/download/visual-studio-sdks
  • 如果不使用 windows-build-tools 安装,可以自行去 Visual C++ Build Tools 以及 Python 官网自行下载安装

3、安装node-gyp

4、安装node-printer

  • 使用npm安装:npm install printer

5、重新构建 node-printer

  • 进入 project_path/node_modules/printer 目录在里面执行重新构建的命令:node-gyp rebuild ,显示如下图,即为 rebuild 完成:
    在这里插入图片描述

6、完成了以上所有步骤之后,就可以在 NW.js 里面快乐的使用 node-printer 操作打印机了

  • 可以使用如下代码进行测试
<script>
    let printer = require("printer")
    let util = require('util')
    console.log("installed printers:\n"+util.inspect(printer.getPrinters(), {colors:true, depth:10}));
</script>
  • 控制台输出了打印机信息就证明可以正常使用了,例如:
    在这里插入图片描述

参考链接 & 一些有用的链接

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在NW.js里面使用node-printer 的相关文章

  • 从 thymeleaf 获取数据到模态引导程序、jquery

    我正在尝试获取模态视图的 id 这是为了更新 onclick 元素 但我找不到方法 知道如何为 boostrap 5 完成此操作 或我可以用其他方法吗 谢谢 tr a inactivate a div class modal fade mo
  • 将 OoXml 插入单词抛出错误:未知

    我一直在尝试通过office js将OOXML插入到word文档的正文内容中insertOoXML 方法 我什至尝试过最简单的实现 认为我在尝试替换 XML 本身中的 fieldCodes 时做了一些不正确的事情 所有结果都是这样Error
  • 在 javascript/jquery 中将光标更改为等待

    当调用函数时 如何让光标更改为此加载图标以及如何将其更改回 javascript jquery 中的普通光标 在你的 jQuery 中使用 body css cursor progress 然后又恢复正常 body css cursor d
  • 关闭选项卡时要求确认[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我在某些浏览器上关闭页面时 我希望出现一个消息框 并询问我是否真的要关闭页面 有两个按钮 如果我单击No那么这个标签就不会被关闭 我怎样
  • jquery.find() 可以只选择直接子项吗?

    我应该向 jQuery find 提供什么参数来选择元素子元素而不选择其他元素 我不能用 gt 引导选择器 而用 将选择所有后代 而不仅仅是直接子代 我知道 jQuery children 但这是一个库 因此用户能够提供自己的选择器 并且我
  • Web 串行 API - 未捕获(承诺中)DOMException:无法打开串行端口/所需成员 baudRate 未定义

    下面的代码可以在我的 Xubuntu 机器上运行 但现在我在 Kubuntu 上 它不再工作了 它不会打开端口 Arduino IDE 工作正常 可以向开发板写入代码 并且我可以在 Chrome 中选择设备 Arduino Uno 但当我尝
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • Meteor:应用程序无法在 0.9.1.1 版本上运行

    出现类似错误 Error TypeError undefined is not a function evaluating Template create anonymous function iron dynamic template j
  • 使用 Angular 下载具有动态 src 的脚本

    Angular 提供了通过动态名称动态加载模板的方法ng include 该部分中的内联 JS 和 CSS 可以正常加载 但没有一个好的方法来下载带有动态 url 的脚本 我们需要下载脚本 相对于调用它们的 html 部分的路径 即我们有一
  • 如何抑制窗口鼠标滚轮滚动...?

    我正在开发嵌入页面中的画布应用程序 我有它 因此您可以使用鼠标滚轮放大绘图 但不幸的是 这会滚动页面 因为它是文章的一部分 当我在 dom 元素上滚动鼠标滚轮时 是否可以阻止鼠标滚轮在窗口上滚动 附加鼠标滚轮 不是 Gecko DOMMou
  • 可以使用 jQuery 或 Javascript 将图片的特定部分用作链接吗?

    我有这个想法 将图片 而不是文本 的各个部分链接到不同的页面或网站 并且我想在不实际创建不同的照片并将它们彼此靠近的情况下完成 这样看起来就像是一张完整的图片 这里有人知道如何使用 JavaScript 的变体 例如 jQuery 或纯 J
  • 标签获取 href 值

    我有以下 html div class threeimages a img alt Australia src Images Services 20button tcm7 9688 gif a div class text h2 a hre
  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • 为 illustrator 导出脚本以保存为 web jpg

    任何人都可以帮我为 illustrator CC2017 编写一个脚本 将文件以 JPG 格式导出到网络 旧版 然后保存文件并关闭 我有 700 个文件 每个文件有 2 个画板 单击 文件 gt 导出 gt 另存为 Web 旧版 然后右键文
  • HTML 离线应用程序缓存,列出下载的文件

    作为我正在构建的离线 Web 应用程序的加载屏幕的一部分 使用缓存清单 http developer apple com library safari documentation iPhone Conceptual SafariJSData
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 为什么 jquery 没有检测到单选按钮未被选中的情况? [复制]

    这个问题在这里已经有答案了 可能的重复 JQuery radioButton change 在取消选择期间不会触发 https stackoverflow com questions 5176803 jquery radiobutton c
  • fullCalendar 未显示正确的结束日期

    我正在看调试页面 http jsbin com wukofacaxu edit js outputFullCalendar 官方网站的 我想安排一个活动时间为 22 09 2015 至 30 09 2015 dd mm yyyy 但它只显示
  • 如何从图像输入中获取 xy 坐标?

    我有一个输入设置为图像类型

随机推荐

  • Kubernetes入门

    Kubernetes入门 一 Kubernetes是什么 首先 它是一个全新的基于容器技术的分布式架构领先方案 这个方案虽然还很新 但是它是谷歌十几年依赖大规模应用容器技术的经验积累和升华的一个重要成果 实现资源管理的自动化 以及跨多个数据
  • PyCharm配置解释器

    文章目录 一 Python解释器 Python Interpreter 是什么 二 添加解释器的步骤 1 单击 Settings 2 倒三角 点击 Show All 3 点击 4 点击 Existing environment 5 选中 p
  • java中的锁池和等待池

    在java中 每个对象都有两个池 锁 monitor 池和等待池 wait notifyAll notify 三个方法都是Object类中的方法 锁池 假设线程A已经拥有了某个对象 注意 不是类 的锁 而其它的线程想要调用这个对象的某个sy
  • qmake prl TEMPLATE=subdir之错误小记

    最近 在使用qmake prl和TEMPLATE subdir时犯了一个错误 记录之以便以后查看 项目结构 project pro main main pro lib lib pro project pro中写的是 TEMPLATE sub
  • 【MySQL】 MySQL 导出数据库

    1 概述 转载 MySQL 导出数据库 仅供自己学习 这篇文章有趣 我看的是A文章 然后A转载的是B 然后B转载的是C 然后C转载的是D 我这里直接转载了D 主要是确实好用 在没有工具的情况下 MySQL备份和还原 都是利用mysqldum
  • golang怎么让string转int64

    在 Go 语言中 可以使用内置函数 strconv ParseInt 将字符串转为 int64 类型 具体用法如下 s 123456 i err strconv ParseInt s 10 64 if err nil 可能字符串 s 不是合
  • 剑指Offer - 面试题12:矩阵中的路径

    题目 请设计一个函数 用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径 路径可以从矩阵中的任意一格开始 每一步可以在矩阵总向左 右 上 下移动一格 如果一条路径经过了矩阵的某一格 那么该路径不能再次进入该格子 如 在下面的3 4的
  • 增量式PID vs 位置式PID: 选择最佳的PID控制策略

    增量式PID和位置式PID是两种常见的PID控制器实现方法 它们之间的区别主要在于反馈信号的处理方式和输出计算方式 反馈信号处理方式 增量式PID 增量式PID控制器使用系统输出值与前一时刻的输出值之差作为反馈信号 它将当前的误差值与前一时
  • 第五篇 如何调用驱动接口,完成互操作

    1 如何调用驱动功能 1 编写调用驱动的应用程序 1 1 定义驱动设备接口 以及调用接口的控制码 例如 DEFINE GUID GUID DEVINTERFACE SampleDriver 0xc459a9ec 0xb463 0x4838
  • Keras标准的模型训练、验证以及评估测试

    from keras models import Model Sequential from keras layers import Input Conv2D GlobalAveragePooling2D Dropout Dense Fla
  • 车祸现场~线上突然宕机,一条订单消息丢失了...

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 一 写在前面 之前写过一篇文章 RabbitMQ是如何收发消息的 通俗易懂 我们用一个简单易懂的电商场景给大家引入说明了一个消息中间件的使用场景 同时 我们还基于Ra
  • idea项目中的idea文件如何隐藏,以及不小心隐藏之后如何显示idea文件夹

    由于我们写项目时 发现了idea文件夹有时需要隐藏 或者隐藏后无法显示 接下来我就告诉你们 打开file settings editor gt file types 选择 gitignore 再那一栏的后面输入 idea 点击应用 点击ok
  • NoSQL 概念

    http www infoq com cn news 2011 01 nosql why 写道
  • shell中的变量

    变量 shell中预设的变量都是大写的 变量就是使用一个较简单的字符串来替代某些具有特殊意义的设定以及数据 可以使用echo命令显示变量的值 echo PWD echo PATH 另外可以使用env命令列出全部系统预设的系统环境变量 不同登
  • 华为云云耀云服务器L实例评测|深度体验云耀云服务器购买和Ubuntu环境性能压力评测

    文章目录 步骤一 云耀云服务器L实例配置选型 步骤二 购买云耀云服务器L实例 购买关键须知 购买流程体验 步骤三 轻松上手远程登录云耀云服务器L实例 步骤四 对云耀云服务器L实例进行压力测试 第一项测试 CPU压力测试 第三项测试 云耀云服
  • redis根据指定端口号方式访问redis服务端!

    以默认的方式进入 端口号 6379 指定端口号进入客户端 端口号 6378 此服务器安装了两个redis服务端 害老子去一个没存数据的redis服务器里刷缓存
  • PandoraBox版本及已安装软件包

    主机名 PandoraBox 7FBB 型号 Netgear R6220 固件版本 PandoraBox 19 02 2019 02 01 git 93f2639a7 LuCI Master git 19 026 77036 498ca21
  • ThinkPHP实现凯撒密码加密和解密

    ThinkPHP实现凯撒密码加密和解密 在密码学中 恺撒密码 英语 Caesar cipher 或称恺撒加密 恺撒变换 变换加密 是一种最简单且最广为人知的加密技术 它是一种替换加密的技术 明文中的所有字母都在字母表上向后 或向前 按照一个
  • CSS 类选择器的特殊使用-多类名

    title CSS 类选择器的特殊使用 多类名 CSS 类选择器的特殊使用 多类名概念 一个标签有多个名字 多类名的使用方式 示例代码
  • 在NW.js里面使用node-printer

    0 写在前面的一些提示 不要使用太高版本的 NW js 以及 Node js 因为 node printer 会有兼容性问题 目前笔者测试到 node printer 最高只能在 0 43 x 版本以及低于这个版本的 NW js 里面正常运