PDF에 페이지 번호 추가
이게 뭐야
Python을 사용하여 무료로 PDF를 편집하는 방법을 알아보십시오.
샘플로서 각 페이지에 페이지 번호를 추가해 보겠습니다.
설치
다음을 사용합니다.
다음을 사용합니다.
ReportLab : Python용, PDF 생성 라이브러리. 유료 버전과 무료 버전이 있습니다.
PyPDF2 : 페이지 단위의 PDF 편집 라이브러리.
PdfFormFiller : PDF에 텍스트를 삽입하는 라이브러리.
설치
conda install -y reportlab
pip install PyPDF2 pdfformfiller
아나콘다을 사용하지 않는 경우 conda 대신 pip을 사용하십시오.
페이지 번호를 추가하는 샘플
일본어 폰트로서, IPAexGothic 글꼴 (을)를 사용하고 있습니다만, 다른 폰트라도 상관하지 않습니다.
(Ubuntu에서는 apt-get install fonts-ipaexfont로 설치할 수 있습니다)
주의점으로서, 용지 사이즈를 나타내는 PyPDF2.pdf.PageObject.mediaBox 의 요소인 FloatObject 가 Decimal 를 돌려주기 때문에, 실수와의 가감 연산으로 에러가 됩니다. 여기에서는, 무리해, FloatObject 가 실수와 가감 연산할 수 있도록(듯이) 옮겨놓고 있습니다.
addPage(입력 파일, 출력 파일)로 하면, 원의 PDF에, 페이지 번호를 추가한 PDF를 작성할 수 있습니다.
파이썬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):
# Linuxでは、'/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf'など
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('ページ %d'%(i+1), i, (0,p.mediaBox[3]-30), p.mediaBox.getUpperRight(), sty)
ff.write(outfile)
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):
# Linuxでは、'/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf'など
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('ページ %d'%(i+1), i, (0,p.mediaBox[3]-30), p.mediaBox.getUpperRight(), sty)
ff.write(outfile)
추가
패키지화했습니다.
이상
Reference
이 문제에 관하여(PDF에 페이지 번호 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/SaitoTsutomu/items/5a7bb9ae2e60b327a311텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)