[PYTHON] Ajouter un numéro de page au PDF

Qu'est-ce que c'est

Voici comment ** éditer un PDF gratuitement ** à l'aide de Python **. À titre d'exemple, ajoutons un numéro de page à chaque page.

image

Installation

Utilisez le suivant:

Installation


conda install -y reportlab
pip install PyPDF2 pdfformfiller

Si vous n'utilisez pas Anaconda, utilisez pip au lieu de conda.

Exemple pour ajouter un numéro de page

Police IPAex Gothic est utilisée comme police japonaise, mais une autre police peut être utilisée. (Sur Ubuntu, vous pouvez installer avec apt-get install fonts-ipaexfont)

Notez que FloatObject, qui est un élément de PyPDF2.pdf.PageObject.mediaBox qui représente la taille du papier, renvoie Decimal, donc une erreur se produira dans l'opération d'addition / soustraction avec le nombre réel. Ici, je remplace de force FloatObject afin qu'il puisse être ajouté ou soustrait d'un nombre réel.

Avec addPage (fichier d'entrée, fichier de sortie), vous pouvez créer un PDF avec des numéros de page ajoutés au PDF d'origine.

python


import PyPDF2
class FloatObject(PyPDF2.generic.FloatObject):
    def __add__(self, other):
        return self.as_numeric() + other
    def __radd__(self, other):
        return self.as_numeric() + other
    def __sub__(self, other):
        return self.as_numeric() - other
    def __rsub__(self, other):
        return -self.as_numeric() + other
PyPDF2.generic.FloatObject = FloatObject

from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.enums import TA_CENTER
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from pdfformfiller import PdfFormFiller

def addPage(infile, outfile):
    #Sous Linux'/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf'Tel
    pdfmetrics.registerFont(TTFont('IPAexGothic', 'c:/Windows/Fonts/ipaexg.ttf'))
    sty = ParagraphStyle('sty', alignment=TA_CENTER, fontName='IPAexGothic', fontSize=9)
    ff = PdfFormFiller(infile)
    for i in range(ff.pdf.getNumPages()):
        p = ff.pdf.getPage(i)
        ff.add_text('page%d'%(i+1), i, (0,p.mediaBox[3]-30), p.mediaBox.getUpperRight(), sty)
    ff.write(outfile)

--Windows, Ubuntu, Alpine - Nous avons confirmé l'opération sous Linux.

Postscript

Je l'ai emballé.

https://pypi.org/project/addpage/

c'est tout

Recommended Posts

Ajouter un numéro de page au PDF
Comment ajouter des numéros de page à un fichier PDF (en Python)
[Wagtail] Ajouter une page de connexion au projet Wagtail
[Python] Suite - Convertir le texte PDF en CSV page par page
Ajouter une convolution à MNIST
[Python] Convertir le texte PDF en CSV pour chaque page (2/24 postscript)
Ajouter un dictionnaire à MeCab
[Mémo à ajouter] Page à voir lors du développement avec GAE / P
Ajouter un dictionnaire utilisateur à MeCab
Convertissez un grand nombre de fichiers PDF en fichiers texte à l'aide de pdfminer
Fonction pour convertir des colonnes Excel en nombres
Ajouter des champs à des entités avec ArcPy
Convertir Markdown en PDF en Python
Convertir un PDF A4 en A3 toutes les 2 pages
Ajouter le ratio cumulatif à l'histogramme matplotlib
Conversion de pdf en txt 1 [pdfminer]
Python 2.7 Ajout de la documentation japonaise à Dash.app
Comment ajouter sudo lors de l'exécution du débogage
Conversion de pdf en txt 2 [pyocr]
Ajouter des paramètres aux commandes personnalisées de Django
Comment ajouter un volume AWS EBS
Convertir un PDF en image avec ImageMagick
Ajouter le niveau de journal TRACE à Python ...?
Ajouter des utilisateurs connectables SSH à EC2
Obtenez le nombre de visites sur chaque page avec ReportingAPI + Cloud Functions