PDF文書は、異なるプラットフォーム間で情報を共有するための標準的な形式となりました。しかし、PDFはテキストやグラフィカルなコンテンツの整合性を保持するための堅牢な方法を提供する一方で、画像は視覚的なコミュニケーションの領域を支配し続けています。画像は、多くのデバイスで広くサポートされており、ウェブサイトやプレゼンテーション、さまざまな他の文書にシームレスに統合することができます。そのため、PDFを画像に変換することは、コンテンツ配信のアクセシビリティと多様性を向上させるための重要な解決策として登場しています。さらに、PDFを画像に変換することで、テキストのコピーまたは変更がより困難になる追加の保護層が提供されます。この記事では、Pythonを使用してPDFドキュメントを簡単に画像に変換する方法を紹介します。
この記事で説明する方法にはSpire.PDF for Pythonが必要です。これは公式ウェブサイトからダウンロードするか、PyPI経由でインストールすることができます。
pip install Spire.PDF
PDFページをPNG画像に変換する
PDF文書をロードした後、PdfDocument.SaveAsImage(int pageIndex) メソッドを使用して、PDF文書の特定のページをPNG画像として保存することができます。その後、画像をPNGファイルとして保存します。具体的な手順は以下の通りです。
- PdfDocument クラスのオブジェクトを作成し、PdfDocument.LoadFromFile() メソッドを使用してPDF文書をロードします。
- 指定したページを PdfDocument.SaveAsImage() メソッドを使用してPNG画像として保存します。
- Save() メソッドを使用してPNG画像をファイルに保存します。
- PDF文書を閉じます。
コード例
Python
from spire.pdf import *
from spire.pdf.common import *
# PdfDocumentクラスのオブジェクトを作成し、PDFドキュメントを読み込む
pdf = PdfDocument()
pdf.LoadFromFile("サンプル.pdf")
# ドキュメントの2ページ目をpng画像に変換する
image = pdf.SaveAsImage(1, PdfImageType.Bitmap)
# 画像をpngファイルに保存する
image.Save("output/画像/ページ-2.png")
pdf.Close()
PDFドキュメントを複数の画像に変換する
PDF文書のすべてのページを個々のPNGファイルに変換する必要がある場合は、文書の各ページをループしてPNGファイルとして保存するだけです。以下に詳細な手順を示します。
- PdfDocument クラスのオブジェクトを作成し、PdfDocument.LoadFromFile() メソッドを使用してPDF文書をロードします。
- 文書内のページをループして、PdfDocument.SaveAsImage() メソッドを使用して各ページを画像に変換します。そして、各画像をPNGファイルに保存します。
- 文書を閉じます。
コード例
Python
from spire.pdf import *
from spire.pdf.common import *
# PdfDocumentクラスのオブジェクトを作成し、PDFドキュメントを読み込む
pdf = PdfDocument()
pdf.LoadFromFile("サンプル.pdf")
# ドキュメント内の各ページをループする
for i in range(pdf.Pages.Count):
# ページを画像に変換する
image = pdf.SaveAsImage(i, PdfImageType.Bitmap)
# 画像をPNGファイルとして保存する
image.Save(f"output/画像/ページ-{i + 1}.png")
pdf.Close()
PDFドキュメントを長い画像に変換する
PDFのすべてのページを1つの長い画像に変換するには、まずすべてのページを個別の画像に変換し、その後、PILの画像処理機能を使用してこれらの画像データを結合します。以下に、詳細な手順を示します。
- PdfDocument クラスのオブジェクトを作成し、PdfDocument.LoadFromFile() メソッドを使用してPDF文書をロードします。
- 文書内のページをループして、PdfDocument.SaveAsImage() メソッドを使用して各ページを画像に変換します。そして、各画像データを読み込み、リストに格納します。
- 最初の画像の長さと幅を取得します。
- 各画像を順番に長い画像に貼り付ける。
- 長い画像をPNGファイルとして保存します。
コード例
Python
from spire.pdf import *
from spire.pdf.common import *
from PIL import Image
import io
# PdfDocumentクラスのオブジェクトを作成し、PDFドキュメントを読み込む
pdf = PdfDocument()
pdf.LoadFromFile("サンプル.pdf")
# 画像ストリームを保存するためのリストを作成する
images = []
# ドキュメント内の各ページをループする
for i in range(pdf.Pages.Count):
# 各ページを画像に変換し、リストに保存する
imageStream = pdf.SaveAsImage(i, PdfImageType.Bitmap)
imageData = imageStream.ToArray()
image = Image.open(io.BytesIO(imageData))
images.append(image)
# 最初のページとそのサイズを取得する
firstImage = images[0]
imageWidth, imageHeight = firstImage.size
# 長い画像として新しい画像を作成する
mergedImage = Image.new('RGB', (imageWidth, imageHeight * len(images)))
# 各画像を順番に長い画像に貼り付ける
for index, image in enumerate(images):
mergedImage.paste(image, (0, index * imageHeight))
# 長い画像をPNGファイルとして保存する
mergedImage.save("output/画像/長い画像.png")
pdf.Close()
上記はPythonを使ってPDF文書を画像に変換する方法を示しています。Spire.PDF for Pythonは他にも多くの機能をサポートしています。詳しくはSpire.PDF for Pythonのチュートリアルをご覧ください。また、Spire.PDFフォーラムで議論することもできます。