#!/usr/bin/perl
use File::Basename;
use PDF::API2;
use PDF::API2::Util;
use Unicode::UCD 'charinfo';
use Encode qw[:all];
use Getopt::Long;
use PDF::API2::UniWrap;
use utf8;
#-----------------------------------------
package PDF::API2::UniWrap;
sub char_length {
my $self=shift if ref($_[0]);
my ($c) = @_;
#if ($c eq 'CM' || $c eq 'ZW') {
# return 0;
#}
if(defined $self && defined $self->{widthobj})
{
return $self->{widthobj}->width($c);
}
return 1;
}
#-----------------------------------------
package main;
$uw = PDF::API2::UniWrap->new(line_length=>50, emergency_break=>50);
$api=PDF::API2->new();
$api->mediabox(595,842);
$helv=$api->corefont('Helvetica-Bold',-encode=>'latin1');
$times=$api->corefont('Times-Roman',-encode=>'latin1');
$time2=$api->synfont($times,-slant=>1.3);
$treb=$api->corefont('Trebuchet-Italic',-encode=>'latin1');
$tre2=$api->synfont($treb,-slant=>1.1,-space=>60);
$georg=$api->corefont('Georgia-Italic',-encode=>'latin1');
$jfs=$api->cjkfont( 'KozMin', -encode=>'shiftjis' );
$jf1=$api->cjkfont( 'KozMin-Bold', -encode=>'shiftjis' );
$jf2=$api->cjkfont( 'KozGo-Italic', -encode=>'shiftjis' );
$uf=$api->unifont($jf1,[$time2,[0]], -encode=>'shiftjis');
$u2=$api->unifont($jf2,[$tre2,[0]], -encode=>'shiftjis');
$u3=$api->unifont($jf2,{ font=>$georg, blocks=>[0] }, -encode=>'shiftjis');
$start=tell(DATA);
q| Ming Ming-Bold Ming-Italic Ming-BoldItalic
Song Song-Bold Song-Italic Song-BoldItalic
MyungJo MyungJo-Bold MyungJo-Italic MyungJo-BoldItalic
KozMin KozMin-Bold KozMin-Italic KozMin-BoldItalic
KozGo KozGo-Bold KozGo-Italic KozGo-BoldItalic|;
%fonts=(
'KozMin'=>$jfs,
'KozMin-Bold + Times'=>$uf,
'KozGo-Italic + Trebuchet-Italic'=>$u2,
'KozGo-Italic + Georgia-Italic'=>$u3
);
foreach my $fontname ('KozMin','KozMin-Bold + Times','KozGo-Italic + Trebuchet-Italic','KozGo-Italic + Georgia-Italic')
{
$y=800;
$page = $api->page;
$gfx = $page->gfx;
delete $gfx->{Filter};
my $font=$fonts{$fontname};
$uw->{widthobj}=$font;
seek(DATA,$start,0);
binmode(DATA,':raw');
$gfx->textlabel(50,$y,$helv,10,$fontname,-color=>'darkred');
foreach (1..45)
{
$y-=15;
$line=<DATA>;
$line=~s|[\012\015]+$||go;
$gfx->textlabel(50,$y,$font,10,$line,-hspace=>80);
}
}
$api->saveas("$0.pdf");
$api->end;
__END__
PDFJ - ú{êPDF¶¬W
[
=head1 SYNOPSIS
use PDFJ qw(SJIS);
$doc = PDFJ::Doc->new($pdfversion, $paperwidth, $paperheight);
$font = $doc->new_font('Ryumin-Light', '90ms-RKSJ-H', 'Times-Roman');
$page = $doc->new_page;
$text = Text("eLXg", TStyle(font => $font, fontsize => 10));
$paragraph = Paragraph($text, PStyle(size => 100, align => 'w', linefeed => 20));
$image = $doc->new_image($jpgfile, $pixelwidth, $pixelheight, $width, $height);
$shape = Shape->ellipse($x, $y, $rx, $ry);
$block = Block('V', $paragraph, $image, $shape, BStyle(align => 'c'));
$block->show($page, $x, $y);
$doc->print('sample.pdf');
=head1 DESCRIPTION
=head2 Tv
±ÌW
[Íú{êPDF𶬷éBÌæ¤ÈÁ¥ª éB
=over 4
=item *
JIS X 4051uú{ê¶ÌsgÅû@vi1995jÉÙÚµ½sgÅ[ðgÝñÅ èAÖ¥âsÌlßLεͱÌW
[ÉC¹é±ÆªÅ«éB
=item *
rAY¦Ac«Ì¢¶Ac¡A¢¶ÌnCtl[VAºüETüA_AÔ|¯Æ¢Á½gÅà±ÌW
[ÉC¹é±ÆªÅ«éB
=item *
Type1tHgÅÍAa¶ÉRyumin-LightÆGothicBBB-MediumA¢¶ÉTimesAHelveticaACourierÌet@~ªg¦éB±êçÍtHg©ÌÍßÜêÈ¢ÌÅARpNgÈPDFðìêéB½¾µ\¦Eóü«ɻÌtHgªÈ¢ÆãÖtHgÆÈéB
=item *
CÓÌTrueTypetHgðg¤±ÆàÅ«éBTrueTypetHgÍßÜêéia¶É¢ÄÍTuZbgÅjÌÅAá±PDFÌTCYªå«ÈéªAÇñÈ«Å௶æ¤É\¦EóüÅ«éB
=item *
¢¶ÉAÅèsb`̼ptHgðg¤±ÆàAv|[ViÈ¢¶tHgðg¤±ÆàÅ«éB
=item *
ú{ê¶R[hƵÄÍAVtgJISAú{êEUCAUTF8AUnicodeÉεĢéB
=item *
JPEGæit@C¨æÑURLwèjÆüæ}`ªµ¦éBæâ}`ðeLXgÌêƵÄsàÉzu·é±ÆàÂ\BtÉüæ}`ÌÉeLXgâæðzu·é±ÆàÅ«éB
=item *
eLXgðs·ÆsèðwèµÄÜèÔµµAiðìé±ÆªÅ«éBiÉÍÓð«Ì½ßÌxðt¯é±ÆªÅ«é
=item *
iAæA}`ÈÇðÀ×ÄubNÆ¢¤ÜÆÜèðìé±ÆªÅ«éBubNÉÍAàeÌzuAüÍÌ]AgüAhèÂÔµFÈÇðwèÅ«éBubNàÌÀÑÌûüƵÄA㨺A¶¨EAE¨¶ª éBubNðüêqÉ·é±ÆÅ\ðìé±ÆªÅ«éB
=item *
iâubNðwèÌ嫳ð´¦È¢æ¤ÉªµÄA¡Ìy[Wɪ¯Ä\¦·é±ÆªÅ«éB
=item *
PDF̶îñAAEgCîñAnCp[Ni¶à¨æÑURLjðtÁÅ«éB
=item *
ûªÅ«éB
=back
=head2 \¦Â\ÈIuWFNg
PDFJÅÍÌ\¦Â\È\¬vfÉηéIuWFNgðgÝí¹ÄPDF¶ð쬷éB±êçÍÝÈAshowÆ¢¤\bhÅy[WãÉÊuðwèµÄ\¦·é±ÆªÅ«éBshow\bhÌïÌIÈg¢ûÉ¢ÄÍãq·éB
=over 4
=item eLXgiPDFJ::Textj
wè̶ñðAwèÌtHgâTCYÈÇÌ®«É]ÁÄ\¦·éàÌBtHgÌGR[fBOªHÅ êζ©çEÖ¡«ÅAVÅ êÎã©çºÖc«Å\¦³êéB
rAY¦Ac¡AºüETüA_AÍÝÆ¢Á½®«ÌwèªÅ«éB
eLXg©ÌÉÍs·âsèÆ¢Á½®«ÍÈAÜèÔµÄ\¦³êé±ÆÍÈ¢B
¶¾¯ÅÈA\¦Â\ÈIuWFNgðÜޱƪūéB
=item iiPDFJ::Paragraphj
eLXgÉεÄs·ÆsèÆzuðwèµÄsÌÜèÔµð¨±È¢AÐÆÂÌiƵÄ\¦·éàÌBsÌÜèԵɺ¤AÖ¥AnCtl[VAsÌlßLεͩ®IɳêéB
ܽeLXgÉÍA¶¾¯ÅÈæâ}`ðÐÆÂ̶Ìæ¤ÉµÁÄÜÞ±ÆàÅ«éB
sªAsÌCfgAæªsɯéxðwè·é±ÆàÅ«éB
iÌOãÌÔuðwè·é±ÆªÅ«éB±ÌÔuÍiðÀ×ÄubNðìéÛÉKp³êéB
=item æiPDFJ::Imagej
JPEG`®ÅAt@CÉÛ¶³êÄ¢éàÌ©AURLÅQÆÅ«éæÌݪµ¦éB³ÌsNZTCYÆÍÖWÈwèÌ嫳Å\¦Å«éB
üÍÌ]ðwè·é±ÆàÅ«éB
=item }`iPDFJ::Shapej
¼üAé`A½p`A~AÈ~AxWGÈüðgÝí¹Ä}`ð쬵A\¦Å«éBüÌL³A¾³AFA_üAhèÂÔµÌL³AFÆ¢Á½®«ªwèÅ«éB
}`àÉeLXgðzu·é±ÆàÅ«éB
üÍÌ]ðwè·é±ÆàÅ«éB
=item ubNiPDFJ::Blockj
\¦Â\ÈIuWFNgðÁèÌûüÉÀ×ÄÐÆÜÆßɵ½àÌBûüƵÄÍAHi¶¨EjARiE¨¶jAVi㨺jÌOíÞª éBSÌÌâ³ðwèµÄàeÌzuðwè·é±ÆàÅ«éBàeÌzuÍA¶EûüÉAli¶jAcijAriEjAãºûüÉAtiãjAmijAbiºjðgÝí¹Äwè·éB½¾µASÌÌâ³ÍàeÉæÁÄÜéâ³æ謳ÍÅ«È¢B
IuWFNgÉOãÌÔuÌwèª êÎA»êÉ]ÁÄÔuªó¯çêéBܽA¼ÚlÅÔuðwè·é±ÆàÅ«éB
ubNÉÍAüÍÌ]AgüAhèÂÔµFðwè·é±ÆªÅ«éB
ubNðüêqÉ·é±ÆÅA\ðìé±ÆªÅ«éB
=back
=head2 »Ì¼ÌIuWFNg
»Ì¼ÉÌæ¤ÈIuWFNgªA\¦Â\ÈIuWFNgÆÆàÉgp³êéB
=over 4
=item tHgiPDFJ::AFontAPDFJ::CIDFontj
tHgÍType1tHgÅÍAa¶ÉRyumin-LightÆGothicBBB-MediumA¢¶ÉTimesAHelveticaACourierÌet@~ªg¦éBTrueTypetHgÍCÓÌà̪g¦éB½¾µPDFÉßÜêéÌÅAßݪ³ê½TrueTypetHgÅȯêÎÈçÈ¢B
a¶tHg¾¯ðwèµ½eLXgÉ¢¶ª»ê½Æ«ÉÍAa¶tHg̼p¶i¶Í¼pÅèjªgíêéªAgÝí¹é¢¶tHgðwèµÄ¨Æ»Ì¢¶tHgªgíêéBv|[ViÈa¶tHgÉÍεĢȢB
c«pGR[fBOiVjðwèµ½a¶tHgðwè·éÆA»ÌeLXgÍc«ÆÈéB
=item eLXgX^CiPDFJ::TextStylej
tHgAtHgTCYA¶`æ[hAx[XC²®AÎÌAºüic«ÅÍTüjAÍÝ A_AY¦iãEºjArATA}`X^CAªwèÅ«éB
¶`æ[hÍA¶ÌgüÆhèÂÔµÌgÝí¹ÌwèB}`X^CÍA¶`æAºüETüAÍÝ É¨¯é}`X^CÌwèB
=item iX^CiPDFJ::ParagraphStylej
s·Aµ¦AsèAxAx·AsªCfgAsCfgAOÔuAãÔuAªwèÅ«éB
µ¦ÆµÄÍAbisªµ¦jAmiµ¦jAeisµ¦jAwi¼[µ¦jª éB
=item ubNX^CiPDFJ::BlockStylej
A³Aµ¦Aµ¦tOAüÍ]AgüAhèÂÔµFAOÔuAãÔuAªwèÅ«éB
=item }`X^CiPDFJ::ShapeStylej
üA_üAüFAhèÂÔµFAüÍ]AOÔuAãÔuAªwèÅ«éB
=item FiPDFJ::Colorj
DFwèÆAqfawèªÅ«éB}`®«ÌüFÆhèÂÔµFÌwèÉgíêéB
=item y[WiPDFJ::Pagej
ey[WÌàeðÛ·éBeLXgâæâ}`ÈÇA\¦Â\ÈIuWFNgÍy[WÉzu·é±ÆÅÀÛÉ\¦³êéB
=item PDF¶iPDFJ::Docj
êÂÌPDF¶By[WQâA\[XƵÄÌtHgâæðÜÆßAÅIIÉêÂÌPDFt@CƵÄoÍ·éB
=back
=head2 PDFJÌCXg[
ÇÒÅ êÎÌWIÈèÅCXg[Å«éB
perl Makefile.PL
make
make install
ÅãÌmake installÍÇÒ ÀÅÀs·éBWindowsÅÍmakeÅÈnmakeðgp·éB
ÇÒÅÈ¢êÅàAPDFJð\¬·éÌW
[t@CQðPerl©çpÅ«éi·Èí¿@INCÉZbg³ê½jfBNgɨ¯ÎpÅ«éB
PDFJ.pm
PDFJ/Object.pm
PDFJ/Unicode.pm
PDFJ/E2U.pm
PDFJ/S2U.pm
PDFJ/U2C.pm
PDFJ/TTF.pm
PDFJÍA¢¶ÌnCtl[Vð¨±È¤½ßÉATeX::HyphenW
[ðgpµÄ¢éB¢¶ðÜÞeLXgðµ¤êÍKvÆÈéÌÅACPAN©ç_E[hµÄCXg[µÄ¨BÇÒÅÈ¢êÍAÌW
[ðPerl©çpÅ«éfBNgɨ¯Îæ¢B
TeX/Hyphen.pm
TeX/Hyphen/czech.pm
TeX/Hyphen/german.pm
PDFJÍAtHgâæÈÇÌf[^ðßÞÛÉAftHgÅÍCompress::ZlibW
[ðgp·éBCompress::ZlibªÈ¢Â«âACompress::Zlibðg¢½È¢ê̽ßÉACompress::Zlibðgí¸Éf[^ÌßÝð¨±È¤IvVàpÓ³êÄ¢éBiL<"¶IuWFNgÌì¬">ðQÆj
ûð¨±È¤ÛÉÍADigest::MD5W
[ªKvÅ éB
=head2 PDFJÌgp
PDFJðgp·éÉÍA¬Ìæ¤ÉµÄ use PDFJ ÌøÉú{ê¶R[hðwè·éBȪ·éÆ'SJIS'ÆÝȳêéB
# Shift-JISÌê
use PDFJ 'SJIS';
# EUCÌê
use PDFJ 'EUC';
# UTF8Ìê
use PDFJ 'UTF8';
# UNICODEiUCS2jÌê
use PDFJ 'UNICODE';
eLXgIuWFNgðìéÉ^¦é¶ñâAtHgÌGR[fBOÅÌú{ê¶R[hÍAuse PDFJ Åwèµ½àÌÆv·éæ¤ÉµÈ¯êÎÈçÈ¢B
ÙÈé¶R[hð¬Ý³¹½èØèÖ¦Ägp·é±ÆÍÅ«È¢B
use PDFJ ÉæÁÄÌTu[`ªGNX|[g³êéB
Doc
Text
TStyle
NewLine
Outline
Dest
Paragraph
PStyle
Block
BStyle
NewBlock
BlockSkip
Shape
SStyle
Color
=head2 ¶IuWFNgÌì¬
ܸÅɶIuWFNgð쬵ȯêÎÈçÈ¢B
$docobj = PDFJ::Doc->new($version, $width, $height);
±±ÅA$versionÍPDFÌo[Wi¦ºLÌðQÆjA$widthÍy[WÌA$heightÍy[W̳ÅAPÊÍ|Cgi1/72C`jÅ éBi|CgÌè`ÍèÜÁ½à̪ȢªAPDFÅÍ1/72C`ƳêÄ¢éB1C`Í25.4mmBj
ȨAy[WÌƳÍAey[WIuWFNgð쬷éÉÂÊÉwè·é±ÆàÅ«éB
¦PDFÌo[W
PDFÌo[WÍAÌæ¤ÉAcrobatâAcrobat ReaderÌo[WÆεĢéB
PDFo[W1.2 c Acrobato[W3
PDFo[W1.3 c Acrobato[W4
PDFo[W1.4 c Acrobato[W5
µ½ªÁÄAcrobat3Åàg¦éæ¤Éµ½¯êÎ1.2ɵĨB½¾µAú{êTrueTypetHgðg¤Æ«Í1.3ÈãªKvBAcrobat4ÈãÅg¦êÎæ¢Æ¢¤±ÆÈçíÉ1.3ɵĨ¯Îæ¢B
¦f[^ßÝû@Ìwè
Compress::Zlibðgí¸Éf[^ÌßÝð¨±È¤êÍA¶IuWFNgÌfilter\bhðp¢ÄÌæ¤Éf[^ßÝû@Ìwèð¨±ÈÁĨB±ÌwèðµÈ¢êÍCompress::ZlibðgÁ½ßݪ¨±ÈíêéB
$docobj->filter('a');
=head2 y[WIuWFNgÌì¬
y[WͶIuWFNg©çnew_page\bhÅÇÁ³êéBƳðȪ·éƶIuWFNgÌì¬ÌÛÉwèµ½à̪gíêéB
$pageobj = $docobj->new_page;
$pageobj = $docobj->new_page($width, $height);
¡ÌƱëAy[WÍöÉÇÁū龯ÅArÉ}ü·éû@ÍpÓ³êĢȢB
y[WÔÍApagenum\bhžçêéB
$pagenum = $pageobj->pagenum;
=head2 tHgIuWFNgÌì¬
tHgIuWFNgÍA¶IuWFNg©çAnew_font\bhÅìçêéB
$fontobj = $docobj->new_font($basefont, $encoding);
$basefontÍx[XtHg¼ÅAType1tHgÌêÌ¢¸ê©ðwè·éB
¦¢¶tHg
Courier
Courier-Bold
Courier-BoldOblique
Courier-Oblique
Helvetica
Helvetica-Bold
Helvetica-BoldOblique
Helvetica-Oblique
Times-Bold
Times-BoldItalic
Times-Italic
Times-Roman
¦a¶tHg
Ryumin-Light
GothicBBB-Medium
$basefontÉTrueTypetHgÌt@C¼ig£qª.ttfjðwè·é±ÆÅATrueTypetHgðwè·é±ÆªÅ«éBܽATrueTypeCollectiontHgig£qª.ttcjÌêÍ»Ì̽ÔÚi0©ç¦ÄjÌtHgðg¤©ðt@C¼ÌãëÉu:ÔvƵÄtÁ·éBiáFuc:\windows\fonts\msgothic.ttc:0vj
=over 4
¦TrueTypeCollectiontHgÍÅèsb`ÌtHgÆv|[ViÈtHgªZbgÉÈÁÄ¢é±Æª½¢ªAãLÌæ¤ÉµÄwè·éÌÍÅèsb`ÌûÅȯêÎÈçÈ¢Bt®ÌXNvgttcinfo.plÅTrueTypeCollectiontHgÉÜÜêétHg¼ð²×é±ÆªÅ«éBv|[ViÈtHgÍtHg¼É P ªtÁ³êÄ¢é±Æª½¢B
¦TrueTypetHgÍPDFÉßÜêéiú{êtHgÌêÍTuZbgÅjªAßÝðµȢTrueTypetHgà¶Ý·éBPDFJÍAtHg©ÌÌÉ éßÝð·é©Ç¤©ÌtOð©ÄAOK©Ç¤©ð»f·éB½¾µAÊÌCZXt@CÈÇÅgpø𪦳êÄ¢éêà è¤éÌÅAtHgì¬ÒÌ ðNQµÈ¢æ¤É\ªÓµÄ¢½¾«½¢B
¦TrueTypetHgðßÞÛÉÍAtHgt@CàÉjR[hÉε½cmape[uiplatformIDª3AplatformSpecificIDª1Aformatª4ÌàÌjªKvÅ éBâTrueTypetHgÅͱÌcmape[uð½È¢àÌà¶Ý·éB»óÅÍ»¤¢¤TrueTypetHgÍßޱƪūȢB
=back
$encodingÍGR[fBOÅAÌ¢¸ê©Ìè`ÏÝGR[fBO¼ðwè·éBȪ·éÆA¢¶tHgÉεÄÍ'WinAnsiEncoding'Aú{êtHgÉεÄÍ'90ms-RKSJ-H'ªgíêéBMacExpertEncodingÍGLXp[gtHgÆÄÎêéÁêÈtHg̽ßÌGR[fBOB
¦¢¶tHgÌGR[fBO
WinAnsiEncoding
MacRomanEncoding
MacExpertEncoding
¦ú{êtHgÌGR[fBO
83pv-RKSJ-H c Macintosh JIS X 0208 KanjiTalk6g£
90pv-RKSJ-H c Macintosh JIS X 0208 KanjiTalk7g£
90ms-RKSJ-H c Microsoft CP932 JIS X 0208 NEC,IBMg£
90ms-RKSJ-V c Vc«
Add-RKSJ-H c JIS X 0208 xmÊFMRg£
Add-RKSJ-V c Vc«
Ext-RKSJ-H c JIS C 6226(JIS78) NECg£
Ext-RKSJ-V c Vc«
EUC-H c JIS X 0208
EUC-V c Vc«
EUC-NEC-H c JIS X 0208 NECg£
EUC-NEC-V c Vc«
UniJIS-UCS2-HW-H c Unicode ¡«
UniJIS-UCS2-HW-V c Unicode c«
ú{êtHgÌGR[fBOÌöÌ'H'Í¡«A'V'Íc«B'RKSJ'ÆÂàÌÍShift-JISpA'EUC'ÆÂàÌÍEUCpA'Uni'ÆÂàÌÍUnicodepBú{êv|[VitHgÍg¦È¢±ÆÉÓB¢¶ªàÜßÄ·×Ä̶ªSp©¼pÌÅèsb`ÆÈéB
¦EUC-NEC-HÆEUC-NEC-VÍAEUC-HÆEUC-Vðx[XÉNECg£¶iæ_ÅÌ13,89-92æjðÁ¦½àÌÅAPDFJÅÆ©Éè`µ½GR[fBOÅ éi±êðgÁ½PDFðAcrobatÈÇÅJ¢ÄtHgîñð©éÆGR[fBOÍuJX^vÆ\¦³êéjB»êÈOÍAdobeÉæÁÄè`ÏÌGR[fBOB
¦UTF8ÌêàtHgGR[fBOÉÍãLÌUnicodepðwè·êÎæ¢B
new_font\bhÉÍà¤êÂÌp@ª èA¬Ìæ¤ÉµÄú{êtHgÆ¢¶tHgÌgðwè·éB
$fontobj = $docobj->new_font($jbasefont, $jencoding, $abasefont, $aencoding);
±±ÅA$jbasefontÍú{êx[XtHg¼A$jencodingÍ»ÌGR[fBOA$abasefontÍ¢¶x[XtHg¼A$aencodingÍ»ÌGR[fBOB$aencodingðȪ·éÆWinAnsiEncodingB
±Ìæ¤Éú{êtHgÆ¢¶tHgðgÝí¹½tHgIuWFNgðeLXgÉεÄwè·éÆAeLXgÌú{êªÆ¢¶ªi³mɾ¤Æ0x7fÜÅÌASCII¶ÌªjÉεĻê¼êÌtHgª©®IÉØèÖ¦ÄKp³êéB±êÉæèA¢¶ªÉ¢ÄÍv|[ViÈ\¦ÆÈéBgtHgÅÍ¢¶tHgªKp³êéÌÍASCII¶¾¯Å èAASCII¶É¢ÄÍWinAnsiEncodingÆMacRomanEncodingÉá¢ÍÈ¢ÌÅAg¶Ì¢¶tHgÌGR[fBOÍÇ¿çðwèµÄ௶B
PÆÌ¢¶tHgðKpµ½¶ñÍAuse PDFJ 'c'Åwèµ½ú{ê¶R[hÉæç¸A1oCg1¶ÆµÄGR[fBOÉ]ÁÄ\¦³êéB
ú{êtHg̶ZbgÍAdobe-Japan1-4ƵĵíêéBAdobe-Japan1-4ÉÍAåܩɾÁÄJIS X 0201Æ0208iæê
Aæñ
jA¨æÑe[J[Ìg£¶ªÜÜêéBÚ×ÍðQÆ̱ÆB
http://partners.adobe.com/asn/developer/pdfs/tn/5078.Adobe-Japan1-6.pdf
ÅV̶ZbgÍAdobe-Japan1-6Å èA±êÉÍJIS X 0212iâ¿jÆ0213iæO
Aæl
jªÜÜêÄ¢éªA¡ÌƱëPDFJÅÍAdobe-Japan1-6ÅÍÈAdobe-Japan1-4ªgíêéB
=head2 eLXgIuWFNgÌì¬
eLXgIuWFNgÍATextTu[`Å쬷éB
$textobj = Text(@list, $textstyle);
±±ÅA@listͶñA\¦Â\ÈIuWFNgAüsIuWFNgÌXgÅA@listÌvfªÉÀ×çê½àeÌeLXgªì¬³êéB$textstyleÍeLXgX^CIuWFNgB
XgÍzñQÆÌ`Å^¦é±ÆàÅ«éB
$textobj = Text([@list], $textstyle);
üsIuWFNgÍNewLineTu[`Å쬷éiø³µjBüsIuWFNgÍeLXgIuWFNgð»ÌÜÜ\¦·éêÉͽÌøÊàÈ¢ªAiIuWFNgðìéÛɧüs·éøÊðà½ç·B
eLXgX^CIuWFNgÍTStyleTu[`Å쬷éB
$textstyle = TStyle(%args);
øÉÍnbV
XgÌ`ÅÌàÌð^¦éBfontÆfontsizeÍK{B»Ì¼ÍIvVB
font => tHgIuWFNg
fontsize => tHgTCYi|Cgj
italic => C^bNtOi^ðwè·éÆC^bNÉj
bold => {[htOi^ðwè·éÆ{[hÉj
slant => ÎÌtOi^ðwè·éÆÎÌÉj
render => ¶`æ[hi0:hè×µA1:güA2:hè×µ{güj
shapestyle => ¶`æÌ}`X^CIuWFNg
rise => x[XCÌã²®li|Cgj
vh => c¡tOi^ðwè·éÆc¡Éj
withline => ºüܽÍTütOi^ðwè·éƺüܽÍTüªtj
withlinestyle => ºüܽÍTüÌ}`X^CIuWFNg
withbox => ÍÝgwèif:hè×µAs:güAsf:hè×µ{güj
withboxstyle => ÍÝgÌ}`X^CIuWFNg
withdot => _tOi^ðwè·éÆ_ªtj
withnote => ßeLXgIuWFNg
suffix => Y¦wèi'u'ðwè·éÆãY¦A'l'ðwè·éƺY¦j
ruby => r¶ñ
objalign => \¦Â\IuWFNgÌzu
noglue => ¶íÉæÁÄ©®}ü³êé²®]ðüêÈ¢
code => ¶R[hi'SJIS'A'EUC'A'UTF8'A'UNICODE'Ì¢¸ê©j
slantÉæéÎÌÍú{ê¶ñÉÌÝLøÅ èA¢¶É¢ÄÍItalicnÌtHgðwè·é±ÆŨ±È¤±ÆBitalicÆboldÉ¢ÄÍAL<"C^bNÆ{[h">ðQÆB
renderâshapestyleÌwèðµÈ¢ÆA¶ÍÌhè×µÅ`æ³êéB
withlineðwèµÄwithlinestyleðȪ·éÆÌÀüÆÈéBwithboxðwèµÄwithboxstyleðȪ·éÆÌÀüÆÈéB
withnoteͶÌãâEÉÊÌeLXgi»ÌeLXgIuWFNgðwithnoteÅwè·éjð\¦·éàÌÅ èAsuffixÍwèµ½¶ð¬³µÄÊuð㺳¹é½ßÅ éB
¦withnoteɶñð^¦AwithnotestyleÉeLXgX^CIuWFNgð^¦é±ÆàÅ«éB
objalignÍATextÉæâ}`ÈÇÌ\¦Â\IuWFNgª^¦çê½Æ«ÉǤzu·é©ð¬Ìæ¤Éwè·éBobjalignÌwèðȪ·éÆA¡«ÅÍ'b'Ac«ÅÍ'c'ÆÝȳêéB
¦¡«ÌêiãºûüÌzuÌwèÆÈéj
t c ¶ÆIuWFNgÌã[ð í¹é
m c ¶ÆIuWFNgÌãºð í¹é
b c ¶ÆIuWFNg̺[ð í¹é
¦c«Ìêi¶EûüÌzuÌwèÆÈéj
l c ¶ÆIuWFNg̶[ð í¹é
c c ¶ÆIuWFNg̶Eð í¹é
r c ¶ÆIuWFNgÌE[ð í¹é
codeÍAuse PDFJÅwèµ½¶R[hÆÍᤶR[hÉæéeLXgð^¦½¢Æ«Éwè·éB
=head2 eLXgIuWFNgÌüêqÉæéªX^Cwè
eLXgÌꪾ¯ÉÁèÌX^CðKpµ½¢êAeLXgIuWFNgðüêqɵĪX^Cðwè·é±ÆŨ±È¤BüêqÉÈÁ½eLXgIuWFNgÅÍqÌX^CÅwè³êĢȢX^CÍeÌà̪ø«pªêéB
á¦ÎA¾©ÌeLXgÌêðSVbNɵ½¢êA¬Ìæ¤É·éB
$mincho = $docobj->new_font('Ryumin-Light', '90ms-RKSJ-H');
$gothic = $docobj->new_font('GothicBBB-Medium', '90ms-RKSJ-H');
$textobj = Text([
"¾©",
Text("SVbN", TStyle(font => $gothic)),
"±±à¾©"
], TStyle(font => $mincho, fontsize => 10));
±ÌêA"SVbN"ÉηéX^CÅÍfontsizeªwè³êĢȢÌÅAeX^CÌfontsizeÌ10ªø«pªêéB
eLXgÌêɺüðøêÍAá¦Î¬Ìæ¤É·éB
$mincho = $docobj->new_font('Ryumin-Light', '90ms-RKSJ-H');
$normal_style = TStyle(font => $mincho, fontsize => 10);
$uline_style = TStyle(withline => 1);
$textobj = Text([
"eLXg",
Text("ºüt«", $uline_style),
], $normal_style);
eLXgX^CͱÌæ¤ÉÏÉZbgµÄ¨¢Äg¤±ÆàÅ«éµAæÌáÌæ¤É¼ÚTStyleTu[`ðgÁÄàæ¢B
=head2 C^bNÆ{[h
eLXgX^CÌitalicÆboldðg¤½ßÉÍAÇÌtHgªÇÌtHgÌC^bN`â{[h`Å éAÆ¢¤±ÆðhL
gIuWFNgɳ¦Ä¨¢ÄâéKvª éB»Ì½ßÉAitalic()Æbold()\bhðg¤Bá¦ÎÌæ¤É·éB
$ft = $docobj->new_font('Times-Roman');
$fti = $docobj->new_font('Times-Italic');
$ftb = $docobj->new_font('Times-Bold');
$ftbi = $docobj->new_font('Times-BoldItalic');
$docobj->italic($ft, $fti, $ftb, $ftbi);
$docobj->bold($ft, $ftb, $fti, $ftbi);
±Ìæ¤ÉA³tHgA»ÌCütHgAÌÅAñgÈãðÜÆßÄøÉ^¦é±ÆªÅ«éBgÆÈétHgÍA¢¶tHg¯mAú{êtHg¯mA¢¶tHgÆgÉÈÁ½ú{êtHg¯mAÅȯêÎÈçÈ¢B
Text('normal', Text('italic', TStyle(italic => 1)), TStyle(font => $ft))
±Ìæ¤ÈeLXgIuWFNgðìéÆA'normal'ÉÍ$ftªA'italic'ÉÍ$ftiªgíêé±ÆÉÈéB
italic()âbold()ÅÌo^ª³êĢȢtHgÉεÄitalicâboldÌX^Cð^¦½êÍA½ÌøÊàà½ç³È¢B
ȨAêÊÉú{êtHgÉÍC^bN`ͶݵȢÌÅAú{ê¶ñÉεÄeLXgX^CÅitalicªwè³ê½êÍAslantÉu«·¦ÄX¯Ä\¦·éB
=head2 iIuWFNgÌì¬
iIuWFNgÍParagraphTu[`Å쬷éB
$paragraphobj = Paragraph($textobj, $parastyle);
±±ÅA$textobjÍeLXgIuWFNgA$parastyleÍiX^CIuWFNgB¡ÌeLXgð^¦½¢Æ«Í»êðêÂÌeLXgIuWFNgÉÜÆß½ãÅ^¦éB
iX^CIuWFNgÍPStyleTu[`Å쬷éB
$parastyle = PStyle(%args);
øÉÍnbV
XgÌ`ÅÌàÌð^¦éBsizeÆlinefeedÆalignÍK{B¼ÍIvVB
size => iÌsûüÌTCYi|Cgj
align => µ¦ib:sªµ¦ m:µ¦ e:sµ¦ w:¼[µ¦ W:§¼[µ¦j
linefeed => sèi|Cgj
preskip => iOÌÔui|Cgj
postskip => iãÌÔui|Cgj
beginindent => sªCfg
endindent => sCfg
beginpadding => sª¤Ì]i|Cgj
labeltext => xÌeLXgIuWFNg
labelsize => xÌsûüÌTCYi|Cgj
labelskip => xÆ{¶ÌÔui|Cgj
nobreak => ^¾Æbreak\bhŪ³êÈ¢
postnobreak => ^¾ÆubNÌbreakÅ»ÌãëŪ³êÈ¢
float => ubNÌbreakÅÊuð©®Ú®iuubNIuWFNg̪vQÆj
linefeedÅwè·éÌÍsèÅ ÁÄsÔÅÍÈ¢±ÆÉÓBlinefeed => '150%' Ìæ¤É l% Æwè·éÆAeLXgIuWFNgÌtHgTCYÉηéÆÝȳêéB
preskipÆpostskipÍAubNàÉiðÀ×éÌÔuƵÄgíêéBȪ·éÆA»ê¼êsÔisè©çtHgTCYð·µø¢½·³j̼ªÉZbg³êéB
eLXgÍA(size - beginpadding - beginindent - endindent - labelsize)Æ¢¤s·ð´¦È¢æ¤ÉÜèÔµ³êAalignɵ½ªÁĵ¦çêéBwÉæé¼[µ¦ÌAös¾¯Ísªµ¦ÆÈéBWÉæ駼[µ¦ÅÍAösàÜßļ[µ¦ÆÈéBsÌÜèÔµÌÛÌÖ¥ÆnCtl[VA¼[µ¦ÌÛÌlßLεÍAJIS X 4051ÉÙÚ¥ÁĨ±ÈíêéB
beginindentÆendindentðzñQÆÌ`Å^¦éÆAæªs©çÉgíêéBsªvfæè嫢ƫÍÅãÌvfªJèÔµgíêéB
beginpaddingÍAxàÜß½iSÌÌAsª¤Éæé]ðwè·éBi±Ì]ÍsizeÌÉÜÜêéBjµ½ªÁÄAxªÈ¢Æ«ÍAbeginpaddingÌwèÆPÆvfÌbeginindentÌwèͯ¶øÊðÂB
labeltextÅeLXgIuWFNgªwè³êéÆAxƵÄæªsÌOÉ\¦³êéBxÆ{¶ÌÔÉÍlabelskip¾¯ÌÔuªæçêéBlabeltextɶñð^¦éÆ{ÌÌeLXgIuWFNgƯ¶eLXgX^CÅeLXgIuWFNg»³êéB
labeltextÉÍAeLXgIuWFNgðÔ·Tu[`QÆÆA»ÌTu[`É^¦éøÌXgðAzñQÆÌ`Å^¦é±ÆàÅ«éB±êÉæÁÄÔt«Óð«ªÀ»Å«éBá¦Î¬Ìæ¤ÉÈéB
$LabelNum = 1;
sub numlabel {
my($fmt, $style) = @_;
Text(sprintf($fmt, $LabelNum++), $style);
}
$ol_style = PStyle(size => 500, align => 'w', labelsize => 30,
labeltext => [\&numlabel, "%d.", $normal_style]);
$para1 = Paragaph($text1, $ol_style);
$para2 = Paragaph($text2, $ol_style);
postnobreakÆfloatÍA±ÌiðÜÞubNªbreak³êéÆ«ÉÓ¡ðÂB
=head2 iIuWFNg̪
iÌsûüÌ嫳ÍiX^CÌsizeÅwèµ½àÌÉÈéªA»êƼÈûüÌ嫳ÍsiÆsèÆtHgTCYjÅÜéB±êªêèÌ嫳ÉÈéæ¤Éiðª·é½ßÉAbreak\bhªpÓ³êÄ¢éBá¦Î¡«ÌiIuWFNg$paraÉεÄA
@paras = $para->break(200);
Æ·éÆA³ª200|CgȺÉÈéæ¤Éªµ½iÌXgª¾çêéBàµAÅÌi¾¯Í³ð100Ⱥɵ½¯êÎA¬Ìæ¤É·êÎæ¢B
@paras = $para->break(100, 200);
breakÌøÉwèµ½TCYÌXgÍɪ·éiÌTCYƵÄgíêAÈÈéÆÅãÌTCYªJèÔµgíêéB
breakÌøÉwèµ½TCYª¬³·¬ÄAÅãÌTCYÅàªÅ«È¢ªªcÁ½Æ«ÍAªÉ¸sµ½àÌƵĢè`lªÔ³êéB
àµA$para->break(5, 200) Ìæ¤ÉÅârÉtHgTCYæ謳ÈTCYðwè·éÆA»êÉεÄóÌiIuWFNgª¾çêéB±ÌáÅÍAÅÉóÌiIuWFNgA±¢Ä200¸Âɪ³ê½iIuWFNgªÔ³êé±ÆÉÈéB
iX^CÌnobreakª^ÉÝè³êÄ¢éÆAª³êÈ¢Bá¦ÎnobreakÈ¡«iIuWFNg$uparaª èA»Ì³ª150Å éÆ«ÉA$upara->break(100, 200) Í (óiIuWFNg, $uparaƯ¶IuWFNg) ðÔ·B$upara->break(100) ÅͪɸsµÄ¢è`lðÔ·B
=head2 ubNIuWFNgÌì¬
ubNIuWFNgÍBlockTu[`Å쬷éB
$blockobj = Block($direction, @objlit, $blockstyle);
±±ÅA$directionÍubNÌàeðÀ×éûüA@objlitÍ\¦Â\ÈIuWFNgÌXgA$blockstyleÍubNX^CIuWFNgB
IuWFNgÌXgͬÌæ¤ÉzñQÆÌ`Å^¦é±ÆàÅ«éB
$blockobj = Block($direction, [@objlit], $blockstyle);
ubNÌàeðÀ×éûüÍAÌ¢¸ê©ðwè·éB
H c ¶©çE
R c E©ç¶
V c ã©çº
$directionÅwèµ½ûüÉA@objlitÌvfðÉÀ×½à̪ubNÌàeÆÈéB»ÌÛAevfÌ\¦Â\ÈIuWFNgÉApreskipâpostskipÌX^Cªwè³êÄ¢êÎA»êɵ½ªÁÄÔuªæçêéBܽÁêÈwèƵÄA@objlistÌÉIuWFNgÅȶÌlðüêéÆ»ÌÔuªæçêéB
ubNX^CIuWFNgÍBStyleTu[`Å쬷éB
$blockstyle = BStyle(%args);
øÉÍnbV
XgÌ`ÅÌàÌð^¦éB
width => i|Cgj
height => ³i|Cgj
align => µ¦
adjust => µ¦tOi^ðwè·éÆvfÌubNÌTCYðµ¦éj
padding => üÍ]i|Cgj
beginpadding => sª¤Ì]i|Cgj
withbox => ÍÝgwèif:hè×µAs:güAsf:hè×µ{güj
withboxstyle => ÍÝgÌ}`X^CIuWFNg
preskip => OÌÔui|Cgj
postskip => ãÌÔui|Cgj
nobreak => ^¾ÆbreakŪ³êÈ¢
postnobreak => ^¾ÆubNÌbreakÅ»ÌãëŪ³êÈ¢
repeatheader => breakŪ·éÆ«æªÅJèÔ·vf
float => ubNÌbreakÅÊuð©®Ú®iuubNIuWFNg̪vQÆj
nofirstfloat => ^¾ÆbreakÅæªÉÍfloatvfðu©È¢
bfloatsep => floatªbÌvfÆ»êÈOÌvfÌÔÉ}ü³êé\¦Â\IuWFNg
efloatsep => floatªeÌvfÆ»êÈOÌvfÌÔÉ}ü³êé\¦Â\IuWFNg
widthAheightÅâ³ðwèµ½êAàeÌ⳪»êæèå«¢êÍàeÉí¹çêéBàeæèàw赽⳪嫢êÍAalignɵ½ªÁÄÊuªµ¦çêéB
alignÉæ鵦ÍÌ¢¸ê©ðgÝí¹ÄwèBȪ·éÆ'tl'ÆÝȳêéB
¦¶Eûü
l c ¶ñ¹
c c ñ¹
r c Eñ¹
¦ãºûü
t c ãñ¹
m c ñ¹
b c ºñ¹
adjustð^Éwè·éÆAûüªHâRÌêÍvfubN̳AVÌêÍvfubNÌðAàÁÆàå«¢àÌɵ¦éBubNðÀ×Ä\ð쬷éÆ«Égp·éB
paddingÍàeÌüèÉæçêé]ÌÅ èAwithboxÅÍÝgðwèµ½êÍ»Ì]ÌO¤É`æ³êéB
beginpaddingÍÍÝgÌOÌsª¤Éæçêé]ÌwèÅ éB
withboxÅÍA's','f','sf'̼ÉA'rX'iXÍljðtÁ·éÆpª¼aXÅÛÈéB
=head2 ubNIuWFNg̪
iIuWFNgƯlÉAubNIuWFNgàbreak\bhÉæÁĪªÅ«éBá¦Îûüª'V'ÌubNIuWFNg$blockð³ª200|CgȺÉÈéæ¤Éªµ½¯êÎA
@blocks = $block->break(200);
Æ·êÎæ¢BÅÌubN¾¯³ð100Ⱥɵ½¯êÎA¬Ìæ¤É·éB
@blocks = $block->break(100, 200);
breakÌøÉwèµ½TCYÌXgÍɪµ½iÌTCYƵÄgíêAÈÈéÆÅãÌTCYªJèÔµgíêéB
ubN̪ÌÛAubNàÌIuWFNgƵÄAûü̯¶ubNâAsûüÌÙÈéii'V'Èç'H'A'H'â'R'Èç'V'jª éÆA»ÌIuWFNgષé±ÆÅū龯wèÌTCYɤæ¤Éª³êéB
wèµ½TCYŪªÅ«È©Á½êAbreak\bhÍ¢è`lðÔ·B¡ÌTCYðwèµ½êÉAÅãÈOÌTCYª¬³·¬½êÍA»êÉηéàÌƵÄóÌubNªÔ³êéB
ubNX^CÅ nobreak ª^ÉÈÁÄ¢éÆA»ÌubNͪ³êÈ¢B
ubNÌÉNewBlockTu[`Å쬳êéüubNIuWFNgª éÆAubN̪ÌÛÉ»±Å§Iɪ³êéB
ubN̪ÌÛA»ÌvfÆÈéubNâiâ}`ÌX^CÅ postnobreak ª^ÉÝè³êÄ¢éÆA»ÌãëŪ³êé±ÆÍÈ¢B±êÉæÁÄA©oµiÆ{¶iªÊy[Wɪ©êé±Æðh®±ÆªÅ«éB
ubN̪ÌÛA»ÌvfÆÈéubNâiâ}`ÌX^CÅ float ªÝè³êÄ¢éÆA»Ìvfͪ³ê½ubNàÅwèÌÊuÉÚ®³êéBfloatwèÌÓ¡ÍÌƨèB
bN:ª³ê½ubNÌæªiNÍ1`9ܽÍȪj
eN:ª³ê½ubNÌöiNÍ1`9ܽÍȪj
h:ª¹¸ÉÂ\Èç»ÌÊuÉA³ÈçÌubNÌæªÉ
bÆeÌãëÉ1`9ÌÔðt¯ÄÊÉO[v»Å«éBÌå«ÈàÌÙÇæªÜ½ÍöñèÉzu³êéBb0âe0Æ͹¸ÉbâeÆ·é±ÆÉÓB
ubNX^CÅnofirstfloatð^Éwè·éÆAbreakÌÛÉSÌÌæªÉÍfloatvfðu©È¢B
ubNX^CÌbfloatsepÅ\¦Â\IuWFNgðwè·éÆAfloatªbÅæªÉÚ®µ½vfQÌãÉ}ü³êéBefloatsepÅwèµ½IuWFNgÍfloatªeÅöÉÚ®µ½vfQÌOÉ}ü³êéB±êÉæèAfloatðeƵÄy[WöÉÚ®µ½riÆ{¶iÌÔÉæØèüðüêéæ¤È±ÆªÅ«éBfloatÉbNâeNiNÍ1`9jðg¤êÍAbfloatsepâefloatsepÉzñQÆÌ`ÅIuWFNgÌXgð^¦éÆA»ÌNÔÚÌà̪gíêéibâeÉÍ0ÔÚÌà̪gíêéjBȨAbfloatsepâefloatsepÉg¤IuWFNgÍ»êêpÉgpµAª³êéubNÌàeƵÄgÁÄÍÈçÈ¢BܽAbfloatsepÉg¤IuWFNgÆefloatsepÉg¤IuWFNgàÙÈéIuWFNgÅȯêÎÈçÈ¢B
ubNX^CÅ repeatheader ªwè³êÄ¢éÆA»Ìl̾¯ÌæªvfªAª³ê½eubNÌæªÅJèÔ³êéBi½¾µæªvfÌrâãëŪ³ê½êÍBj±êÉæÁÄ\ÌæªÌÚ¼ÌsðJèÔ·±ÆªÅ«éBæªvf©Ìªª³êéƨ©µÈʪ¾çêéÌÅAæªvfªªÂ\ÈiâubNÌêÍ nobreak ðwèµÄ¨±ÆiûüÌá¤ubNÌêÍsvjBܽæªvfÆÌvfªª³ê½êàsKØÈÊÆÈéÌÅAæªvfÉÍ postnobreak ÌwèðµÄ¨±ÆB
=head2 æIuWFNgÌì¬
æIuWFNgÍJPEGæÉ¢ÄÌÝì¬Å«A¶IuWFNg©çnew_image\bhÅ쬷éB
$imgobj = $docobj->new_image($src, $pxwidth, $pxheight,
$width, $height, $padding, $colorspace);
±±ÅA$srcÍURLܽÍt@C¼ig£qÍ.jpgܽÍ.jpegÅ é±ÆjA$pxwidthÆ$pxheightÍæÌsNZTCYA$widthÆ$heightÍ\¦TCYi|CgjA$paddingÍüÍÌ]i|CgjA$colorspaceÍJ[Xy[Xirgb,gray,cmykÌ¢¸ê©ÅȪ·éÆrgbjB$paddingÆ$colorspaceÍȪūéB
»ÝÌdlÅÍAURLwèµ½êͶ¬³êéPDFÉÍURLîñ¾¯ªßÜêA\¦·éÛÉAcrobatReaderª»ÌURLÉANZXµÄæàeðÇÝÆéBµ½ªÁÄ\¦ÉÔª©©Á½èAANZXÅ«È¢Ææª\¦Å«È¢Æ¢Á½±ÆªN±è¤éB
t@C¼wèµ½æÌêÍA¶¬³ê½PDFÉæàe»Ìà̪f[^ƵÄßÜêéÌÅA³Ìæt@CðPDFt@CÆêÉzzµ½è·éKvÍÈ¢B
æIuWFNgÉͼÌ\¦Â\ÈIuWFNgÆáÁÄX^CÌwèÍÈ¢BubNÉÜßéÛÉpostnobreakðwèµ½¢Æ¢¤æ¤ÈÆ«ÍA}`IuWFNgÌÉæIuWFNgðÜßÄA»Ì}`IuWFNgÉX^Cðwè·éB
=head2 }`IuWFNgÌì¬
}`IuWFNgÍShapeTu[`Å쬷éB
$shapeobj = Shape($shapestyle);
±±Å$shapestyleÍ}`X^CIuWFNgB$shapestyleÍȪūéB±ê¾¯Åͽà¡ÌÈ¢}`IuWFNgªìçê龯ŠéB»ÌãAÌ\bhðgÁÄ}`ðÁ¦Ä¢B
=over 4
=item ¼üiline\bhj
$shapeobj->line($x, $y, $w, $h, $style);
($x,$y)©ç($x+$w,$y+$h)Ö¼üªø©êéB$styleÍ}`X^CIuWFNgÅAȪÂ\B
=item é`ibox\bhj
$shapeobj->box($x, $y, $w, $h, $spec, $style);
($x,$y)Æ($x+$w,$y+$h)ðÎpÆ·éé`ª`©êéB$styleÍ}`X^CIuWFNgÅAȪÂ\B$specÍÌ`æwèB
f c hè×µÌÝ
s c güÌÝ
sf c hè×µ{gü
n c `æµÈ¢
¦ãLÌsÌãíèÉAli¶ÓjAriEÓjAtiãÓjAbiºÓjAÌgÝí¹àÂ
¦ÍIvV
rX c iXÍljpð¼aXÅÛ·é
box()Éηé$styleÅÍAÊíÌ}`X^CÉÁ¦ÄÌX^Cªg¦éBiL<"nCp[N">ðQÆj
link => Næi¶àÌNæ¼Ü½ÍAURI:ðt¯½URI¼j
=item ~icircle\bhj
$shapeobj->circle($x, $y, $r, $spec, $arcarea, $style);
($x,$y)ªSA$rª¼aÌ~ª`©êéB$arcareaÍl¼~wèi1:EãA2:¶ãA3:¶ºA4:EºjÅȪ·êÎS~B$styleÍ}`X^CIuWFNgÅAȪÂ\B$specÍÌ`æwèB
f c hè×µÌÝ
s c güÌÝ
sf c hè×µ{gü
=item È~iellipse\bhj
$shapeobj->ellipse($x, $y, $xr, $yr, $spec, $arcarea, $style);
$xrª¡¼aA$yrªc¼aÅ é±Æð¯Î~Ư¶B
=item ½p`ipolygon\bhj
$shapeobj->polygon([@coords], $spec, $style);
@coords͸_ÌÀWÌXÆYÌgðÉÀ×½XgB$styleÍ}`X^CIuWFNgÅAȪÂ\B$specÍÌ`æwèB
f c hè×µÌÝ
s c güÌÝ
sf c hè×µ{gü
=item ~Êiarc\bhj
$shapeobj->arc($x, $y, $r, $start, $end, $spec, $style);
($x,$y)ªSA$rª¼aAJnp$startAI¹p$endÌ~ÊܽÍ~ÊƼaÅÍÜê½Ìæª`©êéBJnpAI¹pÍWAB$styleÍ}`X^CIuWFNgÅAȪÂ\B$specÍÌ`æwèB$specªaÌÍ~ÊÌÝA»Ì¼ÌêÍ~ÊƼaÅÍÜê½Ìæª`æ³êéB
a c ~ÊÌÝ
f c hè×µÌÝ
s c güÌÝ
sf c hè×µ{gü
=item IuWFNgiobj\bhj
$shapeobj->obj($obj, @showargs);
}`É\¦Â\ÈIuWFNg$objðA$obj->show($page, @showargs)ÉæÁÄzu·éB
=back
ÈãÌ\bhÍÝÈIuWFNg©gðÔ·ÌÅA
$shapeobj = Shape->line(c)->box(c)->obj(c);
Ìæ¤ÉLq·é±ÆàÂ\B
ÈãÌ\bhÅ`æ·éêÍAÊƵĻÌ}`IuWFNgªãº¶EÉÇ꾯ÌÍÍðèßé©Æ¢¤SÌƵÄÌ}`Ì嫳ªàIÉdzêAƳðÁ½\¦Â\IuWFNgƵĵ¤±ÆªÅ«éB
±êçÈOÌv~eBuÈ`æ\bhà éiPDFJ::ShapeÌ\bhêðQÆjªA»êçÌ\bhðgÁ½êÍ}`IuWFNgÌ嫳ÌÇͨ±ÈíêÈ¢±ÆÉÓªKvB
}`X^CIuWFNgÍASStyleTu[`Å쬷éB
$shapestyle = SStyle(%args);
øÉÍnbV
XgÌ`ÅÌàÌð^¦éB
fillcolor => hè×µFiFIuWFNgj
strokecolor => üFiFIuWFNgj
linewidth => üi|Cgj
linedash => [$dash, $gap, $phase] Ü½Í "$dash, $gap, $phase"
preskip => OÌÔui|Cgj
postskip => ãÌÔui|Cgj
postnobreak => ^¾ÆubNÌbreakÅ»ÌãëŪ³êÈ¢
float => ubNÌbreakÅÊuð©®Ú®iuubNIuWFNg̪vQÆj
linedashÌwèÅA$dashÍjü·A$gapÍÔ·A$phaseÍJnÊuB$phaseÍȪÂ\B
preskipApostskipApostnobreakAfloatÍAubNÌÉ}`IuWFNgðuÆ«ÉÓ¡ðÂB
box()Éηé$styleÅÍAãLÌ}`X^CÉÁ¦ÄÌX^Cªg¦éB
link => Næi¶àÌNæ¼Ü½ÍAURI:ðt¯½URI¼j
=head2 ÇÁÌ}`IuWFNg\bh
use PDFJ::Shape; ·éÆAÌÇÁÌ}``æ\bhªPDFJ::ShapeÉÇÁ³êéB±êçÌ\bhÍ¢¸êàIuWFNg©gðÔ·BܽA`æÍÍÌǪ¨±ÈíêéB
=over 4
=item îóiarrow\bhj
$shapeobj->arrow($x, $y, $w, $h, $headsize, $headangle, $style);
$headsizeÆ$headangleÈOÌøÍlineƯ¶B¼üÌI[ÉA·³ª$headsizeAæ[px̼ªª$headangleiWAjÌOp`ÌèVªt¯çêéB
=item gÊibrace\bhj
$shapeobj->brace($x, $y, $w, $h, $style);
øÌÓ¡Íé`Ư¶B»Ìé`ÌÉ[ÜégÊð`æ·éB$wª³ÈçJ«ÊAÈç¶ÊB¶Ì{}ÅÍÔÉíÈ¢å«ÈgʪKvÈêÉgp·éB
=item pÊibracket\bhj
$shapeobj->bracket($x, $y, $w, $h, $style);
øÌÓ¡Íé`Ư¶B»Ìé`ÌÉ[ÜépÊð`æ·éB$wª³ÈçJ«ÊAÈç¶ÊB¶Ì[]ÅÍÔÉíÈ¢å«ÈpʪKvÈêÉgp·éB
=item ÛÊiparen\bhj
$shapeobj->paren($x, $y, $w, $h, $style);
øÌÓ¡Íé`Ư¶B»Ìé`ÌÉ[ÜéÛÊð`æ·éB$wª³ÈçJ«ÊAÈç¶ÊB¶Ì()ÅÍÔÉíÈ¢å«ÈpʪKvÈêÉgp·éB
=back
=head2 FIuWFNgÌì¬
FIuWFNgÍAColorTu[`Å쬷éB
$colorobj = Color($r, $g, $b);
$colorobj = Color('#RRGGBB');
$colorobj = Color($g);
OøÌêA$rÍÔA$gÍÎA$bÍÂÌ»ê¼êÌi0©ç1ÜÅÌÍÍÌljB
êøÅA#ÅnÜé16i6
̶ñÌêAñ
¸ÂÔAÎAÂÌi00©çffÜÅjÆÝȳêéB
êøÅAlÌêÍAO[Ìi0©ç1ÜÅÌÍÍÌljB0ªA1ªB
=head2 \¦Â\IuWFNgÌy[WÖÌzu
\¦Â\ÈIuWFNgðy[WãÉzu·éÉÍAshow\bhðp¢éB
$obj->show($page, $x, $y, $align, $transtype, @transargs);
±±ÅA$pageÍy[WIuWFNgA$xA$yÍ\¦ÊuA$alignÍzuA$transtypeÍÏ`ÌíÞA@transargsÍÏ`Ìp[^Å éB$alignÈ~ÌøÍȪūéB
\¦ÊuÌÀWÍAy[W̶º÷ª´_(0,0)ÆÈèAXÀWÍEÖAYÀWÍãÖü©ÁÄÁ·éBPÊÍ|CgÅ éB
zu$alignÍA($x,$y)Åwèµ½\¦ÊuÉεÄAIuWFNgðÇÌæ¤Ézu·é©ðwè·éàÌÅAÌ¡ÊuÆcÊuðgÝí¹Äwè·éB
¡Êu
l c IuWFNg̶[ð$xÉ í¹é
c c IuWFNgÌð$xÉ í¹é
r c IuWFNgÌE[ð$xÉ í¹é
cÊu
t c IuWFNgÌã[ð$yÉ í¹é
m c IuWFNgÌð$yÉ í¹é
b c IuWFNg̺[ð$yÉ í¹é
zu$alignÌwèðȪ·éÆA»ÌIuWFNgÅLÌ´_ð($x,$y)É í¹éBeIuWFNgÌÅLÌ´_ÍÌƨèB
¡«eLXg c 檶̶[ÌAº[©ç³Ì0.125{¾¯ãÌÊu
c«eLXg c 檶Ìã[ÌA¶EÌÊu
i c æªseLXgÌÅLÌ´_
ubN c ¶ã÷
æ c ¶º÷
}` c `æ½ßÌ´_ª»ÌÜÜ´_ÆÈé
show\bhÉA$transtypeÈ~Ìøð^¦éÆA\¦ÌÛÉÏ`·é±ÆªÅ«éBÏ`ÌíÞ$transtypeÆ»Ìp[^@transargsÉÍÌ¢¸ê©ðwè·éB
'magnify', $mx, $my c ¡ûüÉ$mx{AcûüÉ$my{AgåEk¬·é
'rotate', $rad c ½vñèÉ$radWA¾¯ñ]·é
'distort', $xtan, $ytan c (1,0)ð(1,$xtan)ÖA(0,1)ð($ytan,1)ÖÚ·æ¤ÉA¡²Ac²ð»ê¼êX¯é
eÏ`ÍAshow\bhÌ$xÆ$yÌøÅÜéÊuð´_ƵĨ±ÈíêéB
=head2 y[WÌC
show\bhÅ\¦Â\IuWFNgðy[WÉzuµÄ¢ÆAã©çzuµ½à̪èOÉzu³êÄAOÉzu³ê½àÌÉdÈÁÄ¢B
±ÌdÈèÌð§äµ½¢ê̽ßÉAy[WIuWFNgÉlayer\bhªpÓ³êÄ¢éB
$pageobj->layer($layernum);
$layernumÍCÔÅA0ÈãÌ®lBlayer\bhðÀs·éÆA»êÈ~Ì`æÍwèµ½CÔÌCÉεĨ±ÈíêéB
y[WÌàeª\¦³êéÆ«ÉÍACÔÌÔÉzu³êéB
=head2 X^CÌRs[
¼ÚüêqÉÈÁ½eLXgIuWFNgÌeLXgX^CÉÖµÄÍAeqÖWÉæéàeÌp³ª¨±ÈíêéÌÅAªX^CÌwèªÅ«éB»êÈOÌêÉX^CÌ©®IÈp³ª¨±Èíêé±ÆÍÈ¢B
ù¶ÌX^Cð³ÉµÄ®«ðÏXµ½èÇÁµ½èµ½X^Cð쬵½¢êAclone\bhðp¢éB±Ì\bhÍeLXgX^CAiX^CAubNX^CA}`X^CÌ·×ÄÉ¢Äg¦éB
$newstyle = $originalstyle->clone(%newargs);
%newargsðwèµÈ¯êÎPÉRs[ªìçêéB%newargsÅwèµ½®«Í³Ì®«ðã«·éi³Ì®«ªÈ¯êÎÇÁ³êéjB
=head2 X^Cwè̳ܴÜÈû@
eíÌX^CIuWFNgð쬵½èAclone()ÅRs[µ½è·éÆ«ÉA»ÌøÍnbV
XgÅ^¦éªAnbV
QÆâcssCNȶñÅ^¦é±ÆàÅ«éBͯŠéB
PStyle(size => 200, align => 'w', linefeed => '150%')
PStyle({size => 200, align => 'w', linefeed => '150%'})
PStyle('size:200; align:w; linefeed:150%')
¶ñÅ^¦éÆ«ÍAu®«¼:®«lvðu;vÅæØÁÄÀ×Äwè·éB½¾µAnbV
QÆâ¶ñÅwè·éÆ«ÍøÍ»Ì꾯ÅȯêÎÈçÈ¢B
®«lƵÄIuWFNgð^¦éƫͶñÉæéû@ÍæêÈ¢ªA®«làX^CIuWFNgÅ éÉÍAÌæ¤É {} ÅwèªÂ\Å éB
TStyle('withline:1; withlinestyle:{linewidth:0.5; linedash:2,2; strokecolor:#ff0000}')
øÉnbV
Xgð^¦éÆ«ÉàA®«lƵÄX^CIuWFNgðæ鮫i®«¼ªstyleÅIíéjâAColorIuWFNgðæ鮫i®«¼ªcolorÅIíéjÉ¢ÄÍA®«lðIuWFNgÅÈnbV
QÆâ¶ñÅ^¦é±ÆªÅ«éB
TStyle(withline => 1, withlinestyle =>
{linewidth => 0.5, linedash => '2,2', strokecolor => '#ff0000'})
=head2 PDF¶ÌoÍ
쬵½PDF¶ðt@CÉoÍ·éÉÍA¶IuWFNgÌprint\bhðp¢éB
$docobj->print($filename);
t@C¼$filenameÌg£qÍAÊíÍ.pdfÆ·éB
t@C¼ÆµÄ '-' ðwè·éÆWoÍÉoͳêéB
=head2 ¶îñÌÇÁ
PDFÉͶÌ^CgAì¬ÒAL[[hÈÇ̶îñðüêé±ÆªÅ«éB±êð¨±È¤ÉÍAÌæ¤Éadd_info()\bhðp¢éB
$docobj->add_info(Title => '^Cg', Author => 'ì¬Ò');
wèÅ«éL[ÍÌà̪ éB
Title => ¶Ì^Cg
Author => ¶Ìì¬Ò¼
Subject => ¶Ìåè
Keywords => ¶ÉÖA·éL[[h
Creator => ¶ð쬵½AvP[V¼
ȨAProducerL[ÉÍuPDFJ o[WvªACreationDateL[ÉÍì¬úiWjª©®IÉZbg³êéB
=head2 AEgC
PDFÉÍAEgCÆ¢¤Ú@\ª éiµ¨èÆྤjBAEgCÌÚð}EXÅNbN·éÆ»ÌÚÅwè³ê½Êuª\¦³êéBAEgCÍKwIÉ\¬³êAÍâßÈÇÌ©oµðAEgCÉγ¹é±Æª½¢B
PDFJŶÉAEgCðtÁ·éÉÍAeLXgIuWFNgð쬷éÛÉAÎÛ̶ñâIuWFNgÌOÉAEgCw¦IuWFNgðuBAEgCw¦IuWFNgÍ Outline() Tu[`Å쬷éBá¦ÎAuͶßÉvÆ¢¤©oµðAEgCÌgbvxÉÁ¦½¢êA¬Ìæ¤É·éB
Text(Outline('ͶßÉ'), 'ͶßÉ', $midasi_style)
±ÌeLXgIuWFNgªy[WÉzu³êéÆA¶ÌAEgCÉuͶßÉvÆ¢¤ÚªìçêıÌuͶßÉvÆ¢¤eLXg̶ãÌÊuªwè³êéB±ÌáÅÍAEgCÚÆeLXg̶ñð¯¶ÉµÄ¢éªAÙÈé¶ñðwèµÄàæ¢B
PxºÌu{ÌàevÆ¢¤©oµðAEgCÉÁ¦½¢êA¬Ìæ¤É·éB
Text(Outline('{Ìàe', 1), '{Ìàe', $midasi_style)
Outline() ÌQÔÚÌøÉÍAAEgCÌKwxðwè·éBx 0 ÍãLÌuͶßÉvÌáÌæ¤ÉȪūéB
AEgCÍAOutline()ðÜñ¾eLXgIuWFNgªy[WÉzu³êéÆ«ÉÉÇÁ³êÄìçêÄ¢B¢ÜÌƱëAù¶ÌAEgCÌrÉ}ü·éèiÍpÓ³êĢȢBx0ÌÚÌÉx2ÌÚðìéÈÇAKwÌMbvª¶¶éÆAMbvðßé½ßÌó¶ñÉæéAEgCÚªìçêéB
=head2 nCp[N
PDFÉÍnCp[N@\ª èAy[WãÌN³Éwè³ê½ÌæðNbN·éÆA»ÌNæª\¦³êéBNæƵÄÍA¯¶¶àÌêAÊ̶ÌêAURIihttp:ÈÇÅnÜéC^[lbgãÌêÆl¦êÎæ¢jª éªA¡ÌƱëPDFJÅͯ¶¶àÌêÆURIÉεĢéB
¯¶¶àÅÌNðìéÉÍANæÌeLXgÉDest()Tu[`żOðwèµÄ쬵½PDFJ::DestIuWFNgðzu·éBá¦Î
Text(Dest('dest'),'Næ',TStyle(c))
Æ·éÆA'Næ'Æ¢¤eLXgÌOÉ'dest'Æ¢¤¼OÌNæªìçêéBDest()ÅìçêéPDFJ::DestIuWFNg©ÌÍA\¦ÉÍ»êÈ¢BNæ̼OÍCÓ̶ñªg¦éªAuURI:vÅnÜéàÌÍURIÖÌN̽ßÉgíêéB
N³ÅÍé`Ì}`IuWFNgÌ}`X^CÌlinkÅNæ¼ðwè·é©AeLXgX^CÌwithboxstyleůlÉlinkwèð·éBá¦Î
Shape->box(0,0,100,50,'s',SStyle(link => 'dest'))
Æ·éÆA¡100|CgAc50|CgÌé`ªìçêÄA»ÌàðNbN·éƼOª'dest'ÌNæÉòÔBeLXgÌêÍA
Text('±±ðNbN', TStyle(withbox => 'n',
withboxstyle => SStyle(link => 'dest')))
Ìæ¤É·êÎæ¢B±Ìæ¤Éwithbox => 'n' Æ·éÆé`Í`æ³êÈ¢BNÅ é±Æ𦷽ßÉFðϦéÆ©ºüðt¯éÆ©¢Á½HvÍ[U[ÉC³êÄ¢éBiwithbox => 'b' źüðt¯é±ÆªÅ«éBj
URINÌêÍADest()ÉæéNæÌÝèÍKvÈANæ̼OƵÄAuURI:vɱ¯ÄURIð¯Îæ¢Bá¦Î
Text('ÄAhr', TStyle(withbox => 'n',
withboxstyle => SStyle(link => 'URI:http://www.adobe.com/')))
Ìæ¤É·éB
URIÍ·ÅÉURIGR[h³êĢȢÀèURIGR[h³êéB
=head2 û
PDFÍûūéBPDFÌo[WÉæÁÄgpÅ«éûû®ÌÍͪᤪA¡ÌƱëPDFJÅÍàÁÆàî{IÈ40rbgRC4ûðT|[gµÄ¢éB
û·éÉÍAencrypt()\bhðp¢ÄAI[i[pX[hA[U[pX[hA[U[ÖÌgpÂtOAðwè·éB
$docobj->encrypt($ownerpass, $userpass, $allow);
I[i[pX[hÆ[U[pX[hɯ¶àÌðwè·éÆAI[i[ ÀÅJ±ÆÍÅ«ÈÈéB
[U[ÖÌgpÂtOÍAÌLðÀ×½¶ñƵÄwè·éB
P c ¶Ìóü
M c ¶àeÌÏX
C c ¶©çÌeLXgÆæÌRs[
N c eLXgߨæÑÎbtH[tB[hÌÇÁAÏX
¦eLXgߨæÑÎbtH[@\Í¡ÌƱëPDFJÅÍ¢T|[g
=head2 PDFJ::DocNXÌ\bh
PDFJ::Doc->new($version, $pagewidth, $pageheight)
PDFJ::Doc->new({version => $version, pagewidth => $pagewidth, pageheight => $pageheight})
add_info($key => $value, ...)
add_info({$key => $value, ...})
encrypt($ownerpass, $userpass, $allow)
encrypt({ownerpass => $ownerpass, userpass => $userpass, allow => $allow})
filter($filter)
filter({filter => $filter})
print($file)
print({file => $file})
new_page($pagewidth, $pageheight)
new_page({pagewidth => $pagewidth, pageheight => $pageheight})
get_page($pagenum)
get_page({number => $pagenum})
get_lastpagenum
new_font($basefont, $encoding, $abasefont, $aencoding)
new_font({basefont => $basefont, encoding => $encoding, abasefont => $abasefont, aencoding => $aencoding})
italic($font1, $font2, ...)
italic({base => $font1, decorated => $font2})
bold($font1, $font2, ...)
bold({base => $font1, decorated => $font2})
new_image($src, $pxwidth, $pxheight, $width, $height, $padding, $colorspace)
new_image({src => $src, pxwidth => $pxwidth, pxheight => $pxheight, width => $width, height => $height, padding => $padding, colorspace => $colorspace})
=head2 PDFJ::PageNXÌ\bh
PDFJ::Page->new($docobj, $pagewidth, $pageheight)
pagenum
layer($layernum)
layer({layer => $layernum})
=head2 PDFJ::AFontNXÌ\bh
PDFJ::AFont->new_std($docobj, $basefont, $encoding)
PDFJ::AFont->new_ttf($docobj, $ttffile, $encoding)
=head2 PDFJ::CIDFontNXÌ\bh
PDFJ::CIDFont->new_std($docobj, $basefont, $encoding, $afontobj)
PDFJ::CIDFont->new_ttf($docobj, $ttffile, $encoding, $afontobj)
=head2 PDFJ::ShowableNXÌ\bh
Ì\bhÍAPDFJ::TextAPDFJ::ParagraphAPDFJ::BlockAPDFJ::ImageAPDFJ::ShapeÌeNXŤʵÄg¦éB
show($page, $x, $y, $align, $transtype, @transargs)
show({page => $page, x => $x, y => $y, align => $align, transtype => $transtype, transargs => [@transargs]})
width
height
=head2 PDFJ::TextNXÌ\bh
PDFJ::Text->new($text, $style)
PDFJ::Text->new(@texts, $style)
PDFJ::Text->new([@texts], $style)
PDFJ::Text->new({texts => $text, style => $style})
PDFJ::Text->new({texts => [@text], style => $style})
=head2 PDFJ::ParagraphNXÌ\bh
PDFJ::Paragraph->new($text, $style)
PDFJ::Paragraph->new({text => $text, style => $style})
linesnum
break($size)
break(@sizes)
break({sizes => $size})
break({sizes => [@sizes]})
=head2 PDFJ::BlockNXÌ\bh
PDFJ::Block->new($direction, $object, $style)
PDFJ::Block->new($direction, @objects, $style)
PDFJ::Block->new($direction, [@objects], $style)
PDFJ::Block->new({direction => $direction, objects => $object, style => $style})
PDFJ::Block->new({direction => $direction, objects => [@objects], style => $style})
adjustwidth($size)
adjustwidth({size => $size})
adjustheight($size)
adjustheight({size => $size})
break($size)
break(@sizes)
break({sizes => $size})
break({sizes => [@sizes]})
=head2 PDFJ::BlockSkipNXÌ\bh
PDFJ::BlockSkip->new($skip)
PDFJ::BlockSkip->new({skip => $skip})
=head2 PDFJ::ImageNXÌ\bh
PDFJ::Image->new($docobj, $src, $pxwidth, $pxheight, $width, $height, $padding)
setsize($width, $height)
setpadding($padding)
=head2 PDFJ::ShapeNXÌ\bh
PDFJ::Shape->new($style)
PDFJ::Shape->new({style => $style})
}N½ßi`æÍÍÌǪ¨±Èíêéj
line($x, $y, $w, $h, $style)
line({x => $x, y => $y, w => $w, h => $h, style => $style})
box($x, $y, $w, $h, $spec, $style)
box({x => $x, y => $y, w => $w, h => $h, spec => $spec, style => $style})
circle($x, $y, $r, $spec, $arcarea, $style)
circle({x => $x, y => $y, r => $r, spec => $spec, arcarea => $arcarea, style => $style})
ellipse($x, $y, $xr, $yr, $spec, $arcarea, $style)
ellipse({x => $x, y => $y, xr => $xr, yr => $yr, spec => $spec, arcarea => $arcarea, style => $style})
polygon([@coords], $spec, $style)
polygon({coords => [@coords], spec => $spec, style => $style})
arc($x, $y, $r, $start, $end, $spec, $style)
arc({x => $x, y => $y, r => $r, start => $start, end => $end, spec => $spec, style => $style})
IuWFNgzu½ßi`æÍÍÌǪ¨±Èíêéj
obj($obj, @showargs)
obj({obj => $obj, showargs => [@showargs]})
v~eBu½ß
setboundary($x, $y)
gstatepush
gstatepop
linewidth($w)
linedash($dash, $gap, $phase)
ctm(@array)
fillcolor($color)
strokecolor($color)
fillgray($g)
strokegray($g)
fillrgb($r, $g, $b)
strokergb($r, $g, $b)
moveto($x, $y)
lineto($x, $y)
curveto($x1, $y1, $x2, $y2, $x3, $y3)
rectangle($x, $y, $w, $h)
closepath
newpath
stroke
closestroke
fill
fill2
fillstroke
=head2 PDFJ::StyleNXÌ\bh
Ì\bhÍPDFJ::TextStyleAPDFJ::ParagraphStyleAPDFJ::BlockStyleAPDFJ::ShapeStyleÌ·×ÄÅg¦éB
clone(%args)
clone({%args})
clone($argstr)
=head2 PDFJ::TextStyleNXÌ\bh
PDFJ::TextStyle->new(%args)
PDFJ::TextStyle->new({%args})
PDFJ::TextStyle->new($argstr)
=head2 PDFJ::ParagraphStyleNXÌ\bh
PDFJ::ParagraphStyle->new(%args)
PDFJ::ParagraphStyle->new({%args})
PDFJ::ParagraphStyle->new($argstr)
=head2 PDFJ::BlockStyleNXÌ\bh
PDFJ::BlockStyle->new(%args)
PDFJ::BlockStyle->new({%args})
PDFJ::BlockStyle->new($argstr)
=head2 PDFJ::ShapeStyleNXÌ\bh
PDFJ::ShapeStyle->new(%args)
PDFJ::ShapeStyle->new({%args})
PDFJ::ShapeStyle->new($argstr)
=head2 PDFJ::ColorNXÌ\bh
PDFJ::Color->new($r, $g, $b)
PDFJ::Color->new($rgb)
PDFJ::Color->new($g)
PDFJ::Color->new({value => $rgb})
PDFJ::Color->new({value => $g})
=head2 PDFJ::OutlineNXÌ\bh
PDFJ::Outline->new($title, $level)
PDFJ::Outline->new({title => $title, level => $level})
=head2 PDFJ::DestNXÌ\bh
PDFJ::Dest->new($name)
PDFJ::Dest->new({name => $name})
=head2 àNX
ȺÍAÊíÍ[U[ª¼Úµ¤KvÌÈ¢APDFJàÅgíêéNXB
=over 4
=item PDFJ::FileNX
PDFJ::Doc̺¿¯BPDF¶PDFJ::DocIuWFNgðPDFt@CÉ«o·ÛÉAPDFIuWFNgÌõøîñÈÇÌ^f[^ðtÁµÄAKèÉ]Á½t@C\¢ðìéðð·éB
=item PDFJ::ObjTableNX
PDFJ::Doc̺¿¯BPDFJ::DocIuWFNgÉÜÜêéPDFIuWFNgðÇ·éB
=item PDFJ::TextSpecNX
PDFJ::Text̺¿¯ÆµÄAeLXg®«ðÛ·éB
=item PDFJ::Object::* NXQ
PDF¶ÍAdobeЪKèµ½PDF̶@ÉÁÄ\¬³êĨèA»Ì\¬PÊàܽuIuWFNgvÆÄÎêéB±ÌPDFxÌIuWFNgðAãLÅྵ½æ¤ÈPDFJɨ¯éPerlIuWFNgÆæÊ·é½ßÉAuPDFIuWFNgvÆÄÔ±ÆÉ·éBPDFJÍAáxÅv~eBuÈPDFIuWFNgðBÁµA[U[ª¼ÚµíÈÄæ¢æ¤ÉµÄ¢éB൩ªÅPDFIuWFNgðìµ½¢Æ«ÍAPDFJ::Object::* NXQðg¦Îæ¢B
=item PDFJ::TTFNX
TrueTypetHgt@C(.ttf)ÌàeðÇÝÆÁ½èATuZbgð쬵½è·éB
=item PDFJ::TTCNX
TrueTypeCollectiontHgt@C(.ttc)ðÇÝÆÁÄAwèµ½ÔÌtHgÉ¢ÄÌPDFJ::TTFIuWFNgð¾éB
=back
=head1 AUTHOR
õ
L<nakajima@netstock.co.jp|"mailto:nakajima@netstock.co.jp">
L<http://hp1.jonex.ne.jp/~nakajima.yasushi/|"http://hp1.jonex.ne.jp/~nakajima.yasushi/">
=head1 SEE ALSO
uJIS X 4051iú{ê¶ÌsgÅû@jv(JISA1995)
uPDFt@X æQÅv(AhrVXeYA2001)