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)