0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonでPDF内の画像の透明度を設定する

Posted at

PDFドキュメントを編集する際、画像の透明度を適切に調整することで、レイアウト全体のバランスを整え、内容の階層をより明確にし、視覚的に調和の取れた仕上がりにすることができます。
透かしや背景画像、ロゴなどを挿入する場合でも、透明度を制御することでよりプロフェッショナルな印象を与えることが可能です。

Free Spire.PDF for Python を利用すれば、複雑な画像編集ソフトを使用せずに、Pythonコードで簡単に画像の透明度を設定できます。この方法は効率的であり、複数のPDFドキュメントを自動処理する際にも便利です。

この記事では、以下の2つの方法を紹介します。

  1. 既存のPDF画像の透明度を再設定する方法
  2. 新しい半透明画像をPDFに追加する方法

ライブラリのインストール

まず、pipを使用してFree版をインストールします。

pip install spire.pdf.free

方法①:既存画像の透明度を設定する

PDFファイルにすでに画像(署名、印章、背景など)が含まれている場合、その画像を取得して再描画することで透明度を調整できます。

from spire.pdf import *

# PdfDocumentインスタンスを作成してファイルを読み込む
pdf = PdfDocument()
pdf.LoadFromFile("Sample.pdf")

# 1ページ目を取得
page = pdf.Pages.get_Item(0)

# ページ上の最初の画像とその位置を取得
imageHelper = PdfImageHelper()
imagesInfo = imageHelper.GetImagesInfo(page)
imageStream = imagesInfo[0].Image
bounds = imagesInfo[0].Bounds

# 元の画像を削除
imageHelper.DeleteImage(imagesInfo[0])

# ストリームから新しい画像オブジェクトを生成
image = PdfImage.FromStream(imageStream)

# 透明度を設定(0~1、小さいほど透明)
page.Canvas.SetTransparency(0.3)

# 同じ位置に再描画
page.Canvas.DrawImage(image, bounds)

# 保存
pdf.SaveToFile("output/SetExistingImageTransparency.pdf")
pdf.Close()

コードの解説

  • PdfImageHelper():ページ内の画像情報を抽出します。
  • GetImagesInfo(page):画像情報のリストを返します。ImageBounds(位置とサイズ)を含みます。
  • DeleteImage():指定した画像を削除します。
  • SetTransparency(0.3):透明度を設定します。範囲は 0(完全に透明)~1(完全に不透明)です。
  • DrawImage(image, bounds):指定領域に画像を描画します。

実行結果は次のようになります。

PythonでPDF画像の透明度を設定

この方法を使えば、印章や背景画像などの透明度を一括で調整し、より柔らかい見た目にすることができます。


方法②:PDFに半透明画像を追加する

新しい画像(ロゴや透かし)をPDFに追加する場合、描画時に透明度を指定できます。

from spire.pdf import *

# PdfDocumentインスタンスを作成してファイルを読み込む
pdf = PdfDocument()
pdf.LoadFromFile("Sample.pdf")

# 1ページ目を取得
page = pdf.Pages.get_Item(0)

# 挿入する画像を読み込む
image = PdfImage.FromFile("Stamp.png")

# 透明度を設定(0~1)
page.Canvas.SetTransparency(0.2)

# 指定位置に画像を描画
page.Canvas.DrawImage(image, PointF(100.0, 180.0))

# 保存
pdf.SaveToFile("output/AddTranslucentPicture.pdf")
pdf.Close()

コードの説明

  • PdfImage.FromFile():ファイルから画像を読み込みます(例:会社ロゴや印章画像)。
  • PointF(x, y):PDFページ上での描画位置を指定します。
  • SetTransparency(0.2):透明度を20%不透明(80%透明)に設定します。
  • DrawImage():指定した位置に画像を描画します。

結果は次のようになります。

PythonでPDFに半透明画像を追加

この方法は、請求書や承認書、契約書などに自動で印章やロゴを追加する場合に非常に便利です。


まとめと応用

この記事では、Spire.PDF for Python を使ってPDF内の画像の透明度を調整する方法を紹介しました。主な2つのアプローチは以下の通りです。

方法 説明
既存画像の透明度を再設定 PDF内の既存画像を再描画し、印章や背景などに適用可能
半透明画像を追加 新しい画像を追加して透明度を設定、ロゴや透かし追加に適用可能

応用例:

  • 請求書や報告書に半透明の会社ロゴを追加する
  • 承認済み・機密などの印章を自動で追加する
  • プレゼン資料にコピー防止の透かしを挿入する
  • 複数のPDFにブランドロゴを一括追加する

よくある質問(FAQ)

Q1:透明度の値は1を超えたり0未満に設定できますか?
いいえ。SetTransparency() の値は 0.01.0 の範囲内で指定する必要があります。0.0 は完全に透明、1.0 は完全に不透明を意味します。

Q2:画像を追加した後、文字が見づらくなる場合は?
透明度を下げるか、描画の順序を調整してください。背景として画像を使用する場合は、先に画像を描画してからテキストを追加すると良いでしょう。

Q3:複数ページのPDFに一括で適用できますか?
可能です。pdf.Pages コレクションをループ処理して、各ページで同じ描画ロジックを実行すれば対応できます。


総括

今回紹介したように、Spire.PDF for Python を使用すれば、PDF画像の透明度を簡単に制御できます。
既存の画像の透明度を変更する場合も、新しい半透明印章を追加する場合も、数行のコードで実現可能です。

この機能は、透かしや印章、ロゴを含むPDFドキュメントを大量に生成する必要がある企業や開発者にとって特に有用で、ドキュメントのプロフェッショナリズムと自動化レベルを大きく向上させます。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?