#!/usr/bin/perl #======================================================================= # ____ ____ _____ _ ____ ___ ____ # | _ \| _ \| ___| _ _ / \ | _ \_ _| |___ \ # | |_) | | | | |_ (_) (_) / _ \ | |_) | | __) | # | __/| |_| | _| _ _ / ___ \| __/| | / __/ # |_| |____/|_| (_) (_) /_/ \_\_| |___| |_____| # # A Perl Module Chain to faciliate the Creation and Modification # of High-Quality "Portable Document Format (PDF)" Files. # # Copyright 1999-2004 Alfred Reibenschuh <areibens@cpan.org>. # #======================================================================= # # PERMISSION TO USE, COPY, MODIFY, AND DISTRIBUTE THIS FILE FOR # ANY PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT # THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL # COPIES. # # THIS FILE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT # OF THE USE OF THIS FILE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # $Id: 025_unifonts,v 2.0 2005/11/16 02:16:00 areibens Exp $ # #======================================================================= 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)