1
4

More than 1 year has passed since last update.

Pythonで様々なPDFフォーマットに電子印を一括押印

Posted at

はじめに

Pythonプログラムで即業務に役立つサンプルプログラムとして、PDFファイルに透明化処理された電子印影を押印するプログラムを作成してみましたので、備忘録も兼ねて掲載します。
プログラムでは、様々なフォーマットの押印位置に対応する為、押印するべき文字列を見つけその座標位置に合わせて押印しています。

動作環境

Visual Studio Code
Python3.9.1

各種インストールライブラリー

pdfrw 0.4
reportlab 3.6.9
PyPDF2 1.26.0
pdfminer3 2018.12.3.0
pandas 1.2.3

処理概要:

INPUTフォルダに保存された様々なフォーマットの帳票(PDFファイル)を読み込み、電子印を押印し、OUTPUTフォルダに保存するプログラムです。
PythonでPDFに一括押印_090.png

YouTubeでの解説:

プログラムの詳細はYoutubeでも解説していますので、ぜひ、ご覧ください。

電子印影ファイルの作り方

透明化処理した電子印影の作り方は、こちらの動画で詳しく解説していますので、ぜひご覧ください!

サンプルソース(Step1)

YouTubeで紹介しているStep1でご紹介した処理のプログラムソースです。
sample.pdfにstamp.pngファイルの電子印を押印し、sample_out.pdfに保存しています。

pdf_stamp_add1.py
from pdfrw import PdfReader
from pdfrw.buildxobj import pagexobj
from pdfrw.toreportlab import makerl
from reportlab.pdfgen import canvas
from reportlab.lib.utils import ImageReader

pdf_file = './sample.pdf'
out_file = './sample_out.pdf'
stamp_file = './stamp.png'

pdf = PdfReader(pdf_file, decompress=False).pages
#保存するPDFファイル
cvs = canvas.Canvas(out_file)

page = pagexobj(pdf[0])
cvs.doForm(makerl(cvs, page))
img = ImageReader(stamp_file)

cvs.drawImage(img, 445, 560, 80, 80, preserveAspectRatio=True,mask='auto')

cvs.showPage()  #改ページ

cvs.save()

サンプルソース(Step2)

完成版を含む、続きのソースコードは、以下のYouTube動画の概要欄に、限定共有しているQiitaのURLを掲載しており、恐れ入りますが、そちら経由でご覧ください。
https://youtu.be/JCHZy808EBY

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4