Это не perl или php, но pdftk легко делает это и многое другое.
Я использовал PDF::Reuse. Это настолько просто, что даже не смешно. Вот соответствующий фрагмент из одного из моих скриптов:
while ( my $line = <$page_list> ) {
chomp $line;
my ($class, $drug, $page) = split ' ', $line;
my $dir = canonpath( catfile $OUTPUT_DIR, $class );
mkdir $dir unless -e $dir;
my $target = canonpath( catfile $dir, "$drug.pdf" );
prFile( $target );
prCompress( 1 );
prDoc( $INPUT_PDF, $page, $page + 1 );
prEnd();
}