lea*_*ero 15 javascript printing node.js electron
我正在尝试从电子应用程序中使用节点打印机,但是一旦我添加了使用打印机的行,应用程序就崩溃了.
控制台输出:
__CODE__
这是我正在运行的应用程序.我只在电子文档中提供的简单应用示例中添加了打印行:
[1] 9860 segmentation fault (core dumped) node_modules/electron-prebuilt/dist/electron.
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?我自己尝试了节点打印机,并成功打印了一些乱码文本.
node-printer使用本机绑定并根据文档:
Electron支持本机节点模块,但由于Electron使用的是官方节点不同的V8版本,因此在构建本机模块时必须手动指定Electron标头的位置.
我想这就是为什么你得到了seg fault.尝试针对电子标题构建模块,如文档中所述:
npm install --save-dev electron-rebuild
# Every time you run npm install, run this too
./node_modules/.bin/electron-rebuild
Run Code Online (Sandbox Code Playgroud)
该node-printer模块中有 C++ 代码。这意味着您必须使用与电子使用的节点版本相同的节点来编译它。这实际上是可行的,但它非常复杂。
另一方面,Electron 已经有打印 API 了:
https://electronjs.org/docs/api/web-contents#contentsprintoptions-callback
如果这个 api 不够用,而你仍然想利用该node-printer模块,请告诉我,我将编辑此响应,并提供有关如何分叉和修复node-printer以使其与电子兼容的更长答案。
小智 5
app.on('ready', () => {
let win = new BrowserWindow({width:800, height:600,resizable:false})
win.loadURL('file://'+__dirname+'/index.html')
win.webContents.on('did-finish-load', () => {
win.webContents.printToPDF({ marginsType:2, pageSize:"A3", landscape:false }, (error, data) => {
if (error) throw error
fs.writeFile('output.pdf', data, (error) => {
//getTitle of Window
console.log(win.webContents.getTitle())
//Silent Print
if (error) throw error
console.log('Write PDF successfully.')
})
})
})
Run Code Online (Sandbox Code Playgroud)
否则您也可以使用以下行
win.webContents.print({silent:true, printBackground:true})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36935 次 |
| 最近记录: |