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

PDFファイルを作成する - PDF::API2で帳票作成

PDF::API2で、PDFファイルを作成するには次のようにします。

PDFの空の情報を作成するには、newメソッドを使用します。

空のページを追加するには、pageメソッドを使います。

最後にsaveasメソッドを使って、ファイルを保存します。

この手順を行うことで、空の1ページが存在するPDFファイルを作成できます。

use strict;
use warnings;

use PDF::API2;

# PDFの空の情報を作成
my $pdf = PDF::API2->new;

# 空のページを追加
my $page = $pdf->page;

# PDFをファイルに保存
my $pdf_file = 'empty.pdf';
$pdf->saveas($pdf_file);

空のPDFファイルが作成できれば、成功しています。

出力結果 空ページ

既存のPDFファイルを開く

PDF::API2で既存のPDFファイルを開くには、openメソッドを使用します。

# 既存のPDFファイルを開く
my $pdf = PDF::API2->open('some.pdf');

新しいページを追加する

PDF::API2で新しいページを追加するにはpageメソッドを使用します。pageで作成されたページは、PDFドキュメントの末尾に追加されます。

# PDFドキュメントの末尾にページを追加
my $page = $pdf->page;

引数を指定すると、指定のページに挿入できます。既存のページは、後ろにずれます。

# PDFドキュメントの指定のページにページを追加
my $page = $pdf->page(5);

既存のページを取得する

PDF::API2で既に存在しているページを取得するには、openpageメソッドで、ページ番号を指定します。ページ番号は、1から始まります。0からの始まりではないことに注意してください。

# すでに存在しているページを取得
my $page = $pdf->openpage($page_number);

ページ数を取得する

PDF::API2で、存在しているページ数を取得するには、pagesメソッドを使用します。

# PDFドキュメントのページ数を取得
my $pages_count = $pdf->pages;

用紙サイズを設定する

PDF::API2でページの用紙サイズを設定するには、mediaboxメソッドを使用します。

# 名前で指定
$pdf->mediabox($name);

# 幅と高さで指定
$pdf->mediabox($width, $height)

指定できる名前はPDFで定義されている値です。以下に指定できる例を挙げておきます。これは、グローバルな設定であり、新規のページを作成した場合に、ページに設定が受け継がれます。

各ページに用紙サイズを指定するには、ページオブジェクトのmediaboxメソッドを使用します。

# 名前で指定
$page->mediabox($name);

# 幅と高さで指定
$page->mediabox($width, $height)
  • Letter
  • A3
  • A4
  • B4
  • A5
  • B5
  • A6
  • B6

PDF座標系についての簡単な解説のページのリンクを張っておきます。

幅と高さは、PDF単位という値で指定する必要があることに注意します。1単位は、1/72のインチ(約0.35mm)です。

典型的なPDFドキュメントはページの幅が612単位、高さが792単位です。インチのサイズは、8.5"×11"です。幅と高さを72で割ることによって得られます。

PDF文書が画面に与えられるとき、ピクセルなどの物理的な値が通常必要です。論理的にから物理的な単位まで変換するために、解像度は提供されなければなりません。解像度は、物理的な値に論理的な変換とき、使うインチにつき点(ピクセル)の値です。上記の例では、解像度として150を使用した場合、ピクセル単位のページサイズは1275×1650になります。これは8.5×11インチに150を乗算することによって得られます。

(参考)PDF座標系

PDF::API2で、用紙サイズを指定するサンプルです。

use PDF::API2;

# A4サイズで指定
{
  my $pdf = PDF::API2->new();
  $pdf->mediabox('A4');
  my $mediabox = $pdf->mediabox;
  my $page = $pdf->page;
  my $pdf_file = 'size_a4.pdf';
  $pdf->saveas($pdf_file);
}

# B5サイズで指定
{
  my $pdf = PDF::API2->new();
  $pdf->mediabox('B5');
  my $page = $pdf->page;
  my $pdf_file = 'size_b5.pdf';
  $pdf->saveas($pdf_file);
}

# PDF単位 幅595,高さ842で指定
{
  my $pdf = PDF::API2->new();
  $pdf->mediabox(595, 842);
  my $page = $pdf->page;
  my $pdf_file = 'size_595_842.pdf';
  $pdf->saveas($pdf_file);
}

出力結果 A4サイズ出力結果 B5サイズ出力結果 595×842サイズ

用紙サイズを取得する

用紙サイズを取得するには、引数を与えないで、ページオブジェクトのmediaboxメソッドを使用します。

my @page_size_infos = $page->mediabox;

実際のページの用紙サイズの情報を取得するには、PDFオブジェクトではなく、ページオブジェクトのmediaboxメソッドを呼び出す必要があることに注意してください。

用紙サイズの情報は、4つのPDF単位で取得されることに注意してください。

(左下からのマージンX, 左下からのマージンY, 右上の座標X, 右上の座標Y)

たとえば、次のような値で、返ってきます。

(0, 0, 612, 792)

一般的には、左下からのマージンXが0、 左下からのマージンYが0で返ってきますので、右上の座標Xが幅、右上の座標Yが、高さと考えてよいでしょう。

複数のPDFファイルを結合する

複数のPDFファイルを結合する手順を紹介します。新しいPDF::API2オブジェクトを作成します。既存のPDFファイルを開きます。

import_pageメソッドを使って、既存のPDFファイルを新しいPDFに挿入します。

最後に、新しいPDFを保存して終了です。

my $pdf = PDF::API2->new();
my $old = PDF::API2->open('our/old.pdf');
 
# Add page 2 from the old PDF as page 1 of the new PDF
$pdf->import_page($old, 2);
 
$pdf->saveas('our/new.pdf');

業務に役立つPerl

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

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

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

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

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