Afficher un PDF dans une application QML
En utilisant la visionneuse par défaut de pdf.js, un billet de Jiyuu

Le , par Jiyuu, Rédacteur/Modérateur
à tous,

Il existe plusieurs méthodes permettant d'afficher un PDF dans une application Qt, donc de facto dans une application QML.
Nous allons voir dans ce billet comment faire ceci pour un projet QML en utilisant pdf.js avec notamment la visionneuse par défaut que cet outil propose (vous pouvez d'ores et déjà télécharger l'archive fournie)

La solution que nous allons voir ici est relativement simple : pdf.js permet d'afficher un fichier PDF dans un navigateur. Il est possible de créer son propre navigateur avec QML et en particulier avec WebEngineView. Nous allons tout simplement utiliser celui-ci afin d'obtenir le résultat attendu.

Tout d'abord le code QML permettant de disposer d'un navigateur web :
Code qml : Sélectionner tout
1
2
3
4
5
6
7
8
import QtQuick 2.5 
import QtWebEngine 1.0 
  
WebEngineView { 
    width: 800 
    height: 600 
    url: "http://www.developpez.net/forums/blogs/135545-jiyuu/" 
}

Rien de très compliqué (normal c'est du QML )

Étant donné que nous allons devoir utiliser la visionneuse de pdf.js afin d'afficher un pdf je vous propose la modification suivante du code précédent :
Code qml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import QtQuick 2.5 
import QtWebEngine 1.0 
  
WebEngineView { 
    id: webview 
    property string viewer    // chemin absolu pointant vers notre fichier viewer.html dernièrement téléchargé. 
    property string pathPdf  // chemin absolu pointant vers le document pdf à afficher. 
  
    // le code ci-dessous permettra d'afficher une page blanche si au moins l'un des deux chemin n'est pas renseigné 
   url: if (viewer && pathPdf) 
         { 
             viewer + "?file=" + pathPdf 
         } 
}

Il ne vous reste plus qu'à utiliser ce composant dans votre projet afin d'y afficher le PDF voulu.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :
Offres d'emploi IT
Ingénieur moa logiciel H/F
Safran - Ile de France - Villaroche
Chef de projet technique H/F
Safran - Ile de France - Melun (77000)
Responsable de projet logiciel H/F
Safran - Ile de France - Éragny (95610)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique PyQt & PySide