Как просмотреть PDF в электронном BrowserWindow? - PullRequest
0 голосов
/ 17 октября 2018

Итак, у меня есть это электронное приложение, и в одном из .html-файлов я связываю другой скрипт, который предоставляет некоторые служебные функции для программы, и один из них такой:

function openPDF(filePath){
    let pdfWindow = new electron.remote.BrowserWindow({
        icon: './build/icon.png',
        width: 1200,
        height: 800,
        webPreferences: {
            plugins: true
        }
    });

    pdfWindow.loadURL(url.format({
        pathname: filePath,
        protocol: 'file:',
        slashes: true
    }));

    pdfWindow.setMenu(null);

    pdfWindow.on("closed", function () {
        pdfWindow = null
    });
}

Так вотследует использовать встроенный PDF-просмотрщик Electron (который использует Chromium), чтобы открыть PDF в новом окне.Я использовал печально известную plugins: true, я пробовал большинство тысяч настроек, которые вы можете определить для BrowserWindow , но оно всегда открывает окно и затем начинает загружать файл вместо его отображения.

Я трижды проверил путь к файлу, «импорт» и т. Д., Обновил все, но не могу найти проблему.Электрон изначально поддерживает это с 1.6.4 , но у меня это не работает.

Помогите мне, переполнение стека, вы моя единственная надежда.

1 Ответ

0 голосов
/ 17 октября 2018

@ kartick правильно указал, что это ошибка, которая отключает плагины, несмотря на plugins: true.Он существует с версии 3.0.0 (18 сентября 2018 года) и остается исправленным сегодня: Проблема на GitHub .

Поскольку длительные проблемы с GitHub часто сбивают с толку Я обновлю этот ответ суть разработки.Вы также можете найти два обходных пути в конце ответа.

Обновления:

  1. 19 марта: Исправлениев пути .Я буду обновлять этот ответ.
  2. 19 мая: упомянутое выше исправление в настоящее время приостановлено в ожидании улучшенной поддержки расширений .
  3. 28 июня: улучшенной поддержки расширений не ожидаетсябыть там в ближайшее время.
  4. 16 июля: Исправление больше не разрабатывается.Цитата разработчика:

    Главное, с чем я столкнулся при попытке портировать через средство просмотра Chromium, это его зависимость от системы расширения Chromium.Electron поддерживает только часть этой системы, что затрудняет интеграцию средства просмотра.

  5. 25 июля: был достигнут значительный прогресс в улучшении поддержки расширений , который был объединен, и была создана последующая проблема отслеживания .Это увеличило вероятность продолжения работы над исправлением .

  6. 26 августа: Сейчас никто не работает над исправлением.Вы можете назначить вознаграждение за эту проблему на BountySource , если хотите быстро решить эту проблему.


Обходные пути:

  1. Вы можете заставить его работать путем понижения до последней версии 2.XX. Для этого вам нужно изменить devDependencies в package.json, который должен быть найден в папке вашего проекта.

    "devDependencies": {
        "electron": "^2.0.18"
    },
    
  2. Кроме того, вы можете вызвать систему, чтобы открыть файл.Он выберет программу по умолчанию, назначенную PDF-файлам:

    shell.openItem(fullPath);
    

    Просто убедитесь, что путь (fullPath) всегда правильно разрешен с чем-то вроде path.resolve(app.getAppPath(), filePath), так как он может измениться при сборке приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...