CAM-PDF-Annot
view release on metacpan or search on metacpan
lib/CAM/PDF/Annot.pm view on Meta::CPAN
# store the refkey for later
$$refKeys{$otherAnnotRef->{value}} = $newkey;
# append a reference to this annot to the annotations object of this page
my $annotRef = CAM::PDF::Node->new('reference', "$newkey", $self->getPageObjnum( $page ), '0');
push @{$annots->{value}}, $annotRef;
# Append the appearance object (if it exists)
$self->_appendAppearanceObject( $otherDoc, $annotRef, $refKeys );
# Append the popup object (if it exists)
$self->_appendPopupObject( $page, $otherDoc, $annotRef, { $otherAnnotRef->{value} => $newkey }, $refKeys );
# Verify if it has an IRT reference (meaning, if it refers to another annotation)
my $annotVal = $self->getValue( $annotRef );
if ( exists $annotVal->{IRT} ) {
# Check if it is a reference to an already added object
unless ( exists $refKeys->{$annotVal->{IRT}{value}} ) {
# In this case the IRT must be added
$self->appendAnnotation( $page, $otherDoc, $annotVal->{IRT}, $refKeys );
}
lib/CAM/PDF/Annot.pm view on Meta::CPAN
}
return %refs;
}
sub _appendPopupObject() {
my ( $self, $page, $otherDoc, $annotRef, $parentKeys, $refKeys ) = @_;
my $annotVal = $self->getValue( $annotRef );
my $annots = $self->getPage( $page )->{Annots};
my %refs =();
# Now check if it has a reference to a popup object
# (it is bound to have it...)
# And also check if it wasnt already added
if ( exists $annotVal->{Popup} ) {
unless ( exists $refKeys->{$annotVal->{Popup}{value}} ) {
my $pupkey = $self->appendObject( $otherDoc, $annotVal->{Popup}{value}, 0 );
$$refKeys{$annotVal->{Popup}{value}} = $pupkey;
$refs{$annotVal->{Popup}{value}} = $pupkey;
# change its parent reference
$self->changeRefKeys( $self->{objcache}{$pupkey}, $parentKeys );
( run in 2.396 seconds using v1.01-cache-2.11-cpan-364913b4093 )