Pdf.js: Запуск pdf.js с электроном

Созданный на 30 мар. 2016  ·  4Комментарии  ·  Источник: mozilla/pdf.js

Привет,
Я пытаюсь интегрировать библиотеку pdf.js с электронным приложением. Основная причина этого - наличие в приложении программы просмотра PDF-файлов и возможность распечатать документ.

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

  1. Клонирование pdf.js в отдельный каталог и запуск _gulp generic_ и все, что я получил в каталоге сборки, я скопировал в каталог src в моем проекте.
  2. Включив модуль узла в мой проект отсюда: https://www.npmjs.com/package/pdfjs-dist-for-node

У меня следующие вопросы:

  • Следуя первому маршруту, я могу показать (в основном визуализировать) файл pdf (без элементов управления средством просмотра) на холсте на моей странице html с помощью этого кода:

</div> <canvas id="theCanvas"></canvas> <div>

     PDFJS.getDocument(pdfPath).then(function getPdfHelloWorld(pdf) {
            pdf.getPage(1).then(function getPageHelloWorld(page) {
              var scale = 1.5;
              var viewport = page.getViewport(scale);

              var canvas = document.getElementById('theCanvas');
              var context = canvas.getContext('2d');
              canvas.height = viewport.height;
              canvas.width = viewport.width;

              var renderContext = {
                canvasContext: context,
                viewport: viewport
              };
              page.render(renderContext);
            });
          });

Однако это лишь часть того, чего я хочу. Я хочу, чтобы средства просмотра были такими же, как в viewer.html. Итак, я попытался открыть новое окно напрямую с помощью viewer.html вот так:

var pdfPath = __dirname + '/pdfs/trial.pdf'; mainWindow.loadURL('file://' + __dirname + '/generic/web/viewer.html?file=' + pdfPath);

Я смог увидеть средство просмотра, но при загрузке файла pdf он выдает следующую ошибку в консоли:

Непойманный (в обещании) TypeError: PDFJS.getDocument не является функцией
в Object.pdfViewOpen как открытый
в webViewerInitialized (файл: ///.../src/generic/web/viewer.js: 7686: 26)

Я не могу понять, что я здесь делаю не так. Это рекомендуемый способ? Кроме того, если я хочу встроить всю эту программу просмотра в какой-либо холст или какой-то iframe, как я могу это сделать? Было бы неплохо иметь в проекте список API для выполнения определенных общих задач, таких как то, что я пытаюсь сделать. Извините, если он уже есть, и я не могу его найти.

  • Следуя второму маршруту, я смог включить узел узла; но меня беспокоит то, что он не обновляется часто, так как этот проект обновляется. Последний выпуск был год назад. И API там опять не было. Итак, я отказался от этого плана.

Был бы очень признателен, если бы кто-нибудь мог мне помочь здесь.

Заранее спасибо...

Конфигурация:

  • Веб-браузер и его версия: Electron
  • Операционная система и ее версия: OSX 10.10.5
  • Версия PDF.js: 0.8.0

Самый полезный комментарий

см. файл pdf.js или свойство PDFJS.version

В нем говорится, что версия: 1.4.174

Также я разобрался с проблемой. Я скопировал нужный материал из общего каталога; однако, когда я открываю окно с URL-адресом viewer.html; свойство окна должно иметь следующее:

webPreferences: { nodeIntegration: false }

И теперь он может нормально загружаться.

Спасибо за помощь, Юрий!

Все 4 Комментарий

Версия PDF.js: 0.8.0

Это действительно старая версия. Уже предварительно созданная версия из наших выпусков (или gulp generic one) будет работать нормально, за исключением того, что вы можете загрузить pdf в Uint8Array самостоятельно.

PDFJS.getDocument не является функцией

Это означает, что основная библиотека PDF.js (файл ./build/pdf.js) не была загружена.

package.json по-прежнему показывает 0.8.0.

package.json не содержит встроенной версии библиотеки, см. файл pdf.js или свойство PDFJS.version, чтобы узнать правильный номер версии.

Не могли бы вы сообщить мне, если я указываю не на ту?

Оба они должны быть идентичными. Вы должны использовать всю папку "generic /", чтобы у вас был pdf.js в нужном месте.

см. файл pdf.js или свойство PDFJS.version

В нем говорится, что версия: 1.4.174

Также я разобрался с проблемой. Я скопировал нужный материал из общего каталога; однако, когда я открываю окно с URL-адресом viewer.html; свойство окна должно иметь следующее:

webPreferences: { nodeIntegration: false }

И теперь он может нормально загружаться.

Спасибо за помощь, Юрий!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

smit-modi picture smit-modi  ·  3Комментарии

anggikolo11 picture anggikolo11  ·  3Комментарии

timvandermeij picture timvandermeij  ·  4Комментарии

zerr0s picture zerr0s  ·  3Комментарии

xingxiaoyiyio picture xingxiaoyiyio  ·  3Комментарии