[英]Open pdf in new electron window
我有一個 Angular 應用程序,其中包含一些用於將 PDF 數據下載到 PC 的按鈕。 我使用電子將網絡應用程序轉換為桌面應用程序。 但是在新選項卡中打開文檔的功能( window.open(url, "_blank");
)不適用於電子。
我嘗試使用mainWindow.webContents.setWindowOpenHandler(...)
但這只會打開空白窗口和對話框,其中包含保存文件的位置...
我來顯示一個帶有 PDF 電子的新窗口的關閉是使用下面的代碼:
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);
});
});
因此,這基本上將文檔保存到用戶的臨時文件夾,然后將其顯示在一個窗口中,但這就是為什么它創建 2 個窗口,1 個為空,1 個帶有下載的文件。
我的問題是,我怎樣才能在新窗口中打開我的文檔?
一段時間后,我找到了一個現在可以正常工作的解決方案:
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) => {
BrowserWindow.getAllWindows().forEach(w => {
if (w.id != 1) {
w.loadURL(my_url);
}
});
});
});
基本上,主窗口的 ID 值為 1,創建的每個其他窗口都是 n+1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.