# Literal PDF Object for Dirty Hacks ...
package PDF::API2::Basic::PDF::Literal;
use base 'PDF::API2::Basic::PDF::Objind';
use strict;
our $VERSION = '2.043'; # VERSION
use PDF::API2::Basic::PDF::Filter;
use PDF::API2::Basic::PDF::Name;
use Scalar::Util qw(blessed);
no warnings qw[ deprecated recursion uninitialized ];
sub new
{
my ($class, @opts) = @_;
my ($self);
$class = ref $class if ref $class;
$self = $class->SUPER::new(@_);
$self->{' realised'} = 1;
if(scalar @opts > 1) {
$self->{-isdict}=1;
my %opt=@opts;
foreach my $k (keys %opt) {
$self->{$k} = $opt{$k};
}
} elsif(scalar @opts == 1) {
$self->{-literal}=$opts[0];
}
return $self;
}
sub outobjdeep
{
my ($self, $fh, $pdf) = @_;
if($self->{-isdict})
{
if(defined $self->{' stream'})
{
$self->{Length} = length($self->{' stream'}) + 1;
}
else
{
delete $self->{Length};
}
$fh->print("<< ");
foreach my $k (sort keys %{$self})
{
next if($k=~m|^[ \-]|o);
$fh->print('/'.PDF::API2::Basic::PDF::Name::string_to_name($k).' ');
if(ref($self->{$k}) eq 'ARRAY')
{
$fh->print('['.join(' ',@{$self->{$k}})."]\n");
}
elsif(ref($self->{$k}) eq 'HASH')
{
$fh->print('<<'.join(' ', map { '/'.PDF::API2::Basic::PDF::Name::string_to_name($_).' '.$self->{$k}->{$_} } sort keys %{$self->{$k}})." >>\n");
}
elsif(blessed($self->{$k}) and $self->{$k}->can('outobj'))
{
$self->{$k}->outobj($fh, $pdf);
$fh->print("\n");
}
else
{
$fh->print("$self->{$k}\n");
}
}
$fh->print(">>\n");
if(defined $self->{' stream'})
{
$fh->print("stream\n$self->{' stream'}\nendstream"); # next is endobj which has the final cr
}
}
else
{
$fh->print($self->{-literal}); # next is endobj which has the final cr
}
}
sub val
{ $_[0]; }
1;