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) |
Partager