5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PDF文書に印影画像を埋め込む

Last updated at Posted at 2021-03-28

PDF文書にスタンプ角印的な印影を埋め込みたい

「請求書等のPDF文書に印影っぽいものがほしい」 という要望がありました。

個人的には、形だけで意味があるとは思えない作業なのですが、
取引先から要望を受けた場合は、対応せざるを得ません。

その場合はAdobe Acrobatのスタンプ機能を利用したり、
スタンプ印を押した文書をスキャンしてpdfにしていました。

ただ、これでは対象文書数が多いときに面倒です。
そこでPythonを使って印影画像を埋め込もうと考えました。

準備

・glob,pdfrw,pillowをインストール ・pythonファイルと同階層に「pdf」フォルダ、その直下に「export」フォルダを作成 ・「pdf」フォルダに印影画像を埋め込みたいpdfファイルを保存 ・印影データ(透過png)を「pdf」フォルダ直下に保存 ![hanko.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565780/27c8753b-0d07-0744-c128-b7e1e3c3daad.png)

必要なモジュールをインポート

```py import glob import os from pdfrw import PdfReader from pdfrw.buildxobj import pagexobj from pdfrw.toreportlab import makerl from reportlab.pdfgen import canvas from PIL import Image import io from reportlab.lib.utils import ImageReader ```

処理対象のフォルダやファイルを指定

```py # 処理対象のフォルダを指定 target_folder = os.getcwd() + r'\pdf' files = glob.glob(target_folder + r'\*.pdf')

埋め込む画像を指定

img = ImageReader(os.getcwd() + r'\pdf\hanko.png')


<h2>画像を埋め込んで保存する</h2>
「pdf」フォルダ直下に入っているpdfファイルを順番に開き、
そこに印影画像を埋め込んで保存していきます。
画像の位置の起点は、左上ではなく左下なのでそれを踏まえて位置を指定します。
また、mask='auto'にしておかないと透過がうまくいかないようです。

```py
for file in files:
    export_filename = target_folder + '\\export\\' + os.path.basename(file)
    export_pdf = canvas.Canvas(export_filename)

    # 対象PDFの1ページ目にのみ画像を埋め込む
    target_pdf = PdfReader(file,decompress=False).pages
    page = pagexobj(target_pdf[0])
    export_pdf.doForm(makerl(export_pdf,page))

    # ページの左下を起点にして、x=480,y=640 の位置にサイズx=60,y=60 で画像を埋め込む
    export_pdf.drawImage(img, 480, 640, 60, 60, preserveAspectRatio=True, mask='auto')
    export_pdf.showPage()
    export_pdf.save()

処理結果

これが
文書.PNG

こうなりました

押印済み.PNG
5
6
4

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
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?