Stampa da elettrone applicazione

Sto cercando di utilizzare il nodo della stampante da un elettrone applicazione, ma non appena mi aggiungi le linee di utilizzare la stampante, l’app si blocca giù.

Le console uscite di questo:

[1] 9860 segmentation fault (core dumped) node_modules/electron-prebuilt/dist/electron.

Questa è l’app che sto correndo. Ho aggiunto solo le linee di stampa per il semplice app di esempio fornito di elettroni documentazione:

var app = require('app');  //Module to control application life.
var BrowserWindow = require('browser-window');  //Module to create native browser window.
var printer = require('printer');

//Report crashes to our server.
require('crash-reporter').start();

//Keep a global reference of the window object, if you don't, the window will
//be closed automatically when the JavaScript object is GCed.
var mainWindow = null;

//Quit when all windows are closed.
app.on('window-all-closed', function() {
  //On OS X it is common for applications and their menu bar
  //to stay active until the user quits explicitly with Cmd + Q
  if (process.platform != 'darwin') {
    app.quit();
  }
});

//This method will be called when Electron has finished
//initialization and is ready to create browser windows.
app.on('ready', function() {
  //Create the browser window.
  mainWindow = new BrowserWindow({width: 800, height: 600});

  //and load the index.html of the app.
  mainWindow.loadUrl('file://' + __dirname + '/app/index.html');

  //Open the devtools.
  mainWindow.openDevTools();

  printer.printDirect({data:"print from Node.JS buffer" //or simple String: "some text"
      , printer:'HP-Deskjet-F4400-series' //printer name, if missing then will print to default printer
      , type: 'TEXT' //type: RAW, TEXT, PDF, JPEG, .. depends on platform
      , success:function(jobID){
          console.log("sent to printer with ID: "+jobID);
      }
      , error:function(err){console.log(err);}
  });


  //Emitted when the window is closed.
  mainWindow.on('closed', function() {
    //Dereference the window object, usually you would store windows
    //in an array if your app supports multi windows, this is the time
    //when you should delete the corresponding element.
    mainWindow = null;
  });
});

Mi manca qualcosa?
Ho provato il nodo della stampante e con successo ho stampato qualche testo senza senso.

InformationsquelleAutor leamasuero | 2015-08-28

 

3 Replies
  1. 8

    node-printer utilizza nativo di attacchi e secondo il docs:

    Nativo Nodo moduli sono supportati da Elettroni, ma dal momento che di Elettroni
    utilizza un altro V8 versione ufficiale Nodo, è necessario
    specificare manualmente la posizione di Elettroni di intestazioni edificio
    moduli nativi.

    Suppongo che è il motivo per cui si stanno ottenendo la seg fault. Provare a compilare il modulo contro l’elettrone intestazioni come indicato nella documentazione:

    npm install --save-dev electron-rebuild
    
    # Every time you run npm install, run this too
    ./node_modules/.bin/electron-rebuild
    • Fatto, senza successo. Questo è quello che succede ora: npm ERR! Failed at the [email protected] install script 'node-gyp rebuild'. npm ERR! This is most likely a problem with the printer package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get their info via: npm ERR! npm owner ls printer npm ERR! There is likely additional logging output above.
    • Vedere i documenti, c’è anche un altro modo, utilizzando il nodo-gyp. forse che aiuta.
  2. 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.')
            })
        })
    })

    Altrimenti È anche possibile utilizzare la seguente riga

    win.webContents.print({silent:true, printBackground:true})
    • writeFile('output.pdf'...) non funziona ma il fondo si fa!
  3. 3

    Il node-printer modulo di codice C++ in esso. Il che significa che è necessario compilare utilizzando la stessa versione di nodo di elettroni che si sta utilizzando. Questo è fattibile in realtà, ma è piuttosto complicato.

    D’altra parte, l’Elettrone ha già la stampa di API in esso:

    https://electronjs.org/docs/api/web-contents#contentsprintoptions-callback

    Se questa api non è sufficiente e si vuole ancora sfruttare il node-printer modulo fatemelo sapere e vi permetterà di modificare questa risposta con una risposta più su come forcella e fix node-printer in modo che sia elettrone compatibile.

    • avendo node-printer compatibile con elettroni richiede per la porta a NAN 2, è corretto?
    • Quello che voglio dire è che l’Elettrone ora usa node v4 e V8 api cambiato molto.
    • Sì, io la penso così. Ho avuto una situazione simile con un altro pacchetto e ho dovuto con la forchetta per implementare le modifiche di cui avevo bisogno per arrivare a costruire con elettroni. La maggior parte delle modifiche sono superficiale… la maggior parte di loro.
    • Il nodo-stampante non funziona per me su windows. È solo realizzabile se voglio stampare testo semplice o alcuni dati GREZZI. Comprare riesce a stampare in qualsiasi formato JPEG o PDF. Hai provato su windows ?
    • No non ho provato a tutti. Non so cosa le funzionalità sono.
    • io non vedo alcun stampa delle API, l’elettrone documentazione…
    • L’api spostato, ho aggiornato il link @Antonio
    • ho finito per trovare sotto webContents. grazie comunque
    • mitico barba btw

Lascia un commento