Voici comment ** éditer un PDF gratuitement ** à l'aide de Python **. À titre d'exemple, ajoutons un numéro de page à chaque page.
Utilisez le suivant:
Installation
conda install -y reportlab
pip install PyPDF2 pdfformfiller
Si vous n'utilisez pas Anaconda, utilisez pip au lieu de conda.
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.
Je l'ai emballé.
https://pypi.org/project/addpage/
c'est tout
Recommended Posts