Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

163
Views
Abrir pdf en nueva ventana de electrones

Tengo una aplicación angular que tiene algunos botones para descargar datos PDF a la PC. Convertí la aplicación web en una aplicación de escritorio con electron. Pero la funcionalidad para abrir documentos en pestañas nuevas ( window.open(url, "_blank"); ) no funciona con electron.

Probé con mainWindow.webContents.setWindowOpenHandler(...) pero esto solo abrirá una ventana en blanco y un diálogo con dónde guardar el archivo...

Lo más cerca que llegué a mostrar una nueva ventana con electron con PDF dentro es usar el siguiente código:

 mainWindow.webContents.session.on('will-download', (event, item, webContents) => { my_url = app.getPath("temp") + "/" + item.getFilename(); log.info(`item: ${item.getFilename()}\tURL: ${my_url}`); item.setSavePath(my_url); item.once('done', (event, state) => { let subWindow = new BrowserWindow({ title: item.getFilename(), x: width - mWidth - 3, y: height - mHeight - 3, width: mWidth, height: mHeight, minWidth: mWidth, minHeight: mHeight, useContentSize: false, icon: __dirname + '/src/logo.ico', minimizable: false, maximizable: true, fullscreen: false, frame: true, resizable: true, movable: true, alwaysOnTop: false, webPreferences: { nodeIntegration: true, zoomFactor: 1.0 } }); subWindow.removeMenu(null); subWindow.loadURL(my_url); }); });

Básicamente, esto guarda el documento en la carpeta temporal del usuario y luego lo muestra dentro de una ventana, pero por eso crea 2 ventanas, 1 vacía y 1 con el archivo descargado.

Mi pregunta es, ¿cómo podría abrir mi documento dentro de una nueva ventana?

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Después de un tiempo, encontré una solución que funciona bien por ahora:

 mainWindow.webContents.session.on('will-download', (event, item, webContents) => { my_url = app.getPath("temp") + "/" + item.getFilename(); log.info(`item: ${item.getFilename()}\tURL: ${my_url}`); item.setSavePath(my_url); item.once('done', (event, state) => { let w = BrowserWindow.getAllWindows().reduce((max, current) => max.id > current.id = max : current); w.loadUrl(my_url); }); });

Básicamente, la ventana principal obtiene el valor de ID 1 y todas las demás ventanas creadas serán n+1. Así que con esto pondré los datos del PDF en la última ventana creada.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!