LoginSignup
0
2

PDFに透かしを追加するときに役立つスクリプト

Posted at

PDF文書に透かしを追加する必要が生じた際、Pythonを活用してこの処理を簡単に実行する方法を紹介します。以下のスクリプトでは、指定されたテキストを透かしとしてPDFに追加します。

from reportlab.pdfgen import canvas
import PyPDF2

def create_watermark(input_pdf, watermark_text):
    with open(input_pdf, "rb") as input_file:
        reader = PyPDF2.PdfReader(input_file)
        first_page = reader.pages[0]
        page_size = first_page.mediabox

    c = canvas.Canvas("watermark.pdf", pagesize=(page_size[2], page_size[3]))
    c.setFont("Helvetica", 10)
    c.setFillColorRGB(1., 0., 0., alpha=0.3)
    c.saveState()
    c.translate(page_size[2] / 2, page_size[3] / 2)
    c.drawCentredString(300, 180, watermark_text)
    c.restoreState()
    c.save()

def add_watermark(input_pdf, output_pdf, watermark_pdf):
    original = open(input_pdf, "rb")
    reader = PyPDF2.PdfReader(original)
    watermark = open(watermark_pdf, "rb")
    watermark_reader = PyPDF2.PdfReader(watermark)

    writer = PyPDF2.PdfWriter()

    for page in reader.pages:
        page.merge_page(watermark_reader.pages[0])
        writer.add_page(page)

    with open(output_pdf, "wb") as output_file:
        writer.write(output_file)

    original.close()
    watermark.close()

create_waterark("input.pdf", "CONFIDENTIAL")
add_watermark("input.pdf", "output_with_watermark.pdf", "watermark.pdf")

必要なインストール

このスクリプトを実行するためには、PyPDF2reportlabライブラリが必要です。以下のコマンドでインストールできます。

pip install PyPDF2 reportlab

関数の解説

create_watermark

この関数は、入力されたPDFファイルからページサイズを取得し、そのサイズに合わせて透かしを含む新しいPDFを作成します。

  • input_pdf: 入力PDFファイルのパス
  • watermark_text: 透かしに使用するテキスト

add_watermark

この関数は、作成した透かしPDFを元のPDFファイルの全ページに適用します。

  • input_pdf: 元のPDFファイルのパス
  • output_pdf: 透かしを適用したPDFを保存するパス
  • watermark_pdf: 透かしPDFファイルのパス

まとめ

このスクリプトを使用することで、簡単にPDF文書に透かしを追加することができます。透かしは文書のセキュリティ強化や機密情報の管理に役立つ重要なツールです。

0
2
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
0
2