LT Dev

Qt Pdf Viewer Library

The qt-pdf-viewer-library is a qml wrapper of pdf-js library which allows you to render PDF files in a WebView. This library also works for Android devices, and it uses WebSocketServer, WebSocketTransport and WebChannel to exchange data between qml and the browser environment.

Dependencies

The qt modules needed by the library are:

  • quickcontrols2
  • webchannel
  • websockets
  • webview

Libraries

The libraries used to create the qt-pdf-viewer-library are:

  • PDF.js version 2.0.550 (Apache License 2.0): you can retrieve it from this link: https://github.com/mozilla/pdf.js.

  • qwebchannel.js version 5.15.2 (LGPL3 license): this file has been modified to support old browsers. The original file can be found here: https://github.com/qt/qtwebchannel/blob/5.15.2/examples/webchannel/shared/qwebchannel.js.

  • QtAndroidTools library, version 1.5.5 (MIT license). (Used only in the sample app to ask for android permissions at run time): the used library is already included in the sample app, but you can retrieve it from this link: https://github.com/FalsinSoft/QtAndroidTools/tree/1.5.5.

Testing

The qt-pdf-viewer-library has been tested on the following Android devices:

  • Galaxy Nexus, API 22, Android 5.1
  • Nexus S, API 23, Android 6.0
  • Nexus S, API 24, Android 7.0
  • Pixel 2 XL, API 27, Android 8.1
  • Pixel 4, API 28, Android 9.0
  • Redmi Note 8 pro, API 29, Android 10
  • Nexus 5X, API 29, Android 10
  • Nexus 10, API 30, Android 11
  • Pixel XL, API 30, Android 11

and on the following os:

  • Linux KDE 20.04

PdfView

The provided PdfView exposes the following properties:

  • page: the current page number

  • pages: the total document pages

  • thumbnails: the list of pages as base64 images

  • scale: the current scale value

  • scrollModes: the available scroll modes (0, 1, 2, which corresponds respectively to vertical, horizontal and wrapped modes)

  • scrollMode: the current scroll mode

  • scalesMode: the available scale modes ("page-actual", "auto", "page-fit", "page-width", "page-height")

  • scaleMode: the current scale mode

  • toolModes: the availbale tool modes (0, 1, which corresponds respectively to cursor and hand modes)

  • toolMode: the current tool mode

the following methods:

  • reloadViewer(): reloads the viewer

  • load(path): loads the given pdf document. The document is converted in a base64 string to be loaded in the view.

  • setPage(page): sets the page of the document

  • previousPage(): sets the page of the document to the previous one

  • nextPage(): sets the page of the document to the next one

  • setScrollMode(scrollMode): sets the scroll mode of the document

  • setScaleMode(scaleMode): sets the scale mode of the document

  • setToolMode(toolMode): sets the tool mode of the document

  • rotate(angle): rotates the document of the current angle

  • zoomIn(): zooms the document in

  • zoomOut(): zooms the document out

  • searchText(query, phraseSearch, caseSensitive, highlightAll, findPrevious): searches for the given text in the pdf document.

    • query: the text to search for

    • phraseSearch: true if entire phrase must be searched, false otherwise

    • caseSensitive: true if case sensitive must be enabled, false otherwise

    • highlightAll: true if matches found must be highlighted, false otherwise

    • findPrevious: true if previous matches must be considered, false otherwise

  • searchTextOccurance(query, phraseSearch, caseSensitive, highlightAll, findPrevious): searches for the next occurance of the given text in the pdf document

and the following signals:

  • pdfLoaded(): emitted when pdf is entirely loaded

  • viewerLoaded(): emitted when viewer is loaded and ready

Sample App

The sample app implements all operations provided by the library, like rotation, fit size dimensions, zoom in/out, change view visualization, text search and pages preview.

Below some screenshot for the desktop version:

By clicking button above, I agree Marketplace user terms and conditions

Reviews
Details
Version:
1.0.000
Publisher:
LT Dev
Contact:
Leonardo Tarollo
Copyright:
Leonardo Tarollo
Authors:
Leonardo Tarollo
License:
MIT
Created at:
2022-01-09
Platforms:
Android 6.0 or later
Linux
Windows
Supported Qt versions:
5.15.2
Support:
https://github.com/develtar/qt-pdf-viewer-library/issues
Bug URL:
https://github.com/develtar/qt-pdf-viewer-library/issues
Source repository:
https://github.com/develtar/qt-pdf-viewer-library
User manuals:
https://github.com/develtar/qt-pdf-viewer-library
Dependencies:
Quick Controls 2
WebChannel
WebSockets
WebView