javascript - Electron tulosta ilman valintaikkunaa (hiljainen tulostus)
Minun tarvitsee vain käyttää Electron.js:ää rakentaakseni työpöytäsovellukseni, käytän yksinkertaista BrowserWindowia ladatakseni verkkosivustoni sovelluksessa.
Lisäsin toiminnallisuutta, joka lataa ikkunan uudelleen, kun yhteysongelmia ilmenee, jotta kun internet taas kytketään päälle, sovellus lataa sivun uudelleen eikä näytä 'Sivua ei löytynyt'.
Verkkosivullani se vastaanottaa tilauksia ja tulostaa ne kuittitulostimeen, en halua, että tulostusikkuna tulee näkyviin, onko olemassa ratkaisua kuitin hiljaiseen tulostamiseen?
Tiedän tavan, miten tulostaa sen hiljaisesti Firefoxilla, mutta minun täytyy käyttää sitä nyt Electron-sovelluksessani.
koodini:
const electron = require('electron')
const app = electron.app
const BrowserWindow = electron.BrowserWindow
const path = require('path')
const url = require('url')
let mainWindow
function createWindow () {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
minWidth: 800,
minHeight: 600,
icon: __dirname + '/icon.ico'
})
mainWindow.loadURL(url.format({
pathname: path.join(__dirname, 'index.html'),
protocol: 'file:',
slashes: true
}))
mainWindow.on('closed', function () {
mainWindow = null
})
}
app.on('ready', createWindow)
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') {
app.quit()
}
})
app.on('activate', function () {
if (mainWindow === null) {
createWindow()
}
})Vastaus #1
On olemassa silent-vaihtoehto BrowserWindow.webContents.print-metodille:
Tulostaa ikkunan verkkosivun. Kun
silenton asetettu arvoontrue, Electron valitsee järjestelmän oletustulostimen, josdeviceNameon tyhjä, sekä käytetään oletusasetuksia tulostamiseen.Web-sivulla kutsuminen
window.print()on yhtä kuin kutsuminenwebContents.print({silent: false, printBackground: false, deviceName: ''}).
let win = new BrowserWindow(params);
win.webContents.print({silent: true});
Vastaus #2
En tiedä, auttaako tämä sinun erityistilanteessasi, mutta törmäsin ongelmaan, jossa minun piti tulostaa raakaa tekstiä pistematrisetulostimelle muutaman komentokoodin kera (Epson ESC/P) Electron-sovelluksesta, joka ajetaan Windowsissa. Lopulta tein niin, että kirjoitin tavallisen tekstin komentokoodeineen .txt-tiedostoon ja sitten annoin tiedoston Windowsin 'print'-komennolle. Se tulostaa hiljaisesti ja toimii loistavasti. Ainoa ongelma, joka sinulla saattaa olla, on se, että se syöttää loput sivusta ulos työn jälkeen, vaikka en tiedä, tekisikö kuittitulostin saman asian. Tässä on käyttämäni koodi:
var fs = require('fs');
var printString = "whatever text you need to print with optional ascii commands";
var printer = "lpt1";
var tmpFileName ="c:\tmp.txt";
fs.writeFileSync(tmpFileName,printString,"utf8");
var child = require('child_process').exec;
child('print /d:' + printer + ' "' + tmpFileName + '"');'printer'-muuttuja voi olla joko lpt1/lpt2 tai verkkotulostimen jako. Katso tulostuskomennon viite täältä:
https://learn.microsoft.com/fi-fi/windows-server/administration/windows-commands/print
En ole kokeillut sitä, mutta olen varma, että jotain vastaavaa voidaan järjestää Macille/Linuxille käyttämällä lpr-komentoa.
Joka tapauksessa, toivottavasti tästä on apua jollekulle. Käytin päivän yrittäen löytää nativi Electron-tavan tulostaa meidän vanhalla pistekirjoituslaitteella käyttäen tulostimien sisäänrakennettuja fontteja, ja kävi ilmi, että pelkkä yksinkertaisen Windows-komennon antaminen riitti.
