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

Bibliothèques tierces Python Discussion :

Modifier un pdf


Sujet :

Bibliothèques tierces Python

  1. #1
    Membre expérimenté Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Par défaut Modifier un pdf
    Bonjour à tous,
    Je veux modifier un pdf existant
    N'ayant rien trouvé d'utilisable sur internet, j'ai l'ai fait moi même .

    Par contre j'utilise un méthode qui ne me semble pas optimale :
    1°) Avec Reportlab : Création d'une (page intermédiaire) avec le texte à rajouter "tempo_num.pdf"
    2°) Avec pypdf je fais une addition de deux pages :
    (nouvelle page)=(page originale)+ (page intermédiaire)

    Peux t-on faire tout avec reportalb c'est à dire la modification d'un pdf existant ?

    Alex

    Mon code existant (qui fonctionne)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #!/usr/bin/env python
    #coding=utf-8
    from pyPdf import PdfFileWriter, PdfFileReader
    from reportlab.pdfgen import canvas
     
    def num_page(file_source,texte_avant,n_av=0,n_ap=0):
        """ Rajoute une pagination sur un pdf existant
        file_source : fichier de base exemple "fichier.pdf"
        texte_avant : texte avant la numérotation
        n_av : Nombre de pages avant numérotation
        n_ap : Nombre de pages après numérotation
        le fichier destination sera "fichier_num.pdf"
        ** Sur un doc de 6 pages si n_av=1 et n_ap=2
        les pages marquées seront 2,3,4 
        """
        input1 = PdfFileReader(file(file_source, "rb")) # PDF en entrée
        output = PdfFileWriter() # PDF en sortie
        n_pages=input1.getNumPages() # Récupération du nombre de pages
        for i in range(n_pages): # Pour chaque page
            page=input1.getPage(i) # Récupération de la page du doc initial (input1)
            if i+1>n_av and i+1<=n_pages-n_ap: # Condition de rajout de l'inscription
                c = canvas.Canvas(u"tempo_num.pdf") # Création d'une page de watermark
                texte_a_rajouter=texte_avant+" "+str(i+1-n_av)+u" / "+str(n_pages-n_av-n_ap)
                c.drawString(220,830,texte_a_rajouter) # Ecriture du texte sur la page de watermark
                c.showPage() # Fin de la page
                c.save() # Sauvegarde de la page
                watermark = PdfFileReader(file(u"tempo_num.pdf", "rb"))# Création du watermark
                page.mergePage(watermark.getPage(0)) # Création page_initiale+watermark
            output.addPage(page) # Création de la nouvelle page
        file_dest=file_source.split(u".")[0]+u"_num.pdf" 
        outputStream = file(file_dest, u"wb")
        output.write(outputStream)
        outputStream.close() # Nouveau pdf
     
    num_page(u"text3.pdf",u"Text avant le numéro ",1,1)

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Par défaut
    Bonjour,

    Navré de de te décevoir mais la réponse à ta question est non, tu ne
    peux pas modifier un pdf existant avec reportlab. Du moins, avec la version open
    source. Il existe bien un produit nommé reportlab plus qui, semble-t-il, le permet
    mais ma boîte n'en ayant pas de réelle utilité, nous ne l'avons pas acquis.

    Perso je préfère utiliser un max de logiciels libres, inclusivement reportlab et pypdf. Il existe aussi un projet assez ambitieux nommé pdfminer qui permet
    d'extraire du contenu, non limité au texte, hors d'un fichier pdf (verion bêta)
    Il faudra que je le teste un de ces jours.

    Salut

  3. #3
    Membre expérimenté Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Par défaut
    Ok,
    Merci pour le réponse c'est ce qu'il m'avait semblé...
    Sinon cette routine fonctionne très bien, je numérote 100 pages en 30 secondes, donc pas de problèmes je reste comme ceci.

    Alex

Discussions similaires

  1. [iText] modifier un PDF existant
    Par snetechen dans le forum Documents
    Réponses: 2
    Dernier message: 18/07/2013, 12h25
  2. Comment modifier un PDF avec iText?
    Par adrielo dans le forum Documents
    Réponses: 6
    Dernier message: 07/11/2008, 16h27
  3. Modifier un PDF via XSL ?
    Par Mygush dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 22/09/2008, 11h52
  4. Modifier un pdf
    Par bremer dans le forum Composants VCL
    Réponses: 0
    Dernier message: 20/02/2008, 23h54
  5. Modifier un pdf en ligne
    Par maadras dans le forum Documents
    Réponses: 1
    Dernier message: 18/09/2007, 20h25

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