use strict; use warnings; use feature 'say'; use CAM::PDF; my $pdf = CAM::PDF-> new( $ARGV[ 0 ]) or die; my $page = $pdf-> getPage( 1 ); my $anns = $pdf-> getValue( $page-> { Annots } or die ); for ( @$anns ) { my $ann = $pdf-> getValue( $_ ); next unless $pdf-> getValue( $ann-> { Subtype }) eq 'Highlight'; say $ann; say "\t$_" for map $pdf-> getValue( $_ ), @{ $pdf-> getValue( $ann-> { QuadPoints })} } __END__ HASH(0xd79f0c) 237.641 651.308 271.059 651.308 237.641 641.602 271.059 641.602 61.4118 637.963 92.1406 637.963 61.4118 628.257 92.1406 628.257 HASH(0xe8f43c) 288.529 611.271 320.753 611.271 288.529 601.566 320.753 601.566