Я хочу наложить интерактивность на текстовые элементы PDF-файла, представленного как pdf.js
.
. Подход, который я думаю, заключается в добавлении Javascript вызовов к <spans>
отображается в текстовом слое <div>
, который pdf.js
добавляет поверх <canvas>
для включения выделения и выделения текста.
Я начинаю с шаблона gh-pages.zip
, добавляя код в app. js Метод PDFViewerApplication.run () примерно так:
run(config) {
this.initialize(config).then(function() {
webViewerInitialized();
console.log(PDFViewerApplication);
PDFViewerApplication.pdfDocument.getPage(1);
PDFViewerApplication.pdfViewer.viewer.children[1].outerHTML =
'...<span style="left: 72px; top: 98.5212px; font-size: 11.9552px; font-family: sans-serif; transform: scaleX(0.895184);" onclick="console.log(\'Hence, recording and compiling a trace\')">Hence, recording and compiling a trace</span>...';
});
},
pdfDocument
равен null
, поэтому строка getPage
возвращает:
Uncaught (в обещании) TypeError: Невозможно прочитать свойство 'getPage' с нулевым значением в eval (приложение. js: 481)
children[1]
равно undefined
, включая, если Я прокручиваю на нужную страницу, а затем refre sh (pdf. js автоматически прокручивается в то же место, которое отображалось в последний раз).
Я предполагаю, что pdfDocument
и children
могут быть заполнены асинхронно, но я не знаю, как ждать, и я предполагаю, что есть лучший способ редактировать текстовый слой <spans>
?