IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Le module pyPdf4 pour traiter des fichiers PDF


Sujet :

Réseau/Web Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 20
    Points : 13
    Points
    13
    Par défaut Le module pyPdf4 pour traiter des fichiers PDF
    Bonjour
    Je commence à étudier ce module, dans l'espoir de parvenir à récupérer la mise en forme d'un texte (polices, couleurs, etc.) pour charger le texte dans une page html.
    Première question : que sont les "indirectObect(x, y)" que getInfo() nous donne ? Et comment les exploiter ?
    Deuxième : j'ai trouvé ce tuto :
    https://pythoninoffice.com/split-and...-using-python/
    je n'arrive pas à enregistrer un fichier pdf qui isole une page (c'est le début du tuto !) J'ai su instancier le reader et le writer, récupérer les infos, (avec ces mystérieux "indirectObject"), j'ai exécuté ce code de ma méthode .write pour enregistrer, mais rien n'apparaît sur mon disque dur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    with open(r'C:\Users\JZ\Desktop\PythonInOffice\split_and_merge_pdf\page_1.pdf', 'wb') as f:
        pdf_writer.write(f)
    Est-ce que c'est en lien avec le bug évoqué par l'auteur, qui contraint à recréer l'objet reader à chaque écriture ? Pourtant, je n'ai obtenu aucun enregistrement sur disque.

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 071
    Points : 9 515
    Points
    9 515
    Par défaut
    hello,
    le module pymupdf qui utilise la bibliothèque mupdf (incluse dans le module) permet de convertir le contenu du pdf directement en html. Exemple :
    import sys, fitz
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import sys, fitz
    fname = 'd:/temp/sample.pdf'  # get document filename
    doc = fitz.open(fname)  # open document
    for page in doc:  # iterate the document pages
        print('==   Text  ===')
        text = page.get_text("text")
        print(text)
        print('==   HTML  ===')
        html = page.get_text("html")
        print(html)
    Ami calmant, J.P

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Ça , ça m'a bien l'air d'être ce qu'il me fallait ! Merci, Jurassik Pork ! je vais installer et voir.
    Dans le cochon tout est bon !

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    J'ai voulu installer, avec pip. J'ai bien l'impression que ça n'a pas marché parce que ça bogue dès import sys, fitz. J'ai vu par la suite que dans la doc, on préconise une installation en deux étapes, 1 install mupdf, 2 charger et générer pymupdf. J'avais fait plus simple, juste avec python3 -m pip install --upgrade pymupdf. Sans upgrader pip, d'ailleurs.
    Voici l'erreur que j'obtiens quand je veux importer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import sys, fitz
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/fitz/__init__.py", line 10, in <module>
        from fitz.fitz import *
      File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/fitz/fitz.py", line 15, in <module>
        from . import _fitz
    ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/fitz/_fitz.cpython-38-darwin.so, 2): Symbol not found: ____chkstk_darwin
      Referenced from: /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/fitz/_fitz.cpython-38-darwin.so
      Expected in: /usr/lib/libSystem.B.dylib
     in /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/fitz/_fitz.cpython-38-darwin.so
    Au secours.

  5. #5
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 071
    Points : 9 515
    Points
    9 515
    Par défaut
    hello,
    d'après tes traces tu es sous Mac OSX. Quelle version ? moi j'ai essayé d'installer pymupdf sous Mac OSX Catalina 10.15, il a fallu que j'installe le module en étant admin par un sudo. Commande :
    sudo pip3 install pymupdf
    Cela s'est bien passé. Le module est installé (dans le répertoire générale des modules python pas dans le répertoire user) et je peux faire un import fitz dans un python lancé dans mon compte user.
    Sinon tu peux regarder ici.
    Ami calmant, J.P

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2022
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2022
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Merci Jurassik Pork, j'ai regardé "ici". Effectivement, le dénommé macdeport a rencontré le même problème que moi. Je suis sous macOS X Capitan 10.11.6 (vieux mac de 2009). Je vais étudier ça.
    J'ai une question sur le path : voici le mien. Pourquoi est-il si répétitif ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> sys.path
    ['', '/Library/Frameworks/Python.framework/Versions/3.8/lib/python38.zip', '/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8', '/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages']
    >>>
    Je crois que j'ai compris quelque chose ! On peut installer soit les fichiers binaires, c'est ce qu'on fait avec pip, soit à partir des sources et compiler soi-même (je ferai peut-être ça quand je serai plus savant !). Correct ?
    Donc je n'ai bel et bien que la méthode pip. Mais d'après l'aventure d'Alain alias macdeport, j'ai peur d'avoir comme lui une machine et un OS obsolète. (j'ai pas encore tout compris l'anglais). Peut-être un peu moins puisque lui il a yosemite.
    Alors, comme je ne peux pas changer l'ordi (trop fauché), peut-être que la solution serait de chercher une version plus ancienne de pymupdf ?

    Sinon, j'ai essayé d'installer comme tu l'as fait, avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo pip3 install pymupdf
    , mais j'obtiens le même résultat.

    Dernière heure :
    J'ai eu une inspiration, certainement la bonne ! Je suis allé regarder dans Word si on y pouvait convertir en html. La réponse est oui ! Ça s'appelle convertir en page web, et le suffixe est htm au lieu d'html, mais j'ai vérifié que ça marchait.
    Dommage que Pages ne le fasse pas, car alors je l'aurais su, et cela m'aurait évité bien du temps perdu, et de déranger du monde. Mais peu importe. J'ai appris des tas de trucs, et surtout fait la connaissance d'un ami calmant ! En tout cas, pas besoin de passer par le pdf.

    Il me reste maintenant à apprendre comment utiliser un template bottle pour passer la page htm dans le body. Je vais clore ce sujet et en ouvrir un autre.

    Amish allemand.

Discussions similaires

  1. [XL-2010] recuperer le nom de la cellule pour deplacer des fichiers pdf
    Par reinruof77700 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/11/2015, 01h25
  2. conseils de modules pour traiter des fichiers XML
    Par Jasmine80 dans le forum Langage
    Réponses: 4
    Dernier message: 29/05/2015, 12h40
  3. Plugin pour créer des fichiers PDF
    Par jojosuanexo dans le forum Dreamweaver
    Réponses: 2
    Dernier message: 20/05/2009, 20h11
  4. Cherche MODULE pour concaténer des fichiers PDF
    Par DevPerl dans le forum Modules
    Réponses: 1
    Dernier message: 21/10/2007, 17h11
  5. [FPDF] création d'un interface pour accés à des fichiers PDF
    Par StyleXP dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 19/12/2005, 10h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo