Skip to content

Latest commit

 

History

History
41 lines (32 loc) · 2.8 KB

README.md

File metadata and controls

41 lines (32 loc) · 2.8 KB

QPdf

PDF viewer widget for Qt 5.

This is a wrapper of pdf.js JavaScript PDF renderer using Qt WebEngine.

Screenshot

This qmake-based project defines two build targets: qpdf shared library, and an example PDF viewer (pdfviewer) based on qpdf library. Should yoo want to integrate a PDF view into your project, you need to take qpdf library only, you do not need pdfviewer (though you may use it as inspirational example for your project). So you may copy qpdflib into your project and build it as a shared library to be linked with your code.

How to compile

  • Make sure you have Qt 5.9.x or later installed. Earlier Qt versions are not supported.
  • Open qpdf.pro project file in QtCreator
  • Build and run

Open PDF files

qpdf library offers two ways to open PDF files:

loadData method serializes PDF data as base64 string and injects it into JavaScript environment. This may fails however when loading huge PDF files.

loadFile can load PDFs of any size, however the method is blocked by default due to the cross-origin security restriction, since it uses WebEngine's load URL method. In order to make this method work, you have to disable web security by passing --disable-web-security argument to your QApplication instance (see how its done in pdfviwer example).

Debugging

If something goes wrong, as sometimes it does, you may use Chromium debug console to assess the situation:

  • Define QTWEBENGINE_REMOTE_DEBUGGING environment variable to activate WebEngine debug server, e.g. QTWEBENGINE_REMOTE_DEBUGGING=0.0.0.0:9999
  • Launch your qpdf-based application
  • Open Chrome or Chromium web browser and navigate to http://localhost:9999
  • Select the running application link in the browser and you will be presented with a familiar web page inspection console.

Qt Quick Compiler Issue

This project includes JavaScript *.js files as resources. Qt Creator may try to add them to QML resources instead, which makes the web engine unable to load *.js from normal resources. This happens on Windows in Release builds automatically (but not in Debug for some reason). Make sure to disable Qt Quick Compiler in your project build settings: Disable Qt Quick