PDFは、デジタル文書管理の分野で一般的に使用されているフォーマットの1つで、主にテキスト、画像、表、リンクなどを含む複雑な文書の保存と共有に使用されます。一方、TIFF (Tagged Image File Format) は、画像処理の分野で一般的に使用され、主に高品質の画像ファイルの保存に使用されます。
実際には、さまざまなシナリオに適応するために、PDFファイルをTIFF画像に変換したり、TIFFをPDFに変換したりする必要がある場合があります。この記事では、PDFとTIFFフォーマットの相互変換を実現するためにPythonを使用する方法を紹介します。
必要なPythonライブラリ
- Spire.PDF for Python - Python プログラムで PDF ドキュメントの作成、読み込み、編集、変換、保存をサポートするサードパーティライブラリ。
- Pillow - Python の画像処理ライブラリ(PIL ライブラリベース)。JPEG, PNG, GIF, TIFF, BMP など幅広い画像フォーマットをサポートしており、画像の読み込み・変更・作成・保存を行う関数を提供。
これら2つのPythonライブラリは、以下のpipコマンドを使ってインストールできる:
pip install Spire.Pdf
pip install pillow
PythonでPDFファイルを複数ページのTIFF画像に変換する
TIFFフォーマットは複数ページの画像の保存をサポートしているため、スキャンした本や新聞、レポートなど、複数の画像やページを含む文書の保存や配布に最適です。PDFファイルをTIFFに変換するには、Spire.PDF for Pythonライブラリが提供するインターフェースを使用してPDF内の各ページを画像ストリームに変換し、Pillowライブラリを使用してこれらの画像ストリームを1つの連続した複数ページのTIFFファイルにマージする必要があります。
主な手順と方法は以下の通り:
- PDF ファイルを読み込むには、
PdfDocument
クラスのLoadFromFile()
メソッドを使用します; - PDFページを画像に変換する:
- PDFファイルの各ページを繰り返し処理します;
- PdfDocumentクラスの
SaveAsImage()
メソッドを使用して、各ページを画像ストリームに変換します; - Pillowライブラリを使用して画像ストリームをImageオブジェクトに変換し、リストに追加します。
- リ ス ト 内の画像を複数ページ TIFF フ ァ イ ル と し て保存 し ます。
Pythonのコード:
from spire.pdf.common import *
from spire.pdf import *
from PIL import Image
from io import BytesIO
# PDF文書を読み込む
pdf = PdfDocument()
pdf.LoadFromFile("sample.pdf")
# リストを作成する
images = []
# PDF文書内のすべてのページを反復処理する
for i in range(pdf.Pages.Count):
# 指定されたページを画像ストリームに変換する
with pdf.SaveAsImage(i) as imageData:
# 画像ストリームを画像オブジェクトに変換する
img = Image.open(BytesIO(imageData.ToArray()))
# 変換された画像オブジェクトをリストに追加する
images.append(img)
# 最初の画像をベースとして使用し、残りの画像をこのベースに追加して、連続した複数ページのTIFFファイルを形成する
images[0].save("PDFtoTIFF.tiff", save_all=True, append_images=images[1:])
# リソースの解放
pdf.Dispose()
PythonでTIFF画像をPDFファイルに変換する
複数ページのTIFF画像をPDF文書に変換するには、まずPillowライブラリを使ってTIFF画像の各フレームを分割してPNG画像として保存し、次にSpire.PDF for Pythonライブラリを使ってこれらの画像をPDFページに描画する必要があります。
主な手順と方法は以下の通り:
-
PdfDocument
オブジェクトを作成する - Pillowライブラリを使用してTIFF画像ファイルを読み込む
- TIFF画像のフレームを処理する
- TIFF画像の各フレームを繰り返し処理します
- 現在のフレームを取得し、Pillowライブラリが提供する
copy()
メソッドを使用して現在のフレームをコピーします - Pillowライブラリが提供する
save()
メソッドを使用して、現在のフレームを指定された形式の画像ファイルとして保存します - Spire.PDFライブラリを使用して、画像ファイルをPDF画像オブジェクトに変換します。
- 画像をPDFページに描画します
-
PdfDocument.Pages.Add()
メ ソ ッ ド を使っ て、 PDF 文書内にページ を追加 し ます -
PdfPageBase.Canvas.DrawImage()
メソッドを使用して、PDFページ上に画像を描画します
-
- PDFファイルを保存します。
Pythonのコード:
from spire.pdf.common import *
from spire.pdf import *
from PIL import Image
import io
# PdfDocumentオブジェクトを作成する
pdf = PdfDocument()
# マージンの設定
pdf.PageSettings.SetMargins(0.0)
# TIFF画像の読み込み
tiff_image = Image.open("PDFtoTIFF.tiff")
# 各フレームを繰り返し処理する
for i in range(tiff_image.n_frames):
# 現在のフレームを取得
tiff_image.seek(i)
# 現在のフレームをコピーし、PNG画像ファイルとして保存する。
tiff_image.copy().save("output_frame_{i}.png")
# PNG画像ファイルをPDF画像オブジェクトに変換する
image = PdfImage.FromFile("output_frame_{i}.png")
# 画像の幅と高さを取得する
width = image.PhysicalDimension.Width
height = image.PhysicalDimension.Height
# PDF内の画像と同じサイズのページを追加する
page = pdf.Pages.Add(SizeF(width, height))
# ページ上の指定された位置に画像を描画します
page.Canvas.DrawImage(image, 0.0, 0.0, width, height)
# PDF文書を保存する
pdf.SaveToFile("TIFFtoPDF.pdf",FileFormat.PDF)
# リソースの解放
pdf.Dispose()
生成されたPDFファイル:
赤い透かしを消すには、クリックして1ヶ月の無料ライセンスを申請してください:
PDF Python ライブラリがサポートするその他の PDF 変換関数: