Модуль 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();