⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lite.pm

📁 PDF-API2-0.2.3.7_dev.tar.gz
💻 PM
字号:
#==================================================================
#
# Copyright 1999-2001 Alfred Reibenschuh <areibens@cpan.org>.
#
# This library is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself.
#
#==================================================================
package PDF::API2::Lite;

BEGIN {
	use vars qw( $VERSION $hasWeakRef );
	( $VERSION ) = '$Revisioning: 20020418.102155 $ ' =~ /\$Revisioning:\s+([^\s]+)/;
	eval " use WeakRef; ";
	$hasWeakRef= $@ ? 0 : 1;
}


=head1 PDF::API2::Lite

=head1 NAME

PDF::API2:: - A lite high-level wrapper around PDF::API2 for pdf-creation only.

=head1 SYNOPSIS

	use PDF::API2::Lite;

	$pdf = PDF::API2::Lite->new;
	$pdf->page(595,842);
	$img = $pdf->image('some.jpg');
	$font = $pdf->corefont('Times-Roman');
	$font = $pdf->ttfont('TimesNewRoman.ttf');

=cut

use PDF::API2;
use PDF::API2::Util;
use Text::PDF::Utils;

use POSIX qw( ceil floor );

=head1 METHODS

=head2 PDF::API2::Lite

=item $pdf = PDF::API::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->{hybrid}=$self->{page}->hybrid;
	$self->{hybrid}->compress;
	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 later modified).

=cut

sub saveas {
	my ($self,$file)=@_;
	if($file eq '-') {
		return $self->{api}->stringify;
	} else {
		$self->{api}->saveas($file);
		return $self;
	}
}


=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)=@_;
	return $self->{api}->corefont($name,1);
}

=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)=@_;
	return $self->{api}->ttfont($file);
}

=item $img = $pdf->loadimage $file

Returns a new image object.

B<Examples:>

	$img = $pdf->loadimage('yetanotherfun.jpg');
	$img = $pdf->loadimage('truly24bitpic.png');
	$img = $pdf->loadimage('reallargefile.pnm');

=cut

sub loadimage {
	my ($self,$file)=@_;
	return $self->{api}->image($file);
}

=item $pdf->savestate

Saves the state of the page.

=cut

sub savestate {
	my $self=shift @_;
	$self->{hybrid}->save;
}

=item $pdf->restorestate

Restores the state of the page.

=cut

sub restorestate {
	my $self=shift @_;
	$self->{hybrid}->restore;
}

=item $pdf->fillcolor $color

Sets fillcolor.

=cut

sub fillcolor {
	my $self=shift @_;
	$self->{hybrid}->fillcolor(shift);
	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

and additionally the hsv-hex-notation:

	!hsv, !hhssvv, !hhhsssvvv and !hhhhssssvvvv

=cut

sub strokecolor {
	my $self=shift @_;
	$self->{hybrid}->strokecolor(shift);
	return($self);
}

=item $pdf->linedash @dash

Sets linedash.

=cut

sub linedash {
	my ($self,@a)=@_;
	$self->{hybrid}->linedash(@a);
	return($self);
}

=item $pdf->linewidth $width

Sets linewidth.

=cut

sub linewidth {
	my ($self,$linewidth)=@_;
	$self->{hybrid}->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->{hybrid}->transform(%opt);
	return($self);
}

=item $pdf->move $x, $y

=cut

sub move { # x,y ...
	my $self=shift @_;
	$self->{hybrid}->move(@_);
	return($self);
}

=item $pdf->line $x, $y

=cut

sub line { # x,y ...
	my $self=shift @_;
	$self->{hybrid}->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->{hybrid}->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->{hybrid}->arc(@_);
	return($self);
}

=item $pdf->ellipse $x, $y, $a, $b

=cut

sub ellipse {
	my $self=shift @_;
	$self->{hybrid}->ellipse(@_);
	return($self);
}

=item $pdf->circle $x, $y, $r

=cut

sub circle {
	my $self=shift @_;
	$self->{hybrid}->circle(@_);
	return($self);
}

=item $pdf->rect $x,$y, $w,$h

=cut

sub rect { # x,y,w,h ...
	my $self=shift @_;
	$self->{hybrid}->rect(@_);
	return($self);
}

=item $pdf->rectxy $x1,$y1, $x2,$y2

=cut

sub rectxy {
	my $self=shift @_;
	$self->{hybrid}->rectxy(@_);
	return($self);
}

=item $pdf->poly $x1,$y1, ..., $xn,$yn

=cut

sub poly {
	my $self=shift @_;
	$self->{hybrid}->poly(@_);
	return($self);
}

=item $pdf->close

=cut

sub close {
	my $self=shift @_;
	$self->{hybrid}->close;
	return($self);
}

=item $pdf->stroke

=cut

sub stroke {
	my $self=shift @_;
	$self->{hybrid}->stroke;
	return($self);
}

=item $pdf->fill

=cut

sub fill { # nonzero
	my $self=shift @_;
	$self->{hybrid}->fill;
	return($self);
}

=item $pdf->fillstroke

=cut

sub fillstroke { # nonzero
	my $self=shift @_;
	$self->{hybrid}->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->{hybrid}->image(@_);
	return($self);
}

=item $pdf->textstart

=cut

sub textstart {
	my $self=shift @_;
	$self->{hybrid}->textstart;
	return($self);
}

=item $pdf->textfont $fontobj,$size

=cut

sub textfont {
	my $self=shift @_;
	$self->{hybrid}->font(@_);
	return($self);
}

=item $txt->textlead $leading

=cut

sub textlead {
	my $self=shift @_;
	$self->{hybrid}->lead(@_);
	return($self);
}

=item $pdf->text $string

Applys the given text.

=cut

sub text {
	my $self=shift @_;
	return $self->{hybrid}->text(@_)||$self;
}

=item $pdf->nl

=cut

sub nl {
	my $self=shift @_;
	$self->{hybrid}->nl;
	return($self);
}

=item $pdf->textend

=cut

sub textend {
	my $self=shift @_;
	$self->{hybrid}->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->{hybrid}->text_center($text);
	} elsif($just==2) {
		$self->{hybrid}->text_right($text);
	} else {
		$self->text(@text);
	}
	$self->textend;
	return($self);
}

=head1 AUTHOR

alfred reibenschuh

=cut


1;

__END__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -