0
1

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 1 year has passed since last update.

Pythonを利用してPDFのレイヤーを追加、非表示、削除する

Posted at

PDFのレイヤーは画像編集ソフトのレイヤーと似ており、文書のさまざまな要素を個別に整理・管理することができます。各レイヤーは、テキスト、画像、グラフィック、注釈などの異なるコンテンツを含むことができ、独立して表示または非表示にすることができます。PDFレイヤーは、文書内の特定の要素の表示や位置を制御するために使用されることが多く、複雑なレイアウトの管理や動的なデザインの作成、情報の表示の制御が容易になります。この記事では、Pythonプログラムを使ってPDF文書内のレイヤーを追加・非表示・削除する方法を紹介します。

この記事で使用している方法は、Spire.PDF for Pythonが必要です。公式サイトからダウンロードするか、PyPIからインストールすることができます: pip install Spire.PDF

PythonでPDFにレイヤーを追加する

PdfDocument.SaveToFile() メソッドは、PDFドキュメントをHTML形式に変換することができます。具体的な手順は以下の通りです。

  • PdfDocument クラスのオブジェクトを作成します。
  • PdfDocument.LoadFromFile() メソッドを使用してPDFドキュメントを読み込みます。
  • PdfDocument.SaveToFile() メソッドを使用してPDFドキュメントをHTML形式で保存します。
from spire.pdf.common import *
from spire.pdf import *

# PdfDocumentのインスタンスを作成する
doc = PdfDocument()

# PDFファイルを読み込む
doc.LoadFromFile("サンプル.pdf")

# "透かし"という名前のレイヤーを作成する
layer = doc.Layers.AddLayer("透かし")

# フォントを作成する
font = PdfTrueTypeFont("HarmonyOS Sans SC", 50.0, 1, True)

# 透かしのテキストを指定する
watermarkText = "コピー禁止"

# テキストのサイズを取得する
fontSize = font.MeasureString(watermarkText)

# ページ数を取得する
pageCount = doc.Pages.Count

# ページを繰り返す
for i in range(0, pageCount):

    # 特定のページを取得する
    page = doc.Pages[i]

    # レイヤー用のキャンバスを作成する
    canvas = layer.CreateGraphics(page.Canvas)

    # グラフィックスにテキストを描画する
    canvas.DrawString(watermarkText, font, PdfBrushes.get_Gray(), (canvas.Size.Width - fontSize.Width)/2, (canvas.Size.Height - fontSize.Height)/2 )

# ファイルに保存する
doc.SaveToFile("output/PDFにレイヤーを追加.pdf", FileFormat.PDF)
doc.Close()

出力PDF文書:
PythonでPDFにレイヤーを追加する

PythonでPDFのレイヤーの可視性を設定する

PDFドキュメント内のレイヤーの表示状態を制御するには、PdfDocument.Layers[index].Visibility プロパティを使用します。レイヤーを非表示にするには、それをoffに設定し、レイヤーを表示するには、それをonに設定します。具体的な手順は以下の通りです。

  • PdfDocument オブジェクトを作成します。
  • PdfDocument.LoadFromFile() メソッドを使用してPDFファイルを読み込みます。
  • Document.Layers[index].Visibility プロパティを使用して、特定のレイヤーの表示状態を設定します。
  • PdfDocument.SaveToFile() メソッドを使用して、ドキュメントを別のPDFファイルに保存します。
from spire.pdf.common import *
from spire.pdf import *

# PdfDocumentのインスタンスを作成
doc = PdfDocument()

# PDFファイルを読み込む
doc.LoadFromFile("サンプル.pdf")

# レイヤーの表示をオフにして非表示にする
doc.Layers[0].Visibility = PdfVisibility.Off

# ファイルに保存
doc.SaveToFile("output/PDFレイヤーを隠す.pdf", FileFormat.PDF)
doc.Close()

PythonでPDFからレイヤーを削除する

不要なレイヤーを削除するには、PdfDocument.Layers.RemoveLayer() メソッドを使用します。以下に具体的な手順を示します。

  • PdfDocument オブジェクトを作成します。
  • PdfDocument.LoadFromFile() メソッドを使用してPDFファイルを読み込みます。
  • PdfDocument.Layers[index] プロパティを使用して、特定のレイヤーを取得します。
  • PdfDcument.Layers.RemoveLayer(PdfLayer.Name) メソッドを使用して、ドキュメントからレイヤーを削除します。
  • PdfDocument.SaveToFile() メソッドを使用して、ドキュメントを別のPDFファイルに保存します。
from spire.pdf.common import *
from spire.pdf import *

# PdfDocumentのインスタンスを作成
doc = PdfDocument()

# PDFファイルを読み込む
doc.LoadFromFile("サンプル.pdf")

# 特定のレイヤーを削除する
doc.Layers.RemoveLayer(doc.Layers[0].Name)

# ファイルに保存
doc.SaveToFile("output/PDFレイヤーを削除.pdf", FileFormat.PDF)
doc.Close()

この記事では、Pythonコードを使用してPDFドキュメントにレイヤーを追加、非表示、削除する方法について説明しました。Spire.PDF for Pythonには他にも多くのPDF処理機能がありますので、詳細な情報についてはSpire.PDF for Pythonのチュートリアルを参照してください。もしAPIの使用中に問題が発生した場合は、Spire.PDFフォーラムで技術サポートを受けることができます。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?