1. Perl
  2. 帳票作成
  3. here

画像を挿入する - PDF::API2で帳票作成

PDF::API2で、PNG,GIF,JPEGの画像を挿入する方法を解説します。

PDFには、画像を含めることができます。PDF::API2では、PNG,GIF,JPEG画像を、PDFに挿入することができます。

画像ファイルの挿入

画像ファイルを挿入するには、まず画像ファイルを読み込んで、画像表現するリソースオブジェクトを生成する必要があります。

画像ファイルの読み込み

画像ファイルを読み込んで、画像表現するリソースオブジェクトを生成しましょう。

JPEGファイルの読み込み

PDF::API2で、JPEGファイルを読み込むには、image_jpegメソッドを使用します。JPEG画像を表現するリソースオブジェクトが返されます。

# JPEG画像を表現するリソースオブジェクトを生成
my $image_file = '/path/image.jpeg';
my $image_object = $pdf->image_jpeg($image_file);

PNGファイルの読み込み

PDF::API2で、PNGファイルを読み込むには、image_pngメソッドを使用します。PNG画像を表現するリソースオブジェクトが返されます。

# PNG画像を表現するリソースオブジェクトを生成
my $image_file = '/path/image.png';
my $image_object = $pdf->image_png($image_file);

「Unsupported Interlace」というエラーがでた場合は、PNGのインターレース機能を解除する必要があります。

GIFファイルの読み込み

PDF::API2で、GIFファイルを読み込むには、image_gifメソッドを使用します。GIF画像を表現するリソースオブジェクトが返されます。

# GIF画像を表現するリソースオブジェクトを生成
my $image_file = '/path/image.gif';
my $image_object = $pdf->image_gif($image_file);

画像コンテンツオブジェクトの生成

画像を挿入するための、コンテンツオブジェクトを生成します。これはPDF::API2::Contentオブジェクトです。

# 画像を挿入するために必要なコンテンツオブジェクト
my $gfx = $page->gfx;

画像ファイルの挿入

PDF::API2で、画像ファイルを挿入するには、コンテンツオブジェクトのimageメソッドを使用します。

# 指定した位置に画像を挿入
$gfx->image($image_object, $x, $y);

# 指定した位置に画像挿入。幅と高さを指定
$gfx->image($image_object, $x, $y, $width, $height);

# 指定した位置に画像挿入。スケールを指定(1.5倍など)
$gfx->image($image_object, $x, $y, $scale);

指定した位置に画像が挿入されます。

幅と高さは、PDF単位であることに注意してください。座標は、右上に向かって進むので、指定した点から見て、右上に描画されることに注意してください。

例として、600x600のイメージを600dpiの解像度で表示したい場合は、72を指定します。

PNG画像を挿入するサンプル

PNG画像を挿入するサンプルを書いてみます。

use PDF::API2;

my $pdf = PDF::API2->new;

my $page = $pdf->page;

# PNG画像を表現するリソースオブジェクトを生成
my $image_file = "$FindBin::Bin/rokkaku.png";
my $image_object = $pdf->image_png($image_file);

# 画像を挿入するために必要なコンテンツオブジェクト
my $gfx = $page->gfx;

# 指定した位置に画像を挿入
my $x = 50;
my $y = 500;
$gfx->image($image_object, $x, $y);

my $pdf_file = 'image_png.pdf';
$pdf->saveas($pdf_file);

出力結果 PNG画像の挿入

業務に役立つPerl

Perlテキスト処理のエッセンス

PerlでポータブルなLinuxファイル管理入門

ITエンジニアの求人情報など

 ITエンジニアの求人情報・Webサービス・ソフトウェア・スクールなどの情報。

システム開発のお問い合わせ