簡體   English   中英

在新的電子窗口中打開 pdf

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM