Модуль PDF::API2 предназначен для создания новых документов на языке Perl и не дает возможностей полноценного редактирования уже существующих. Поиск текста, замена и т.п.
Но с "простым" редактированием текста модуль справляется успешно. К примеру, при заполнении шаблонной документации (квитанции, бланки).
Также, PDF::API2 поддерживает работу с шрифтами, цветом текста, его форматированием, вставку изображений, импорт из сторонних pdf-документов.
Более подробное руководство по использованию. Модуль на cpan.
Реализация: Александр Симаков
use strict;
use warnings;
our $VERSION = qw($Revision$) [1];
use Readonly;
use PDF::API2;
# Размер бумаги A4
Readonly my $PAGE_WIDTH => 210;
Readonly my $PAGE_HEIGHT => 297;
# Внутренняя единица измерения PDF::API2 - пункты
# см. http://ru.wikipedia.org/wiki/Типографский_пункт
Readonly my $ONE_MILLIMETER_IN_POINTS => 72 / 25.4;
# Перевод миллиметров в типографские пункты
sub _mm_to_pt {
my $mm = shift;
return $mm * $ONE_MILLIMETER_IN_POINTS;
}
sub main {
# Создаём PDF-объект
my $pdf = PDF::API2->new( -file => 'example.pdf' );
# Создаём новую станицу размера A4
my $page = $pdf->page();
$page->mediabox( _mm_to_pt($PAGE_WIDTH), _mm_to_pt($PAGE_HEIGHT) );
# Встраиваем в PDF-файл шрифты
my %fonts = (
Helvetica => {
Bold => $pdf->corefont('Helvetica-Bold'),
Roman => $pdf->corefont('Helvetica'),
Italic => $pdf->corefont('Helvetica-Oblique'),
},
);
# Напишем строку текста
my $text_ctx = $page->text();
$text_ctx->font( $fonts{'Helvetica'}{'Bold'}, 12 );
$text_ctx->fillcolor('red');
# В PDF::API2 - начало координат в левом нижнем углу
$text_ctx->translate(
_mm_to_pt( $PAGE_WIDTH / 2 ),
_mm_to_pt( $PAGE_HEIGHT / 2 )
);
# Выводим строку с выравниванием по центру
$text_ctx->text_center('Hello PDF::API2');
$pdf->save();
return;
}
main();