Thursday, April 23, 2009

perl pdf table and image

#!usr/bin/perl -w
use PDF::API2;
use PDF::Table;

# PDFつくる
my $pdf = PDF::API2->new;
my $pdftable = new PDF::Table;


# ページつくる
my $page = $pdf->page(0); # 0 は最後に追加

#ページのサイズ決める
$page->mediabox( 'A4');
#ピクセルでサイズ指定
#$page->mediabox( 512, 512 );
# mm で指定。PDF::API2 は 72dpiらしいので
#$page->mediabox( 210 / 25.4 * 72 , 297 / 25.4 * 72 );

# 画像を入れる
my $image = $pdf->image_jpeg('bill.jpg');
my $gfx = $page->gfx;
# 左下スミが原点
my $xpos = 100 ; my $ypos = 500;
my $image_resolution = 350 ;
my $scale = 400 / $image_resolution ;
$gfx->image( $image, $xpos, $ypos, $scale );

my $some_data =[
["1 Lorem ipsum dolor",
"Donec odio neque, faucibus vel",
"consequat quis, tincidunt vel, felis."],
["Nulla euismod sem eget neque.",
"Donec odio neque",
"Sed eu velit."],
#... and so on
];

$left_edge_of_table = 50;
# build the table layout
$pdftable->table(
# required params
$pdf,
$page,
$some_data,
x => $left_edge_of_table,
w => 495,
start_y => 750,
next_y => 700,
start_h => 300,
next_h => 500,
# some optional params
padding => 5,
padding_right => 10,
background_color_odd => "gray",
background_color_even => "lightblue", #cell background color for even rows
);


# 既存のPDFのページを1ページ追加する
# 既存のPDFを開く
my $mypdf = PDF::API2->open('aaa.pdf');
# 16ページ目を追加する
$pdf->importpage( $mypdf, 16);

# 保存する
$pdf->saveas('ddd.pdf');