首页 > 解决方案 > ELECTRON:图像文件(.png)在 Ubuntu 上静默打印

问题描述

我正在用 Electron 制作一个基于 Ubuntu 的照片打印程序。

在 Windows 上制作时,我将图像保存为 PNG,并使用以下代码调用 Windows 内置软件(shimgvw.dll)。

await execPromise(`rundll32.exe c:\\windows\\System32\\shimgvw.dll,ImageView_PrintTo /pt "${process.cwd()}\\saved_image.png" "MY_PRINTER_MODEL_NAME"`);

我应该在 Ubuntu 中做什么?

我想要实现的是通过按一个按钮来打印用户选择的已完成构图的照片。

当我进行搜索时,我只会得到 PDF 文件的结果。

我想知道是否有任何模块或命令。谢谢!

PS对不起我的英语不好:(

标签: javascriptubuntuelectron

解决方案


您可以从 Node.js、iojs 和 node-webkit 在 POSIX 和 Windows 操作系统上使用本机绑定打印机。

npm install printer --target_arch=ia32
npm install printer --target_arch=x64

假设您正在安装 1.4.5 电子版。请查看版本以获取支持的 Electron 版本

npm install printer --runtime=electron --target=1.4.5 --target_arch=x64
npm install printer --runtime=electron --target=1.4.5 --target_arch=ia32

用于安装后的构建

npm install -g node-gyp
npm install printer --msvs_version=2013  --build-from-source=node_printer

打印文件:

// use: node printFile.js [filePath printerName]
var printer = require("../lib"),
    filename = process.argv[2] || __filename;

console.log('platform:', process.platform);
console.log('try to print file: ' + filename);

if( process.platform != 'win32') {
  printer.printFile({filename:filename,
    printer: process.env[3], // printer name, if missing then will print to default printer
    success:function(jobID){
      console.log("sent to printer with ID: "+jobID);
    },
    error:function(err){
      console.log(err);
    }
  });
} else {
  // not yet implemented, use printDirect and text
  var fs = require('fs');
  printer.printDirect({data:fs.readFileSync(filename),
    printer: process.env[3], // printer name, if missing then will print to default printer
    success:function(jobID){
      console.log("sent to printer with ID: "+jobID);
    },
    error:function(err){
      console.log(err);
    }
  });
}

推荐阅读