# Python gtk3 pdf preview

**URL:** <https://www.debian-fr.org/t/python-gtk3-pdf-preview/87400>\
**Category:** Programmation\
**Created:** [Novembre 11, 2022, 4:02 UTC](https://www.debian-fr.org/t/python-gtk3-pdf-preview/87400 "2022-11-11T16:02:03Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![crustyourmind](https://www.debian-fr.org/user_avatar/www.debian-fr.org/crustyourmind/32/2955_2.png) [@crustyourmind](https://www.debian-fr.org/u/crustyourmind)\
**Post date:** [Novembre 11, 2022, 4:02 UTC](https://www.debian-fr.org/t/python-gtk3-pdf-preview/87400/1 "2022-11-11T16:02:03Z")

</div>

Bonjour,  
J’aimerais en python gtk3 écrire une application de fluence pour mes élèves  
Fenetre coupée en deux d’un coté une zone de saisie et de l’autre la prévisualisation de sa sortie au format PDF

Pour la première pas de soucis, je vais utiliser **Multiline Text Editor** de gtk  
Par contre pour la seconde, je ne sais comment m’y prendre.  
Je pense qu’il faut une zone de preview de fichier PDF qui s’acualise au fur et à mesure de la frappe / mise à jour de la saisie dans le Multiline Text Editor.  
Mais là pas d’idée… J’ai cherché sur le Net mais rien trouvé de concluant .

J’ai bien vu **python-poppler** [1] mais j’arrive pas à mes fins.

Si quelqu’un à un lien / une doc pour affiche en preview un pdf dans une fenetre GTK je suis preneur 😉

D’avance merci

[1] [python-poppler’s documentation! — python-poppler documentation](https://cbrunet.net/python-poppler/)

---

<div class="post-metadata">

**Author:** ![vbreton](https://www.debian-fr.org/user_avatar/www.debian-fr.org/vbreton/32/11400_2.png) [@vbreton](https://www.debian-fr.org/u/vbreton)\
**Post date:** [Novembre 17, 2022, 12:48 UTC](https://www.debian-fr.org/t/python-gtk3-pdf-preview/87400/2 "2022-11-17T12:48:16Z")

</div>

Bonjour,

Merci pour l’intérêt que tu portes à Debian et à Python. Il y a un moment déjà, je me suis amusé à créer un éditeur LaTeX en ligne sans prétention. Côté client, j’avais du HTML et du JavaScript et  
côté serveur, du Python sur un serveur Web Apache.

Dans un cadre, je saisissais mon texte et dans un second cadre sur la même page, j’avais le rendu PDF. Un bouton «&nbsp;Envoyer&nbsp;» me permettait de transmettre au serveur mon texte qui apparaissait ensuite dans le second cadre avec l’approche Ajax.  
[https://developer.mozilla.org/fr/docs/Web/Guide/AJAX](https://developer.mozilla.org/fr/docs/Web/Guide/AJAX)

De mémoire, j’ai utilisé la bibliothèque JavaScript PDF.js pour le rendu PDF.[https://github.com/mozilla/pdf.js](https://github.com/mozilla/pdf.js)

J’ai aussi procédé à la rédaction d’un document technique que je pourrais à l’occasion te transmettre, si cela t’intéresse. Il faudra cependant patienter un petit peu car je n’ai pas remis encore en route mon ancien PC sur lequel repose ma documentation depuis mon déménagement. Je commence seulement à reprendre de l’activité sur ce Forum.

En convertissant ton PDF en JPG avec convert (outil binaire intégré à Imagemagick), cela te permettrait de l’afficher directement dans une fenêtre GTK sans passer par un navigateur.

Je n’ai pas cependant poursuivi le projet ou du moins j’ai pris la sage résolution de me tourner vers l’apprentissage du Framework Django en vue de me simplifier grandement la programmation tant il restait à faire.

---

<div class="post-metadata">

**Author:** ![crustyourmind](https://www.debian-fr.org/user_avatar/www.debian-fr.org/crustyourmind/32/2955_2.png) [@crustyourmind](https://www.debian-fr.org/u/crustyourmind)\
**Post date:** [Novembre 17, 2022, 4:32 UTC](https://www.debian-fr.org/t/python-gtk3-pdf-preview/87400/3 "2022-11-17T16:32:15Z")

</div>

Bonsoir et tout d’abord merci pour ta réponse

Oui entre temps j’avais relu pas mal de doc et j’avais capté qu’il fallait passer par une conversion du PDF en image

Et du coup j’avais ce code en passant par poppler 😉

```
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import gi
gi.require_version('Poppler', '0.18')
gi.require_version('Gtk', '3.0')
from gi.repository import Poppler, Gtk

def draw(widget, cr):
        # set background.
        cr.set_source_rgb(0.7, 0.6, 0.5)
        cr.paint()

        # set page background
        cr.set_source_rgb(1, 1, 1)
        cr.rectangle(0,0,1600,400)

        cr.fill()
        page.render(cr)

filepath = "sample.pdf"
f11 = open(filepath, "rb")
data1 = f11.read()
f11.close()

document = Poppler.Document.new_from_data(data1, None)
page = document.get_page(0)
print (document.get_n_pages())

window = Gtk.Window(title="TEST")
window.connect("delete-event", Gtk.main_quit)
window.connect("draw", draw)
window.set_app_paintable(True)

window.show_all()
Gtk.main()

```

Qui me permet bien de convertir le pdf et jpg.

Reste plus qu’à 😉 Je suis cours aussi après le temps 😉 La lecture de ton message m’indique donc que la route empruntée n’est pas si mauvaise que ça

Je vais suivre ASAP les liens que tu me proposes 😉

Bonne soirée

---

<div class="post-metadata">

**Author:** ![anon36725218](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/8e8cbc/32.png) [@anon36725218](https://www.debian-fr.org/u/anon36725218)\
**Post date:** [Novembre 19, 2022, 7:44 UTC](https://www.debian-fr.org/t/python-gtk3-pdf-preview/87400/4 "2022-11-19T19:44:50Z")

</div>

Pour la language Python, il y a un channel Youtube et un site web c’est DocString

[http://www.youtube.com/channel/UCo2zkK2d\_frGSXctIkftALw](http://www.youtube.com/channel/UCo2zkK2d_frGSXctIkftALw)

> **[Docstring - Formations Python](https://www.docstring.fr)**
>
> Le meilleur site francophone pour devenir développeur Python grâce à nos formations, exercices et projets.

Ça parlee bien sûr de Django 🙂

Sinon, moi, je ne pourrais pas vous aider.

Romain
