2017-05-29 17 views
0

私はpdf.jsとQt 5.8に問題があります。私はこのリンクで同じコードを実行しようとしましたUsing pdf.js with Qt5.8私のアプリケーションでは、彼は動作しません。 JSについては、このメッセージ:Qt 5.8とPdf.jsのエラー

"js: Uncaught TypeError: Cannot read property 'PDFJS' of undefined".

これは、メインウィンドウでは私のコードです:

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(); 

答えて

5

私はhereからソースコードをダウンロードすることをお勧めします。

そして、(私の場合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を変更ThirdPartyフォルダと実行可能ファイルが一緒になっている必要があります。完全コードはhereです。

出力:あなたは、印刷ボタン、[開く]ボタンを非表示にする場合

enter image description here

、あなたがコメントする必要があり、次の行:

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]それは問題は私が(ファイル:///)を追加するのを忘れ、ある今WROK

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

おかげであなたのような引数で。私は別の質問をしています。どのように印刷ボタンを隠すことができますか?開いているボタンは、そのアイデアを持っていますか? –

+0

これらの変更は.jsファイルで指定する必要があります。私はそれを見直します。その他、私の答えが正しいと印を付けるのに役立つならば。 – eyllanesc

+0

@ Qtはじめにこれらのボタンを非表示にするオプションを追加しました。 – eyllanesc

関連する問題