PDF によるハガキ印刷をしようと思うのだが[Perl]
(2014-05-16 15:44:41) by shinoda


< ページ移動: 1 2 >

住所データを渡して、ハガキ印刷用の PDF を作成するプログラムを作っているのでメモ。
環境は、以前「Perl で PDF 文書を作成してみた」で書いたように、Perl + PDF::API2 モジュールの組み合わせ。

まずは、郵便番号の位置調整。
注意点は、


といったところか。

cjkfont で文字間隔が調整出来ないのは痛いな。やっぱ、ちゃんと郵便番号は枠内に入れたいからな。
普通にセットしちゃうとこんな感じ。完全に枠から出ちゃう。

<画像:20140516_pdf1.jpg>

均等割付のレイアウトがあればいいんだが、どうもそういうのはなさげ(あったら教えてください>識者の方)

そこで、郵便番号については、一旦1桁ずつに分解し、位置を調整しながら1桁ずつ貼り付けていくようにする。

$page->mediabox(&mm2px(100), &mm2px(148)); # ハガキサイズ(100mm x 148mm)

my $font2 = $pdf->cjkfont("KozGo"); # 日本語ゴシック

# 郵便番号 742-0301 の処理
# 郵便番号1(3桁)
my @post1 = split //, '742'; # 3文字にバラす
my $text = $page->text();
$text->font($font2, 20);
for (my $i = 0; $i < 3; $i++) {
$text->translate(&mm2px(45.5 + ($i * 7.0)), &mm2px(148 - 18.5));
$text->text($post1[$i]);
}

# 郵便番号2(4桁)
my @post2 = split //, '0301'; # 4文字にバラす
$text = $page->text();
$text->font($font2, 20);
for (my $i = 0; $i < 4; $i++) {
$text->translate(&mm2px(67 + ($i * 6.7)), &mm2px(148 - 18.5));
$text->text($post2[$i]);
}

sub mm2pt {
# ミリを 72DPI 時のピクセル数に変換
my $mm = $_[0];
my $px = $mm / 25.4 * 72;
return $px;
}

こんな感じ。

<画像:20140516_pdf2.jpg>

< ページ移動: 1 2 >


コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8