IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Jiyuu

[Actualité] Afficher un PDF dans une application QML

Note : 2 votes pour une moyenne de 2,00.
par , 30/09/2015 à 15h27 (4304 Affichages)
à 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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 chemins 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.

Envoyer le billet « Afficher un PDF dans une application QML » dans le blog Viadeo Envoyer le billet « Afficher un PDF dans une application QML » dans le blog Twitter Envoyer le billet « Afficher un PDF dans une application QML » dans le blog Google Envoyer le billet « Afficher un PDF dans une application QML » dans le blog Facebook Envoyer le billet « Afficher un PDF dans une application QML » dans le blog Digg Envoyer le billet « Afficher un PDF dans une application QML » dans le blog Delicious Envoyer le billet « Afficher un PDF dans une application QML » dans le blog MySpace Envoyer le billet « Afficher un PDF dans une application QML » dans le blog Yahoo

Mis à jour 25/10/2019 à 15h45 par ClaudeLELOUP

Tags: afficher, pdf, qml
Catégories
PyQt , Qt Quick - QML

Commentaires

  1. Avatar de filipdns
    • |
    • permalink
    bonjour, en copiant votre code je reçois les erreur:

    js: Fetch API cannot load file:///C:/test.pdf. URL scheme "file" is not supported.
    js: Uncaught (in promise) DataCloneError: Failed to execute 'postMessage' on 'Worker': TypeError: Failed to fetch could not be cloned.

    voici mon code:

    WebEngineView {
    id: webview
    property string viewer:"file:///H:/flightradar24/web/viewer.html" // chemin absolu pointant vers notre fichier viewer.html dernièrement téléchargé.
    property string pathPdf:"C:/test.pdf" // 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
    }
    }

    ou est mon erreur?

    merci pour votre aide