Привет,
Я пытаюсь интегрировать библиотеку pdf.js с электронным приложением. Основная причина этого - наличие в приложении программы просмотра PDF-файлов и возможность распечатать документ.
Прежде всего, я попытался интегрировать библиотеку двумя способами:
У меня следующие вопросы:
</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 для выполнения определенных общих задач, таких как то, что я пытаюсь сделать. Извините, если он уже есть, и я не могу его найти.
Был бы очень признателен, если бы кто-нибудь мог мне помочь здесь.
Заранее спасибо...
Конфигурация:
Версия PDF.js: 0.8.0
Это действительно старая версия. Уже предварительно созданная версия из наших выпусков (или gulp generic
one) будет работать нормально, за исключением того, что вы можете загрузить pdf в Uint8Array самостоятельно.
PDFJS.getDocument не является функцией
Это означает, что основная библиотека PDF.js (файл ./build/pdf.js) не была загружена.
Спасибо за оперативный ответ Юрий.
Это действительно старая версия.
Я не уверен, как я получил эту старую версию. Я не сделал ничего особенного, кроме git clone git://github.com/mozilla/pdf.js.git
чтобы получить проект. Однако, если я вижу здесь, package.json по-прежнему показывает 0.8.0.
Уже предварительно созданная версия из наших выпусков (или общая версия gulp) будет работать нормально, за исключением того, что вы можете загрузить pdf в Uint8Array самостоятельно.
Вы говорите об этой готовой молнии? .
Это означает, что основная библиотека PDF.js (файл ./build/pdf.js) не была загружена.
После выполнения gulp generic я получил pdf.js и pdf.worker.js в двух местах. Один за пределами общего каталога и один внутри общего каталога / build /. Сейчас я указываю на внешний. Не могли бы вы сообщить мне, если я указываю не на ту?
Еще раз спасибо за помощь!
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
}
И теперь он может нормально загружаться.
Спасибо за помощь, Юрий!
Самый полезный комментарий
В нем говорится, что версия: 1.4.174
Также я разобрался с проблемой. Я скопировал нужный материал из общего каталога; однако, когда я открываю окно с URL-адресом viewer.html; свойство окна должно иметь следующее:
webPreferences: { nodeIntegration: false }
И теперь он может нормально загружаться.
Спасибо за помощь, Юрий!