本文介绍如何使用 [qqprinter][1] 这个 npm 包在前端页面上打印出来自 QQ 聊天记录的图片。
简介
qqprinter 是一个 npm 包,可以帮助我们将 QQ 聊天记录中的部分截图打印出来。它使用了 [WeChaty][2] 的 API 来获取 QQ 聊天记录中的消息图片,并使用 [html2canvas][3] 将图片转换为图像数据,最后使用 [escpos-image][4] 将图像数据转换为打印命令,通过打印机打印出来。
以下是使用 qqprinter 的步骤:
- 在你的项目中安装 qqprinter,运行
npm i qqprinter
在你的项目根目录下创建一个 image 文件夹,用来存放聊天记录中的图片。
在你的页面中引入 qqprinter,运行以下代码:
const { Print } = require('qqprinter'); const print = new Print();
现在你就可以使用 print
这个对象了。
使用
1. 登录 QQ
首先,我们需要使用 Wechaty 登录 QQ。在 print
对象中有一个 login
方法。该方法需要传入一个 QR 二维码对象,用于扫描登录。
const { print } = require('qqprinter'); const { generate } = require('qrcode-terminal'); const qrcode = generate('https://login.weixin.qq.com/l/JvmOgH2Drw=='); print.login(qrcode);
generate
方法来自于 qrcode-terminal,用于生成终端中的二维码。生成的二维码可以直接在终端中扫描。
2. 获取聊天记录中的图片
成功登录后,我们需要通过 Wechaty 获取聊天记录中的图片。在 print
对象中有一个 getMsg
方法,用于获取聊天记录中的消息。
const msg = await print.getMsg();
该方法会返回一个聊天消息对象,内部包含了聊天记录中的消息的一些信息,比如说文本内容、图片、语音等。
我们可以通过以下代码将消息中的图片保存到前面我们创建的 image
文件夹中:
-- -------------------- ---- ------- ----- -- - -------------- ----- --- - ----- --------------------- -- ---- --- -------- ------------- --------- - ------ --- ----------------- ------- -- - ----- ------- - -------------- ------------------ - -- -------------------- --- ---- - ---------- -------------------------------------- ------- - ----- ---------- - ------------------------------- -------------------------- ---------------------- ------- -- - -------------- --- ---------------------- -- -- - ---------- --- --- ------------------- ------- -- - -------------- --- --- - ----- ------------- ------------------
3. 打印图片
有了图片后,现在我们可以使用 qqprinter 将图片打印出来。在 print
对象中有一个 printImage
方法,用于将图片打印出来。
await print.printImage('./images/1.png');
打印命令会直接发送到打印机,打印机将该命令执行后,就可以打印出图片了。
示例代码
以下是一个完整的示例代码,用于获取 QQ 聊天记录中的一张图片,并将该图片打印出来。
-- -------------------- ---- ------- ----- -- - -------------- ----- - -------- - - --------------------------- ----- - ----- - - --------------------- ----- ----- - ----------------- ----- -------- ------------- --------- - ------ --- ----------------- ------- -- - ----- ------- - -------------- ------------------ - -- -------------------- --- ---- - ---------- -------------------------------------- ------- - ----- ---------- - ------------------------------- -------------------------- ---------------------- ------- -- - -------------- --- ---------------------- -- -- - ---------- --- --- ------------------- ------- -- - -------------- --- --- - ------ -------- -- - ----- ----- - --- -------- ----- ------ - ------------------------------------------------------- ----- -------------------- ----- --- - ----- --------------- ----- --- - ----- --------------------- ----- ------------- ------------------ ----- -------------------------------- - ------------------------------------------------------------------------------ -------- ------------------------------------------------------------------------------------------------------------------------