package PDF::API2::Lite;
use strict;
no warnings qw[ deprecated recursion uninitialized ];
our $VERSION = '2.043'; # VERSION
BEGIN {
use PDF::API2;
use PDF::API2::Util;
use PDF::API2::Basic::PDF::Utils;
use POSIX qw( ceil floor );
use Scalar::Util qw(blessed);
use vars qw( $hasWeakRef );
}
=head1 NAME
PDF::API2::Lite - (do not use)
=head1 SYNOPSIS
$pdf = PDF::API2::Lite->new;
$pdf->page(595,842);
$img = $pdf->image('some.jpg');
$font = $pdf->corefont('Times-Roman');
$font = $pdf->ttfont('TimesNewRoman.ttf');
=head1 DESCRIPTION
This class is unmaintained (since 2007) and should not be used in new code. It
combines many of the methods from L<PDF::API2> and L<PDF::API2::Content> into a
single class but isn't otherwise any easier to use.
There have been many improvements and clarifications made to the rest of the
distribution that aren't reflected here, so the term "Lite" no longer applies.
It remains solely for compatibility with existing legacy code.
=head1 METHODS
=over
=item $pdf = PDF::API2::Lite->new
=cut
sub new {
my $class=shift(@_);
my %opt=@_;
my $self={};
bless($self,$class);
$self->{api}=PDF::API2->new(@_);
return $self;
}
=item $pdf->page
=item $pdf->page $width,$height
=item $pdf->page $llx, $lly, $urx, $ury
Opens a new page.
=cut
sub page {
my $self=shift;
$self->{page}=$self->{api}->page;
$self->{page}->mediabox(@_) if($_[0]);
$self->{gfx}=$self->{page}->gfx;
# $self->{gfx}->compressFlate;
return $self;
}
=item $pdf->mediabox $w, $h
=item $pdf->mediabox $llx, $lly, $urx, $ury
Sets the global mediabox.
=cut
sub mediabox {
my ($self,$x1,$y1,$x2,$y2) = @_;
if(defined $x2) {
$self->{api}->mediabox($x1,$y1,$x2,$y2);
} else {
$self->{api}->mediabox($x1,$y1);
}
$self;
}
=item $pdf->saveas $file
Saves the document (may not be modified later) and
deallocates the pdf-structures.
=cut
sub saveas {
my ($self,$file)=@_;
if($file eq '-') {
return $self->{api}->to_string();
} else {
$self->{api}->save($file);
return $self;
}
foreach my $k (keys %{$self}) {
if(blessed($k) and $k->can('release')) {
$k->release(1);
} elsif(blessed($k) and $k->can('end')) {
$k->end;
}
$self->{$k}=undef;
delete($self->{$k});
}
return;
}
=item $font = $pdf->corefont $fontname
Returns a new or existing adobe core font object.
B<Examples:>
$font = $pdf->corefont('Times-Roman');
$font = $pdf->corefont('Times-Bold');
$font = $pdf->corefont('Helvetica');
$font = $pdf->corefont('ZapfDingbats');
=cut
sub corefont {
my ($self,$name,@opts)=@_;
my $obj=$self->{api}->corefont($name,@opts);
return $obj;
}
=item $font = $pdf->ttfont $ttfile
Returns a new or existing truetype font object.
B<Examples:>
$font = $pdf->ttfont('TimesNewRoman.ttf');
$font = $pdf->ttfont('/fonts/Univers-Bold.ttf');
$font = $pdf->ttfont('../Democratica-SmallCaps.ttf');
=cut
sub ttfont {
my ($self,$file,@opts)=@_;
return $self->{api}->ttfont($file,@opts);
}
=item $font = $pdf->psfont($ps_file, [%options])
Returns a new type1 font object.
B<Examples:>
$font = $pdf->psfont('TimesRoman.pfa', -afmfile => 'TimesRoman.afm', -encode => 'latin1');
$font = $pdf->psfont('/fonts/Univers.pfb', -pfmfile => '/fonts/Univers.pfm', -encode => 'latin2');
=cut
sub psfont {
my ($self,@args)=@_;
return $self->{api}->psfont(@args);
}
#=item @color = $pdf->color $colornumber [, $lightdark ]
#
#=item @color = $pdf->color $basecolor [, $lightdark ]
#
#Returns a color.
#
#B<Examples:>
#
# @color = $pdf->color(0); # 50% grey
# @color = $pdf->color(0,+4); # 10% grey
# @color = $pdf->color(0,-3); # 80% grey
# @color = $pdf->color('yellow'); # yellow, fully saturated
# @color = $pdf->color('red',+1); # red, +10% white
# @color = $pdf->color('green',-2); # green, +20% black
#
#=cut
#
#sub color {
# my $self=shift @_;
# return $self->{api}->businesscolor(@_);
#}
=item $egs = $pdf->create_egs
Returns a new extended-graphics-state object.
B<Examples:>
$egs = $pdf->create_egs;
=cut
sub create_egs {
my ($self)=@_;
return $self->{api}->egstate;
}
=item $img = $pdf->image_jpeg $file
Returns a new jpeg-image object.
=cut
sub image_jpeg {
my ($self,$file)=@_;
return $self->{api}->image_jpeg($file);
}
=item $img = $pdf->image_png $file
Returns a new png-image object.
=cut
sub image_png {
my ($self,$file)=@_;
return $self->{api}->image_png($file);
}
=item $img = $pdf->image_tiff $file
Returns a new tiff-image object.
=cut
sub image_tiff {
my ($self,$file)=@_;
return $self->{api}->image_tiff($file);
}
=item $img = $pdf->image_pnm $file
Returns a new pnm-image object.
=cut
sub image_pnm {
my ($self,$file)=@_;
return $self->{api}->image_pnm($file);
}
=item $pdf->savestate
Saves the state of the page.
=cut
sub savestate {
my $self=shift @_;
$self->{gfx}->save;
}
=item $pdf->restorestate
Restores the state of the page.
=cut
sub restorestate {
my $self=shift @_;
$self->{gfx}->restore;
}
=item $pdf->egstate $egs
Sets extended-graphics-state.
=cut
sub egstate {
my $self=shift @_;
$self->{gfx}->egstate(@_);
return($self);
}
=item $pdf->fillcolor $color
Sets fillcolor.
=cut
sub fillcolor {
my $self=shift @_;
$self->{gfx}->fillcolor(@_);
return($self);
}
=item $pdf->strokecolor $color
Sets strokecolor.
B<Defined color-names are:>
aliceblue, antiquewhite, aqua, aquamarine, azure, beige, bisque, black, blanchedalmond,
blue, blueviolet, brown, burlywood, cadetblue, chartreuse, chocolate, coral, cornflowerblue,
cornsilk, crimson, cyan, darkblue, darkcyan, darkgoldenrod, darkgray, darkgreen, darkgrey,
darkkhaki, darkmagenta, darkolivegreen, darkorange, darkorchid, darkred, darksalmon,
darkseagreen, darkslateblue, darkslategray, darkslategrey, darkturquoise, darkviolet,
deeppink, deepskyblue, dimgray, dimgrey, dodgerblue, firebrick, floralwhite, forestgreen,
fuchsia, gainsboro, ghostwhite, gold, goldenrod, gray, grey, green, greenyellow, honeydew,
hotpink, indianred, indigo, ivory, khaki, lavender, lavenderblush, lawngreen, lemonchiffon,
lightblue, lightcoral, lightcyan, lightgoldenrodyellow, lightgray, lightgreen, lightgrey,
lightpink, lightsalmon, lightseagreen, lightskyblue, lightslategray, lightslategrey,
lightsteelblue, lightyellow, lime, limegreen, linen, magenta, maroon, mediumaquamarine,
mediumblue, mediumorchid, mediumpurple, mediumseagreen, mediumslateblue, mediumspringgreen,
mediumturquoise, mediumvioletred, midnightblue, mintcream, mistyrose, moccasin, navajowhite,
navy, oldlace, olive, olivedrab, orange, orangered, orchid, palegoldenrod, palegreen,
paleturquoise, palevioletred, papayawhip, peachpuff, peru, pink, plum, powderblue, purple,
red, rosybrown, royalblue, saddlebrown, salmon, sandybrown, seagreen, seashell, sienna,
silver, skyblue, slateblue, slategray, slategrey, snow, springgreen, steelblue, tan, teal,
thistle, tomato, turquoise, violet, wheat, white, whitesmoke, yellow, yellowgreen
or the rgb-hex-notation:
#rgb, #rrggbb, #rrrgggbbb and #rrrrggggbbbb
or the cmyk-hex-notation:
%cmyk, %ccmmyykk, %cccmmmyyykkk and %ccccmmmmyyyykkkk
or the hsl-hex-notation:
&hsl, &hhssll, &hhhssslll and &hhhhssssllll
and additionally the hsv-hex-notation:
!hsv, !hhssvv, !hhhsssvvv and !hhhhssssvvvv
=cut
sub strokecolor {
my $self=shift @_;
$self->{gfx}->strokecolor(@_);
return($self);
}
=item $pdf->linedash @dash
Sets linedash.
=cut
sub linedash {
my ($self,@a)=@_;
$self->{gfx}->linedash(@a);
return($self);
}
=item $pdf->linewidth $width
Sets linewidth.
=cut
sub linewidth {
my ($self,$linewidth)=@_;
$self->{gfx}->linewidth($linewidth);
return($self);
}
=item $pdf->transform %opts
Sets transformations (eg. translate, rotate, scale, skew) in pdf-canonical order.
B<Example:>
$pdf->transform(
-translate => [$x,$y],
-rotate => $rot,
-scale => [$sx,$sy],
-skew => [$sa,$sb],
)
=cut
sub transform {
my ($self,%opt)=@_;
$self->{gfx}->transform(%opt);
return($self);
}
=item $pdf->move $x, $y
=cut
sub move { # x,y ...
my $self=shift @_;
$self->{gfx}->move(@_);
return($self);
}
=item $pdf->line $x, $y
=cut
sub line { # x,y ...
my $self=shift @_;
$self->{gfx}->line(@_);
return($self);
}
=item $pdf->curve $x1, $y1, $x2, $y2, $x3, $y3
=cut
sub curve { # x1,y1,x2,y2,x3,y3 ...
my $self=shift @_;
$self->{gfx}->curve(@_);
return($self);
}
=item $pdf->arc $x, $y, $a, $b, $alfa, $beta, $move
=cut
sub arc { # x,y,a,b,alf,bet[,mov]
my $self=shift @_;
$self->{gfx}->arc(@_);
return($self);
}
=item $pdf->ellipse $x, $y, $a, $b
=cut
sub ellipse {
my $self=shift @_;
$self->{gfx}->ellipse(@_);
return($self);
}
=item $pdf->circle $x, $y, $r
=cut
sub circle {
my $self=shift @_;
$self->{gfx}->circle(@_);
return($self);
}
=item $pdf->rect $x,$y, $w,$h
=cut
sub rect { # x,y,w,h ...
my $self=shift @_;
$self->{gfx}->rect(@_);
return($self);
}
=item $pdf->rectxy $x1,$y1, $x2,$y2
=cut
sub rectxy {
my $self=shift @_;
$self->{gfx}->rectxy(@_);
return($self);
}
=item $pdf->poly $x1,$y1, ..., $xn,$yn
=cut
sub poly {
my $self=shift @_;
$self->{gfx}->poly(@_);
return($self);
}
=item $pdf->close
=cut
sub close {
my $self=shift @_;
$self->{gfx}->close;
return($self);
}
=item $pdf->stroke
=cut
sub stroke {
my $self=shift @_;
$self->{gfx}->stroke;
return($self);
}
=item $pdf->fill
=cut
sub fill { # nonzero
my $self=shift @_;
$self->{gfx}->fill;
return($self);
}
=item $pdf->fillstroke
=cut
sub fillstroke { # nonzero
my $self=shift @_;
$self->{gfx}->fillstroke;
return($self);
}
=item $pdf->image $imgobj, $x,$y, $w,$h
=item $pdf->image $imgobj, $x,$y, $scale
=item $pdf->image $imgobj, $x,$y
B<Please Note:> The width/height or scale given
is in user-space coordinates which is subject to
transformations which may have been specified beforehand.
Per default this has a 72dpi resolution, so if you want an
image to have a 150 or 300dpi resolution, you should specify
a scale of 72/150 (or 72/300) or adjust width/height accordingly.
=cut
sub image {
my $self=shift @_;
$self->{gfx}->image(@_);
return($self);
}
=item $pdf->textstart
=cut
sub textstart {
my $self=shift @_;
$self->{gfx}->textstart;
return($self);
}
=item $pdf->textfont $fontobj,$size
=cut
sub textfont {
my $self=shift @_;
$self->{gfx}->font(@_);
return($self);
}
=item $txt->textleading $leading
=cut
# Deprecated: leading is the correct term for this operator
sub textlead { return textleading(@_) }
sub textleading {
my $self=shift @_;
$self->{gfx}->leading(@_);
return($self);
}
=item $pdf->text $string
Applies the given text.
=cut
sub text {
my $self=shift @_;
return $self->{gfx}->text(@_)||$self;
}
=item $pdf->nl
=cut
sub nl {
my $self=shift @_;
$self->{gfx}->nl;
return($self);
}
=item $pdf->textend
=cut
sub textend {
my $self=shift @_;
$self->{gfx}->textend;
return($self);
}
=item $pdf->print $font, $size, $x, $y, $rot, $just, $text
Convenience wrapper for shortening the textstart..textend sequence.
=cut
sub print {
my $self=shift @_;
my ($font, $size, $x, $y, $rot, $just, @text)=@_;
my $text=join(' ',@text);
$self->textstart;
$self->textfont($font, $size);
$self->transform(
-translate=>[$x, $y],
-rotate=> $rot,
);
if($just==1) {
$self->{gfx}->text_center($text);
} elsif($just==2) {
$self->{gfx}->text_right($text);
} else {
$self->text(@text);
}
$self->textend;
return($self);
}
1;
__END__
=back
=cut