Qt 5.8 и ошибка Pdf.js

У меня проблема с pdf.js и Qt 5.8, я попытался сделать тот же код в этой ссылке Использование pdf.js с Qt5.8 в моем приложении, но он не работает, я не знаю, почему, Qt показать мне это сообщение о JS:

msgstr «js: Uncaught TypeError: Невозможно прочитать свойство ‘PDFJS’ из неопределенного».

это мой код в главном окне:

QWebEngineView *view;
QString pdfFileURL;

QString pathToPDFjs = QString("file:///"+qApp->applicationDirPath()+"/libraries/PDF/viewer.html");

pdfFileURL = "file:///C:/Users/Administrateur/Desktop/CV.pdf";

view = new QWebEngineView();
this->setCentralWidget(view);

view->load(QUrl::fromUserInput(pathToPDFjs + QString("?file=") + pdfFileURL));
view->show();

0

Решение

Я бы порекомендовал скачать исходный код с Вот.

Затем скопируйте весь файл в папку в вашем проекте (в моем случае 3rdParty):

.
├── 3rdParty
│   └── pdfjs-1.7.225-dist
│       ├── build
│       │   ├── pdf.js
│       │   └── pdf.worker.js
│       ├── LICENSE
│       └── web
│           ├── cmaps
│           ├── {another files}
│           ├── viewer.css
│           ├── viewer.html
│           └── viewer.js
├── CV.pdf
├── main.cpp
├── mainwindow.cpp
├── mainwindow.h
├── mainwindow.ui
└── pdfjsExample.pro

Другая рекомендация — создать команду в .pro, чтобы вы могли скопировать библиотеку в сторону исполняемого файла и не иметь проблем с расположением папки (где CV.pdf это PDF, который я использую, чтобы сделать тест).

COPY_CONFIG = 3rdParty CV.pdf
copy_cmd.input = COPY_CONFIG
copy_cmd.output = ${QMAKE_FILE_IN_BASE}${QMAKE_FILE_EXT}
copy_cmd.commands = $$QMAKE_COPY_DIR ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}
copy_cmd.CONFIG += no_link_no_clean
copy_cmd.variable_out = PRE_TARGETDEPS
QMAKE_EXTRA_COMPILERS += copy_cmd

И код будет выглядеть так:

QWebEngineView *view;
QString pdfFileURL;

QString pathToPDFjs = QString("file:///%1/%2")
.arg(QDir::currentPath())
.arg("3rdParty/pdfjs-1.7.225-dist/web/viewer.html");

pdfFileURL = QString("file:///%1/%2").arg(QDir::currentPath()).arg("CV.pdf");

view = new QWebEngineView();
setCentralWidget(view);

QUrl url = QUrl::fromUserInput(pathToPDFjs + QString("?file=") + pdfFileURL);

view->load(url);

ПРИМЕЧАНИЕ: измените applicationDirPath на CurrentPath, чтобы при перемещении исполняемого файла в другое место я не создавал проблем, чтобы приложение работало правильно, папка 3rdParty и наш исполняемый файл должны быть вместе. Полный код Вот.

Выход:

введите описание изображения здесь

Если вы хотите скрыть кнопку печати и кнопку открытия, вы должны прокомментировать следующие строки:

viewer.html [строка 178]

<!--button id="openFile" class="toolbarButton openFile hiddenLargeView" title="Open File" tabindex="32" data-l10n-id="open_file">
<span data-l10n-id="open_file_label">Open</span>
</button>

<button id="print" class="toolbarButton print hiddenMediumView" title="Print" tabindex="33" data-l10n-id="print">
<span data-l10n-id="print_label">Print</span>
</button-->

viewer.js [строка 3058]

  /*items.openFile.addEventListener('click', function (e) {
eventBus.dispatch('openfile');
});
items.print.addEventListener('click', function (e) {
eventBus.dispatch('print');
});*/
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]