Áß‚‡ ÍË Ä‚ˆ

Ýß‹ Å›‹–

Jean-Pierre Dube à…Œßœ
JavaWorld.com
‚ŸœÍž„‹ à›‚˜œ :݇ͅ›


àšŠ
ß Ë΂é‹ÿé› ‚œŒÀ Ä‚éˆ Í‚— Ù‚– ‚ƒ ÁÍ ‚›Œ Áß‚‡ ÍË Ä‚ˆ àß›‡› ÎÁ Ýß‹ Å›‹–
ÿßÍ Í‚é— .ËéËÿé› àéìÁÍÁ ÁÍ ÞÀ ËÍé—é™› Ößœ ß ÿé‰ÁÍéÔ àéƒßË ÍéŸé„ ÞÁÏ
Ëœœ‚› ÿ韂žéŸ˜ÏéŸß ß ‚éÍÁÎéƒÁ ‚éƒ ÁÍ Å‚é‰é•é Ä‚ˆ Ù‚– java Print API
.ÅŠ‚‹ ËÁߊ Í…œ‚‹À ¬Ì’‚— ØŸÍ… ß áËœƒÍ—Ÿ„ à‰• ß ¬Print-Preview

ÁÍ Ä‚ˆ Ã߈͂žˆ ß Ã™‚– ÿ‰ÁÍÔ ¬Áß‚‡ ÍË Ä‚ˆ ÿ…›‹– µ àß›‡› ÎÁ Ýß‹ Å›‹– ÍË
ÍÁÍ– API ÿš‚ƒ ÍË Ä‚ˆ ÿ‡ßÍŠ Ë‚‡ŸÁ ÍË Å™ßž‹ Åž‡ Ù‚– ÞŸÁ .ÝŸ‚›œ ÿ› ÉŸÍŒ…
¬header/footer ‚éƒ ÿé…‚é‰é•é ËŸœÁß…ÿ› ¬Ã™‚– ÞŸÁ ÎÁ àË‚•…‹Á ‚ƒ .ËÍŸ˜ÿ›
ÖßÍŒ ÝÍ‚žˆ Å›‹– ÍË ÿ‹Ÿßœ à›‚œÍƒ à™‰Í› .ËŸœ— Ä‚ˆ Üߡ ß ØÁ͘ÁÍ‚„ ¬ÍŸß…
.˃‚Ÿÿ› à›ÁËÁ ݇œ„ Å›‹– ÍË ß



Ä‚ˆ Ù‚– ØÁËÁ
Å‚éŸéŸÎé‡éƒ ÁÍ Java Print API àé— Ë韅ŒÁË ÁÍ ÞŸÁ М‚Œ ² ß ± ÿ‚ž…›‹– ÍË
Ãé™‚é– ÞŸÁ ØŽ ß ÅÍË– à— Ë߃ ËŸÁߊ ÍË‚– ‚›Œ Å‚šÔÁ ÞŸÁ ‚ƒ .ËŸœ— ÿ‹Í̓
ÍË ÁÍ high-level ÿ‚éžéŸé˜ÏéŸß Ëßéƒé›é— Ãé™‚é– ÞéŸÁ .ËéŸéœ— ÿƒ‚ŸŒÎÍÁ ÁÍ
:Åé‹Á ÜŸÌ Å‚ŠŒ› ÿÁÍÁË Ä‚ˆ Ù‚– .ËÍ— ËÁߊ ÞÁ̓‡ Java Print API

Ëß›œ àË‚•…‹Á ÞÀ ÎÁ ÞÁß…ÿ› ÿœ‚‹À àƒ -±

.Å‹Á ΂Ÿœ ËÍß› Å‚‰• ÞËÍ— ÍËœÍ Åž‡ à— š‚ƒ ÿŸÀÍ‚— àìÁÍÁ -²

Ô‚éƒé…ÍÁ àéœßé˜éˆéŸ Ù‚– ÞŸÁ à— ‚‡œÀ ÎÁ .Print API ‚ƒ ʼnÁÍ ÿ˜œ‚› -³
ÿ‚éś͕ ÍŸ‚‹ ÿœ‚ƒŸ…Œ„ Æ‚ƒ à™ì‹› ÞŸÁ ¬ËÍÁËœ Java Print API ‚ƒ ÿ›Ÿ–…‹›
.ËŸË͘ ËÁߊ HTML ‚Ÿ PDF ÜŸƒ– ÎÁ ÿ‡ßÍŠ

ÎÁ ÚÍÁËé› àéŸéžé… ÍË à™—Œ…› ÿ‚ž…›‹– ÎÁ ÚŸ Í à— áÍ‚…Š‚‹ ÉÍÔ ÚŸ àŸž… -´
.ËŸ‚›œÿ› ÒŠŒ› ÁÍ àÍŸ’ ß ØÁ͘ÁÍ‚„ ¬à‰• ¬ÚÍË› ÜŸƒ–

ÞéŸÁ ‚éƒ Þ‚˜ËœË à‹ß… .؂ԜÁ ܃‚– áÍŸ˜ àÎÁËœÁ Ý…‹Ÿ‹ ÚŸ ÎÁ àË‚•…‹Á -µ
ÿ›…‹Ÿ‹ ‚Ÿ ß àËÍ— Í‚— Ëߊ àÁߊ™Ë áÍŸ˜ àÎÁËœÁ ÿ‚ž›…‹Ÿ‹ ‚ƒ ËœœÁß…ÿ› ß…Í…
Íé…›Ÿ…œ‚‹ ¬ÈœŸÁ áÍŸ˜àÎÁËœÁ ˉÁß à‹ ÿÁÍÁË Ã™‚– ÞŸÁ .ËœŸ‚›œ ÖÁ˃Á Ëߊ ÁÍ
.Ë߃ ËÁߊ ÅœŸß„ ß

ÍßÍé› ÎÁ ÿœ‚ƒŸ…Œ„ àœß˜ˆŸ Java Print API .Print-Preview ÿ˜ÏŸß àìÁÍÁ -¶
.Ëœ—ÿ›œ àìÁÍÁ Ä‚ˆ ÎÁ ܃– ÿ‡ßÍŠ

àé— ÍßÔœ‚› .Ì’‚— áËœƒ Í—Ÿ„ ܃‚…Í„ ß ËÍÁËœ‚…‹Á à͇œ„ ÚŸ ÎÁ ÿœ‚ƒŸ…Œ„ -·
Þ‚éééƒÎ ÚéééŸ ÞÁßéééœéééééƒ Áß‚é‡ Íé˜Á ÿé…é‰ ¬ËéŒ Íé—Ì ÝßË Åé›é‹é– ÍË
Íé ÎÁ ÞÀ ËÍé—é™é› ¬ËŒ‚ƒ àËŒ áËœƒ à–ƒÔ WORA (Write Once Run Anywhere)
ÁÍ page-setup àÍé‡éœé„ ÚŸ Ä‚ˆ Ù‚– .˃‚Ÿÿ› ÍŸŸ“… ͘ŸË ÝÍ•…š„ ‚… ÝÍ•…š„
.Ë߃ ËÁߊ Þ‚‹—Ÿ ‚ž›Í•…š„ Ý‚›… ÍË à— ËÍ— ËÁߊ àìÁÍÁ

ÜéŸéƒé– ÎÁ áËËé…› ÿ‡ßÍŠ ÿ‚ś͕ ÎÁ Ù‚– àˆ Í˜Á .Export ÿ˜ÏŸß àìÁÍÁ -¸
ÎÁ ‚žœÀ áÍŸ˜Í‚—ƒ ÑßÍ àìÁÍÁ ÿ™ß ¬Ëœ—ÿ› ÿœ‚ƒŸ…Œ„ (HTML ¬PDF ¬Postscript)
.ÝŸ‚›œÿ› ÍÁ̘Áß Þ‚˜ËœœÁߊ àƒ ÁÍ à™‰Í› ÞŸÁ .Å‹Á ÇÍ‚Š àß›‡› ÞŸÁ àÎ߉

ÁÍ ØéŸ‚éÕß àŸ™— Ù‚– .Å‹Á ÍÁËÍߊ̓ ÿŸš‚ƒ ÅŸß™ßÁ ÎÁ Þ…› ÅŸÍŸË› àìÁÍÁ -¹
Åé›é‹ ÎÁÍ… ¬Å‹ÁÍ Å›‹ ÎÁÍ… Ü›‚Œ à— Ëß›œ ËÁߊ Á͇Á Þ…› ÍËœÍ ‚ƒ àÔƒÁÍ ÍË
.ËŒ‚ƒÿ› Attributed String К— ÿÁ̓ ÿœ‚ƒŸ…Œ„ ß Ü›‚— ÎÁÍ… ¬Äˆ

ÔßÔŠ ß àÍŸÁË ¬ÜŸÔ…‹› ÜŸƒ– ÎÁ ÿ—Ÿ•Á͘ àŸ™ßÁ ÿ‚ś͕ ÿœ‚ƒŸ…Œ„ - ±°

JPEG ß GIF ÿ—Ÿ•Á͘ ÿ‚ž…›Í• ÖÁßœÁ ÎÁ ÿœ‚ƒŸ…Œ„ -±±

ÝéŸÕœ… ÁÍ ÚÍË› ‚Ÿ à‰• ÉÔ‹ ËœœÁß…ÿ› ‚žœŸÁ .header/footer ÿœ‚ƒŸ…Œ„ -±²
.ËŸ‚›œ feature ÁÍ Ø™…Š› ÿ‚footer ‚Ÿ header ËœÁß…ÿ› ÜßÁ à‰• ß ËœŸ‚›œ

ÑŠƒ ÚŸ ÅŸ–ß› ÞÁß…ÿ› ÿ˜ÏŸß ÞŸÁ ÎÁ àË‚•…‹Á ‚ƒ .Ń‚† ÅŸŽß ÿœ‚ƒŸ…Œ„ -±³
àé— ÝéŸéœé—ÿé› ÓÍ• Ü‚†› ÞÁßœƒ .ËÍ— Ń‚† Òߊƒ ܉› ÚŸ ÍË ÁÍ Ò‚Š ÿŸŒ ‚Ÿ
¬ÿ鎂éŸÍ ł郋‚‰› Ý‚‡œÁ ÿ‚‡ƒ .ËŸË ÍÁÍ– à‰• Ô‹ß ÍË ÁÍ ÿŸŒ ÚŸ ËŸÁߊÿ›
.ËéŸéŸ‚é›éœ ޟΘŸ‚‡ CENTER ÍÁË–› ÚŸ ÍË ÁÍ ÿ–•Á ß áËß› ÍÁË–› à— Å‹Ÿ•‚—
àé‰é• ËÍß› ÍË Ô–• .ËÁË ËÁߊ şΗ͛ Ëߊ container ÜŠÁË ÍË ÁÍ ÿŸŒ Ù‚–
àéƒ ‚éžéœÀ ÞË霂éƒé‹ˆ à™ì‹› ¬Ëœ…‹ ΜŸ…œ‚— ÿ˜› Ä‚ˆ ÿ‚ÿŸŒ à—ŸŸ‚‡œÀ ÎÁ
.ËÍŸ˜ÿ› ÅÍß ÅœŸÍ„ ÿŸŒ ÍË Í˜ŸË—Ÿ

ß Ö‚é•…ÍÁ àƒ à™—Œ…› ÿ‚ž…›‹– Ö‚•…ÍÁ ß ÓÍ ‚ƒ ˈ ܉› Ë‚ƒÁ ÿœ‚ƒŸ…Œ„ -±´
Î…Ÿœ‚— ÓÍ

.ËŸË͘ ËÁߊ Ëßˉ› ¬ÞÀ ÿÁ͇Á ÙŸÍÔ ÎÁ ÜßÁˇ ÿœ‚ƒŸ…Œ„ -±µ

.Ëœ…‹ ‚Í…Ÿœ‚— Ä‚ˆ Ù‚– ÍË ÅœŸÍ„ ÿ‚Object àŸ™— àßšƒ





Ù‚– · àƒ Î‡ ÿ‹Í̓
ËŸœ— Ã‚Š…œÁ ÁÍ UML ÚŸ àÍ‚›Œ ÝÁ͘‚ŸË Ù‚– ÉÍÔ Í…žƒ ÚÍË Åž‡

UML Diagram 1


ÿéŸéŒ ¬àéÔ–œ ÞŸÍ…š‚ƒ ÎÁ ÖßÍŒ ‚ƒ .ËËÿ› Þ‚Œœ ÁÍ ÿ†ßÍß› ß—Í… ÚŸ ÝÁ͘‚ŸË
àé— ÿéŸéŒ Ößéœ Íé Ü雂Œ à— ËŒ‚ƒÿ› PFPage ÿ‚Object Ü›‚Œ à— PFDocument
PFPrintObject Íé àé— Ë錂éƒÿé› PFPrintObject ÿŸŒ ÎÁ (instance) ÿÁà™‰ß
ÇéŸé˜ Þ‚é…ŸÁ̓ ÉŸŽß… ÞŸÁ ͘Á .ËŒ‚ƒ á͘ŸË ÿ‚PFPrintObject Ü›‚Œ ËœÁß…ÿ›
Ä‚éˆ ÃßéˆÍ‚éžéˆ Í‚…Š‚‹ ÎÁ áÍ…žƒ ÿ‚›œ à— ËŸœ— à‡ÁÍ› ± Ü—Œ àƒ Å‹Á àËœœ—
ÚéŸ Ð‚é‹Á ̓ ÉÍÔ à— ËŸ›ž• ËŸÁߊ Ü—Œ àƒ ÿ™‚›‡Á à‚˜œ ÚŸ ‚ƒ .Ëœ—ÿ› àìÁÍÁ
ÝéÁßéŠ àéìÁÍÁ áÍé…ŒŸƒ Å‚‰ŸŽß… Á˃ ×͛ ÿߘ™Á ËÍß› ÍË .Å‹Á ×͛ ÿߘ™Á
.ËÍ—


Ëœ‹ ÚŸ Í‚…Š‚‹ -± Ü—Œ


ÿ™— áÍŸ˜ àÎÁËœÁ Ý…‹Ÿ‹ ‚ƒ ‚› .ËËÿ› Þ‚Œœ ÁÍ Ä‚ˆ Ù‚– ÿ‰ÁÍÔ á˃ ÿ‚ž…›‹–
.ËÍ— ÝŸÁߊ ÖßÍŒ





Univesal Measurement System
.Åé‹Á áËÁËÍÁÍé– áÍ韘 àÎÁËœÁ ÿ‚ˉÁß ÎÁ ÿœ‚ƒŸ…Œ„ Ä‚ˆ Ù‚– Ýž› ÿ˜ÏŸß ÚŸ
Íé…é›éŸ…œ‚‹ ‚Ÿ ÈœŸÁ ÎÁ Ü‹—Ÿ„ ß ÅœŸß„ ÿ‚‡ƒ ËœË ÿ› ÉŸ‡Í… ÝËÍ› ÎÁ áÍ‚Ÿ‹ƒ
àé— ÝÁàËÍé— Ë‚é‡éŸÁ PFUnit ݂霃 ÍŸÌ„ ؂ԜÁ К— ÚŸ Þ› .ËœŸ‚›œ àË‚•…‹Á
ÁÍÁË ÁÍ Å霟߄ àƒ áÍŸ˜ àÎÁËœÁ ˉÁß ÚŸ ܟ˃… ÿÁ̓ ÝΚ ÿŸÁË…ƒÁ ÿ‚ÅŸ™ƒ‚–
.ËŒ‚ƒÿ›

:ÝËßé›éœ Ë‚é‡éŸÁ ÁÍ Ëéœé…‹ PFUnit К— à— àËœË ÜŸ—Œ… К— à‹ ÞŸœˆ› Þ›
‚éƒ ÿ‚éËé‰Áß ËŸœÁß…ÿ› ‚К— ÞŸÁ ‚ƒ .PFPointUnit ¬PFCmUnit ¬PFInchUnit
Ë‚é‡éŸÁ ‚éƒ ËŸœÁß…ÿ› ÞŸœˆ› .ËŸœ— Í‚— Ëߊ àÁߊ™Ë ËÍß› áÍŸ˜ àÎÁËœÁ ˉÁß
à•‚ŽÁ àß›‡› ÞŸÁ àƒ ÁÍ á͘ŸË áÍŸ˜ àÎÁËœÁ ˉÁß PFUnit К— ÿÁ̓ subclass
ÿÁ̓ setUnit() Ë…› ßË ÎÁ ¬ËŸœ—ÿ› àË‚•…‹Á ‚ž‹š— ÞŸÁ ÎÁ à—Ÿ›‚˜œ .ËŸì‚›œ
ŋ˃ Åž‡ getPoints() Ë…› ß áÍŸ˜ àÎÁËœÁ ˉÁß ÍË ÍÁË–› ÚŸ ØŸÍ…
.ËŸœ— àË‚•…‹Á ÅœŸß„ àƒ àËŒ ܟ˃… ÍÁË–› ÞËÍßÀ

ËÍÁË霂é…é‹Á ÖÁßéœÁ ÿ‚é‡éƒ ¬Ý‚é–ÍÁ ÞËÁË Þ‚Œœ ÿÁ̓ ‚ž‹š— ÞŸÁ ÎÁ àË‚•…‹Á
Ë‚é‡éŸÁ ÿé…š—Œ› Å‚ƒ‹‚‰› Ý‚‡œÁ Þ‚›Î ÍË ËœÁß…ÿ› integer ß ¬float ¬double
ÍË ‚Íß…ÁÍ„Á overloading ÞÁË–• ‚ž‹š— ÎÁ àË‚•…‹Á ÍË Í˜ŸË à…—œ ÚŸ .ËŸ‚›œ
К— àƒ ÁÍ ÿŽ‚ŸÍ ÿ™Á Å‚Ÿ™› àŸ™— Þ› Ü—Œ› ÞŸÁ ܉ ÿÁ̓ .ËŒ‚ƒÿ› Áß‚‡ Þ‚ƒÎ
Ý‚‡œÁ Þ‚›Î ÍË ‚àËÁË encapsulation ¬ÃŸ…Í… ÞŸÁ àƒ .ÝÁàËß›œ à•‚ŽÁ PFUnit
³ àéƒ È霟Á ² ˟˃ à΂‡Á Ü‚†› ÞÁßœƒ .ËŒ‚ƒÿ› ÍŸÌ„ Þ‚—›Á ÿŽ‚ŸÍ Å‚ƒ‹‚‰›
á͘ŸË ÿ‚àÁÍ ÎÁ ÁÍ Í‚— ÞŸÁ ËŸœÁß…ÿ› .ÝŸŸ‚›œ à•‚ŽÁ PFInchUnit Ô‹ß… ÈœŸÁ
.ËŸŸ‚›œ ÜŸ›—… Object Oriented ÎÁ ÍŸ’

PFInchUnit inch = new PFInchUnit(3.0);
inch.setUnit(new PFInchUnit(2.).getUnit()+inch.getUnit());

.ËŸË Ý‚‡œÁ ÁÍ Í‚— ÞŸÁ ËŸœÁß…ÿ› ÿ™ŠÁË ÿŽ‚ŸÍ ÿ‚Ë…› ÎÁ àË‚•…‹Á ‚ƒ ‚Ÿ

PFInchUnit inch = new PFInchUnit(3.0);
inch = inch.add(2.0);


.ÝËß›œ Ë‚‡ŸÁ áÍŸ˜ àÎÁËœÁ Ý…‹Ÿ‹ ÜŸ›—… Åž‡ Ü›—› ÞÁßœƒ ͘ŸË К— à‹ Þ›

.Å‹Á y ß x Ô‚–œ ØÍ› à— :PF Point
ËË ÿ› Þ‚Œœ ÁÍ Object ÚŸ àÎÁËœÁ à— :PF Size
.Å‹Á ÿ™ŸÔ…‹› àŸ‰‚œ ÚŸ ØÍ› à— :PFRectangle


.ËœŸ‚›œÿ› àË‚•…‹Á PFUnit К— ÎÁ Ùß• ÿ‚ž‹š— àŸ™—




PFDocument К—
Ðšé— ÞéŸÁ .ËÍÁË ÍÁÍé– Ä‚éˆ Ãé™‚é– àœ‚Šƒ‚…— Ý…‹Ÿ‹ ÍË ÍË PFDocument К—
export ß Ä‚éˆ Å鞇 ÁÍ ÝΚ Å‚Ÿ™› ß Ëœ— ÿ› Ü› à‰• container ÚŸ Ëœœ‚›
ÁÍ ÅÁË霅‹› àÍÁËÁ àƒ Ô߃͛ ÿ‚Ë…› ÎÁ ÿŽƒ ÞŸœˆ› К— ÞŸÁ .ËË ÿ› Ý‚‡œÁ
.ËŸ‚›œÿ› àìÁÍÁ Οœ

àË‚é•é…‹Á ‚ƒ ÁÍ ‚footer ß ‚header ËŸœÁß…ÿ› ÞŸœˆ› ¬PFDocument К— ‚ƒ
ËŸœÁß…ÿ› .ËŸŸ‚›œ ÝŸÕœ… ÚÍË› Ü— ÿÁ̓ setFooter() ¬setHeader() ÿ‚Ë…› ÎÁ
ÿ‚éËé…é› ÎÁ àË‚é•é…é‹Á ‚éƒ ÜßÁ àé‰é• ÿÁ̓ ÁÍ ÿ…ß‚•…› footer ß header
.ËŸŸ‚›œ ÝŸÕœ… setFirstPageFooter() ß setFirstPageHeader()

Ëé…é› ÞËÎ ÁË ‚ƒ .ËŒ‚ƒÿ› Print-Preview à͇œ„ ÚŸ Ü›‚Œ ÞŸœˆ› PFDocument
ÍË ÜŸŽ•… àƒ Á˃ à— ËŒ ËÁߊ ÍÁËß›œ Print-Preview à͇œ„ PrintPreview()
.Å•˜ ÝŸÁߊ ÞŠ‹ àÍ‚ƒ ÞŸÁ

ÿ‚éž…›Í• àƒ ÚÍÁË› export Åž‡ ÿ…Ÿ™ƒ‚– àìÁÍÁ PrintFramework ØÁËÁ ÎÁ ÿ—Ÿ
àËÎ‚éƒ ÎÁ 𛂗 PrintFramework ÿߘ™Á à—ŸŸ‚‡œÀ ÎÁ .ËŒ‚ƒÿ› à‰• ÿ‚‡ƒ ͘ŸË
Åéžé‡ ¬Ëßé›éœ ÅÍßé„‹—Á ÞÁß…ƒ ÁÍ ÿ…›Í• Ößœ Í à— ËÍÁË Ü‚›…‰Á ¬Å‹Á Ü–…‹›
ÿ‚éËé…› ÎÁ ÚŸ Í ÎÁ PDF ‚Ÿ HTML ÜŸƒ– ÎÁ ÿŸ‚ž…›Í• àƒ Ëߊ ÚÍÁË› ÅÍß„‹—Á
ÞéŸÁ àé— ËéŸéŒ‚éƒ à…ŒÁË à‡ß… .ËŸŸ‚›œ àË‚•…‹Á printHTML() ‚Ÿ printPDF()
‚雌 àƒ ÁÍ ÞÀ ÜŸ›—… Þ› .ËœÁàËŒœ ÜŸ›—… Îßœ ‚›Á Ëߌÿ› Í‚Õ ÉÍÔ ÍË ‚Ë…›
.ÝÍ‚„‹ÿ›

ÿÁÍéƒ .Ë韂雜ÿ› àìÁÍÁ Ëœ‹ ÿ‚àŠŒ› ÝŸÕœ… Åž‡ ÿ•™…Š› ÿ‚Ë…› PFDocument
àé— ËŸŸ‚›œ ÞŸŸ… ÁÍ ÚÍË› ÚŸ Ý‚œ ËŸœÁß…ÿ› setDocumentName() Ý‚œ ‚ƒ Ü‚†›
àÍé‡éœé„ .Ë韂é›éœÿé› ÒéŠéŒé› ÞÀ ‚éƒ Ü雂 Ý…‹Ÿ‹ Ä‚ˆ Ø ÍË ÁÍ ‚›Œ ÚÍË›
àÍé‡éœé„ Titlebar ÍË ÞÀ ÞËÁË Þ‚Œœ Åž‡ ÚÍË› Ý‚œ ÎÁ ÞŸœˆ› Print-Preview
showPageDigital ß showPrintDialog() ÿ‚éËé…é› Ý‚‡œÁÍ‹ .ËŸ‚›œÿ› àË‚•…‹Á
Ë…› Ô‹ß… à— page à͇œ„ à— ËŸŒ‚ƒ à…ŒÁË à‡ß… .ËËÿ› Þ‚Œœ ÁÍ àÔ߃͛ à͇œ„
ÎÁ Ðé„ .ËÍÁËéœ Ëßé‡ß Java Print API ÍË ËßéŒÿé› àËÎ ÁË showPrintDialog
àé— Ýé…é•‚éŸÍË ß ÝËÁË Ý‚é‡éœÁ ÿŒŸ‚›ÎÀ Ä‚ˆ Ëœˆ Ø™…Š› ÿ‚Ý͕Ś„ ÍË à—œŸÁ
ÝËßéŠ àé— Ý…•͘ ÝŸ›… ¬Å‹Á Åß‚•…› ÝÍ• Åš„ Í ÍË Ì’‚— àƒ Ô߃͛ ÿ‚à͇œ„
.Ý‹Ÿßœƒ page à͇œ„ ÚŸ

ÿ‚éËé…› ˟˃ à΂‡Á ¬ËŸËŒ ‚œŒÀ PFDocument К— ÿ‚ÅŸ™ƒ‚– ‚ƒ ‚›Œ à— Ü‚‰
.ËŸì‚›œ à‡ß… UML Diagram 2 àƒ .ÝŸŸ‚›œ ÿ‹Í̓ Å‚ŸŸÎ‡ƒ ÁÍ Ä‚ˆ

UML Digram 2

PFDocument print() Ëé…› à—Ÿ›‚˜œ ¬àËŒ àËÁË Þ‚Œœ ÝÁ͘‚ŸË ÞŸÁ ÍË ÍßÔœ‚›
Ä‚éˆ Ü› PFDocument .Ëœ…—͉ ÍË à™—Œ…› ÿ‚ž…›‹– ÞŸƒ ‚ž›‚Ÿ„ Ëߌÿ› àËÎ ÁË
ÚéŸ ËÍÁß Ëéƒ ß ËŸ‚›œ ÿ› Ë‚‡ŸÁ Book ÿŸŒ ÚŸ ÁË…ƒÁ .Ëœ—ÿ› instantiate ÁÍ
àé—éœéŸÁ ÎÁ ˃ .ËœË͘ à•‚ŽÁ Book àƒ document Å‚‰• Ý‚›… ‚… Ëߌÿ› à–™‰
ß ËßéŒÿé› àËÎ ÁËé PrinterJob print() ¬ËéŒ ÜéŸé›é—é… PFDocument àé–陉
.ËÍŸ˜ ÿ› àËžƒ ÁÍ Ä‚ˆ ËœŸÁÍ• àŸ–ƒ JavaPrintAPI

ÿé‹Í̓ àƒ ‚‡œŸÁ ÍË .ÅŠÁËÍ„ ÝÁߊ Ä‚ˆ Ù‚– ÍË ÿŸŒ Í Ñ–œ àƒ Ëƒ Å›‹– ÍË
.ÝŸÎÁËÍ„ÿ› PFPage К—





PFPage К—
à— ÿŸ‚ŸŒÁ ÿÁ̓ Container ÚŸ ÞÁßœƒ ß Ë΂‹ÿ› ØŸÍ… ÁÍ ÿÁà‰• PFPage К—
ËéÁßéŠ ÁÍ ËßéŠ Åé›Í• Ä‚ˆ Ù‚– ÍË à‰• Í .Ëœ—ÿ› Ü› ˜ߌÿ› ÍËœÍ ÞÀ ÍË
àé‰é•é àéƒ Ë韜Áß…ƒ à— ÿŸ‚Object ËÁË… ÿßÍ Íƒ ÿ…ŸËßˉ› àœß˜ˆŸ .ÅŒÁË
.ËÍÁËœ Ëß‡ß ËŸœ— à•‚ŽÁ

ÎÁ àé—éœéŸÁ ‚éŸ ËéŒ‚éƒ àé…éŒÁË ÁÍ ÑËßéŠ header/footer ËéœÁß…ÿ› à‰• Í
Ãé™‚é– àéœß˜ˆ .ËŸ‚›œ àË‚•…‹Á PFDocument К— ÍË àËŒ ØŸÍ… header/footer
ÜÍé…霗 à‰• ÁË…ƒÁ ¿ËŸ‚›œ àË‚•…‹Á header/footer ÎÁ à— ËÍŸ˜ÿ› ÝŸ›… Ä‚ˆ
àËéŒéœ ØéŸÍé… Í˜Á ¿àœ ‚Ÿ àËŒ ØŸÍ… header/footer ÑËߊ ÿÁ̓ à— ËŸ‚›œÿ›
header/footer ͘Á .ËÍßÀ ŋ˃ PFDocument ÿŸŒ ÎÁ ÁÍœÁ à— Ëœ—ÿ› ÿ‹ ¬ËŒ‚ƒ
àé‡ßé… .Ëß雜 ËÁߊ àË‚•…‹Á ÚÍË› header/footer ÎÁ à‰• ¬ËŒ‚ƒ àËŒ ØŸÍ…
à— getHeader() ß getFooter() :Å‹Á Ë…› ßË ÿÁÍÁË Document à— ËŸŒ‚ƒ à…ŒÁË
̓ header/footer ÑÎÍÁ .ËÍŸ˜ ÿ› àËžƒ ÁÍ ÉŸ‰ header/footer àìÁÍÁ à•ŸÕß
ß Ë錂éƒÿé› ÜßÁ àé‰é• header/footer ÿÁ̓ àËŒ ØŸÍ… (value) ÑÎÍÁ ÿ‚œƒ›
.ËŒ‚ƒÿ›œ Ýž› ¬àœ ‚Ÿ Å‹ ÜßÁ à‰• ÿ‹Í̓ ʼn… à‰• à—œŸÁ

ß getPrintableAreaOrigin() .ËéŒ‚éƒ ÿé› Ýéžé› Ëé…é› ßË ÿÁÍÁË PFPage К—
Üéƒ‚é– àËßË鉛 Å‚šÔÁ getPrintableAreaOrigin() .getPrintableAreaSize()
ÿ‚éŽé• ¬ËËÍé˜ÿé› Ò銌› ‚àŸŒ‚‰ Ô‹ß… à— Ì’‚— ÿš‚ƒ Äˆ Å›‹ àŒß˜ Ëœœ‚› Ä‚ˆ
header Ö‚é•é…ÍÁ ß ¬Ëéœé—ÿ› àË‚•…‹Á Ì’‚— ŗ͉ ÿÁ̓ ÞÀ ÎÁ ͘Ăˆ à— áÍ‚œ—
Î‚éƒ ÁÍ Ä‚ˆ ܃‚– ܉› àÎÁËœÁ ß Ë‚ƒÁ ͘ŸË ÅÍ‚ƒƒ ß .Ëœ—ÿ› àìÁÍÁ ÁÍ Ì’‚—
.ËŒ‚ƒÿ› Ä‚ˆ ܃‚– ÿ‚Ž• ß Ä‚ˆ ܃‚– ܉› Á˃› àËœË Þ‚Œœ ² Ü—Œ .ËœÁË͘ ÿ›



ÉŸŽß… ± ÑŠƒ ÍË à— ËŸ‚›œ Á͇Á ÁÍ Ä‚ˆ ܃‚– П•Í…œŸÁ ËŸ‚ƒ PFPage ¬Ä‚ˆ Åž‡
.ËŒ àËÁË



.ËŸË͘ ‚œŒÀ Ä‚ˆ ÿ‚ÿŸŒ àÍÁËÁ à߉œ ‚ƒ à— ËŸÍÁË ÁÍ ÞÀ ÿ˜Ë‚›À ÚœŸÁ





PFPrintObject ÚÍË
à— Ý…•͘ ÝŸ›… Þ› .ËÍŸ˜ÿ› ÅÍß ‚ߘ™Á ß—Í… Ђ‹Á ̓ Ä‚ˆ ÿŸŒ áÍ‚›› ÉÍÔ
:ÝŸ‚›œ àË‚•…‹Á ÜŸÌ ÿ‚ž…›‹– łՉš› ÎÁ ˃ ߘ™Á ÞÀ ÎÁ

à雂éœÍéƒ ÚŸ ‚ƒ ÜŸÔ…‹› ÚŸ Þ‚Ÿ› ÍË ÁÍ àÍŸÁË ÚŸ ËŸÁߊ ÿ› à— ÝŸœ— ÿ› ÓÍ•
àËÍé— Ý‚é’ËÁ ͘ŸË—Ÿ ‚ƒ ÁÍ Object ßË à— ËŸÍŸ˜ ÿ› ÝŸ›… ÿž…œ› .ËŸŒ—ƒ Ý‹Í
‚Ÿ ¬ÿ„— ¬‚‡ƒ‚‡ ÁÍ ‚žœÀ ÞÁß…ƒ ͅʼnÁÍ ‚… ËŸœ— ܟ˃… ÿŸŒ ÚŸ àƒ ‚… (group)
ÃßéŠ à雂éœÍéƒ ÚéŸ àéœß˜ˆ ‚›Á .ËŸË ÍŸŸ“… ÁÍ ‚žœÀ àÎÁËœÁ ‚Ÿ ß àËÍ— ØÌ‰
¿ËË Ý‚‡œÁ ÁÍ áÍ‚— ÞŸœˆ ËœÁß… ÿ› Object Oriented

Åé‹Á àéŸé™ßÁ ÚéŸé•Á͘ à— ÁÍ Í˜ŸË Object ÚŸ ß Container ÿŸŒ ÚŸ ËŸœÁß…ÿ›
ß ËÍÁÌé˜éƒ ÙÍ• ÁÍ ÒŠŒ› Object ßË ÞŸÁ ÞŸƒ ËŸ‚ƒ ‚›Œ à›‚œÍƒ .ËŸŸ‚›œ Ë‚‡ŸÁ
ß ÝËÁË Ý‚é‡éœÁ ÁÍ Í‚— ÞŸÁ šƒ– .Ëœ— ËÍߊ̓ ‚žœÀ ‚ƒ ÚŸ Í ÿ‚ÿ˜ÏŸß Ùƒ‚Ô›
.Ëß›œ ØÍÔ̓ ÁÍ Åš‚—ŒÁ ËŒÿ› ÿ…Š‹ àƒ à— Ë߃ Û‚ƒ ÎÁ Í„ ÿÁà›‚œÍƒ Ü‚‰

ßé˜é™Á ÞéŸÁ .Ë韜— àË‚•…‹Á ÿƒŸ—Í… ÿߘ™Á ÚŸ ÎÁ à— Ýœ— ÿ› Ë‚žœŒŸ„ Óß ÍË
ÿ‚éÿéŸéŒ ÎÁ ÝÁËé— Í ÁÍŸÎ Ë΂‹ÿ› Þ‚‹À áÍŸß… ÿ‚ÿŸŒ àŸ™— àƒ ÁÍ ÿ‹Í…‹Ë
ÿéŸéŒ ÚéŸ ÞéŸéƒ ÿé–Íé• ÈéŸé ß Ëœœ—ÿ› Ü› Container ÚŸ ÞÁßœƒ ÿ—Ÿ•Á͘
Ý‚‡œÁ ÁÍ ØŸ‚Õß ÿ›‚›… ‚ÿŸŒ Þ‚› .ËÍÁËœ Ëß‡ß ÿ—Ÿ•Á͘ ÿŸŒ ÚŸ ß Container
.Ëß›œ ËÁߊ ËŸ™ß… ÁÍ ‚ÿŸŒ ÎÁ ÿÁàŠ‚Œ àß›‡› ÚŸ ÿƒŸ—Í… Í‚…Š‚‹ .ËËÿ›

.ËŒ‚ƒÿ› ×͛ ÿߘ™Á ËÍ—Í‚— àËœË Þ‚Œœ ³ Ü—Œ



×͛ Í‚…Š‚‹ -³ Ü—Œ

¬Ë錂éƒÿé› ÿ韌 Ößœ ÚŸ ÎÁ Ô–• à— àËŸˆŸ„ ×͛ ÿŸŒ ÚŸ ËŸœÁß…ÿ› ³ Ü—Œ ÙƒÔ
ÿßé˜é™Á ÚéŸ ÜéŠÁË ÍË ÁÍ ‚Object ÎÁ áËÁË… ËŸœÁß…ÿ› ÞŸœˆ› .ËŸœ— Ë‚‡ŸÁ
àßÍé˜ ÚéŸ ÍË ÁÍ ÿŸŒ àß͘ Ëœˆ ËŸœÁß…ÿ› ÿ…‰ ß ËŸË ÍÁÍ– ÿß͘ ÅÍ߃ ×͛
ßé‰éœƒ ÁÍ Ã™‚– ÉÍÔ ËŸœÁß…ÿ› ߘ™Á ÎÁ àË‚•…‹Á ‚ƒ ‘–Áß ÍË .ËŸË ÍÁÍ– ͘ŸË
.˟΂‹ Þ‚‹À ÿÁàÕ‰š› ܃‚–

PFPrintObject àéé‹ßé… ‚ƒ ËŸœÁß…ÿ› :ËÁË à‹ß… ÞÁß…ÿ› ʼnÁÍ ÿƒŸ—Í… ÿߘ™Á
ÚŸ ÍË ÿ™Á ß ÿ‹‚‹Á ØŸ‚Õß àŸ™— à— ‚‡œÀ ÎÁ .ËŸË à‹ß… ÁÍ Ëߊ Ä‚ˆ ÿ‚ÿŸŒ
Üé†é› contaner ÿ‚éÅŸ™ƒ‚– àŸ™— PFPrintObject à‹ß… ¬ËœÁàËŒ àËœ‚‡œ˜ ܉›
àéß›‡› ÍŸÎ ÿ‚ÿŸŒ ÿ›‚›… ÞËÍ— ÍËœÍ ß Ì’‚— ÿßÍ Íƒ ÿŸŒ ÚŸ ܉› Þ…Š‚‹ Ń‚†
.ËËÿ› ‚›Œ à…•‚Ÿ à‹ß… ÿŸŒ àƒ ÁÍ

¬Ëéœé— Üé‰ ÁÍ ÿé–Áß Üì‚‹› ËœÁß… ÿ› ߘ™Á ÞŸÁ àœß˜ˆ à—œŸÁ ÎÁ ÿ‚˜À ÿÁ̓
´ Üé—Œ Ùƒ‚Ô› header ÚŸ ËŸÁߊÿ› ÝŸœ—ÿ› ÓÍ• .ËŸÍŸ˜ƒ ÍÕœ ÍË ÁÍ ÍŸÎ Ü‚†›
.ËŸœ— Å‹ÍË ËŸÁߊ ÿ›


Header ÚŸ Í‚…Š‚‹ -´ Ü—Œ


Å‚ƒ‹‚‰› ß ËŸŸ‚›œ ÝŸ‹Í… Å‹Ë ‚ƒ ÁÍ áΟˆ Í ËŸœÁß…ÿ› ‚›Œ header ÅŠ‚‹ ÿÁ̓
ÎÁ ËéŸéœÁßé…ÿ› à—œŸÁ ‚Ÿ ß .ËŸË Ý‚‡œÁ ÁÍ Å›‹– Í Ü‰› ÞŸŸ… ÿÁ̓ ÁÍ ÝΚ
.ËŸŸ‚›œ àË‚•…‹Á PFPrintObject ÍœŸ…œ‚— ÿ˜ÏŸß

.ËÍÁË Íƒ ÍË ÁÍ ÎŸˆ à› ÿ™Á ÿŸŒ à— ËŸœŸƒÿ› à‰• Header Í‚…Š‚‹ ÿ‹Í̓ ‚ƒ
ÅÍ‚éƒé ØÁÍé˜ÁÍ‚é„ ÿŸŒ ÞŸ™ßÁ .˜ߌÿ› à•‚ŽÁ ÿ™Á ÿŸŒ àƒ ØÁ͘ÁÍ‚„ ÿŸŒ ßË
:Å‹Á ‚ÿ˜ÏŸß ÞŸÁ Ü›‚Œ à— Ëß›œ ËÁߊ Ä‚ˆ ÁÍ "Printing In Java"

horizontalSticky = LEFT ß verticalSticky = CENTER

verticalSticky=CENTER ÿ‚ÿ˜ÏŸß ‚ƒ Page nn ÅÍ‚ƒ Ü›‚Œ ÝßË ØÁ͘ÁÍ‚„ ÿŸŒ
ÿ‚ÿ˜ÏŸß ‚ƒ ÔŠ ÿ韌 ÚŸ ‚› Ý‚‡œÁÍ‹ .ËŒ‚ƒÿ› horizontalSticky=RIGHT ß
ß horizontalSticky=CENTER ß verticalSticky=BOTTOM
àŸŒ‚‰ ÚŸ à— ËŸœ—œ Ñß›ÁÍ• .ÝéŸéŸ‚雜ÿ› à•‚ŽÁ horizontalFill=TRUE
Ô‹ß ÍË ÎŸˆ à› ËŸŒ‚ƒ Þì›Ô› à— Ë韟‚›œ ÝŸÕœ… ÿ™Á à™—Œ…› ÿ‚ž…›‹– ØÁÍÔÁ ÍË ÁÍ
.ŕ͘ ËœÁߊ ÍÁÍ– ‚‡— ÚŸ Í ËŸœŸƒƒ ‚… ËŸœ— à‡ÁÍ› µ Ü—Œ .˜͟˜ÿ› ÍÁÍ– header



à‰• header Í‚…Š‚‹ - µ Ü—Œ


.Ëœ—ÿ› ØÍÔ̓ ÁÍ Åš—Œ› ÎÁ áÍ‚Ÿ‹ƒ ÿŸŒ ÅŸ–ß› ÞËÍ— Ń‚† ÅŸ™ƒ‚– ÎÁ àË‚•…‹Á
ß àË߃ ˡ› àË‚•…‹Á ܃‚– Ë ÍË Ë ¬ÝŸËÍ— Ë‚‡ŸÁ Ü‚†› ÞŸÁ ÍË à— ÿÁà›‚œÍƒ
ËÍéŸé˜ƒ ÝŸ›… ̓͂— ͘Á .Ë΂‹ÿ› ÙƒÔœ› ÿ…Ÿ–ß› Í ‚ƒ ÁÍ Ëߊ Í‚—Ëߊ ÍßÔƒ
Û霂› ˟ˇ ÅŸŽß ‚ƒ ÁÍ Ëߊ Í‚—Ëߊ ÍßÔƒ à›‚œÍƒ ¬ËË ÍŸŸ“… ÁÍ à‰• Åž‡
.Å‹Ÿœ ÝΚ ÿ•‚ŽÁ à›‚œÍƒ ÈŸ ß àËÍ—



(Sticky Positioning) áÍŸ˜ÍÁÍ– ܉› ÞËÍ— Ń‚†
(Sticky) ÞËÍ— Ń‚† àÏÁß ÎÁ Þ› Á͈ à— ËŸœ—ÿ› Ã釅 š‚›…‰Á ‚‚›Œ ÎÁ ÿ™ŸŠ
Í‚— ÚŸ•Á͘ Í‚…‹ÁÍŸß ÚŸ ÞÁßœƒ à—Ÿœ‚›Î ÍË ÁÍ àÏÁß ÞéŸÁ .ÝŸ‚›œÿ› àË‚•…‹Á
ÍÁÍ– ̓͂— Í‚Ÿ…ŠÁ ÍË ß Ë‚‡ŸÁ ÁÍ ÿ…Ÿ™ƒ‚– ÝË߃ Í߃‡› .ÝËß›œ ÖÁ˃Á ÝËÍ—ÿ›
Ĉ ‚Ÿ Å‹ÁÍ ¬Ô‹ß ¬ÞŸŸ‚„ ¬š‚ƒ ܆› ͘ŸË Å›‹– àƒ ÁÍ Å雋– ÚŸ ËœÁß…ƒ à— ÝË
.ËË ÍÁÍ– Ń‚† ÅŸ–ß› ÚŸ ÍË ß àËœ‚ƒ‹ˆ àËŒ áÍŸ˜àÎÁËœÁ ÿƒ‹œ ÅŸ–ß› ÚŸ ÍË
àÍ‚ƒßË ËŸ‚ƒ ¬Ëƒ‚Ÿ ÍŸŸ“… ÞÀ àÎÁËœÁ ‚Ÿ ¬Ëƒ‚Ÿ ÍŸŸ“… Å›‹– ÞÀ ÿƒ‹œ ÅŸ–ß› ͘Á
Å郂† àÏÁß Þé› ÜéŸ™Ë ÞŸ› àƒ .Ëߌ àËœ‚ƒ‹ˆ ß à…•Í˜ÍÁÍé– Üé‰é› Þ‚é›é ÍË
àË‚é•é…‹Á ÞÀ ÎÁ à陂閛 ÿ‚éžé…œÁ ‚… ß ÝËß›œ Ã‚Š…œÁ ÁÍ sticky ‚éŸ ÞËÍé—
.ÝŸ‚›œÿ›

ÎÁ Ò‚éŠ Þ‚é—› ÚŸ ÍË ÁÍ Å›‹– ÚŸ ÞËÁË ÍÁÍ– ¬ÿÍŸ˜ÍÁÍ– ܉› ÞËÍ— Ń‚† ÿ˜ÏŸß
Ñ銃 ÚŸ ËŸœÁß…ÿ› "ÿÍŸ˜ÍÁÍ– ܉› ÞËÍ— Ń‚† " ÿ‚Ë…› ‚ƒ .Ë΂‹ÿ› Þ‚‹À à‰•
Í߉› ÍË ß ¬ÞŸŸ‚„ ¬Ô‹ß ¬š‚ƒ ¬áËß› Í߉› ÍË :ËŸË ÍÁÍ– ÍŸÎ ÿ‚žœ‚—› ÍË ÁÍ
.ËËÿ› Þ‚Œœ ÁÍ Å‚œ‚—›Á ÞŸÁ Ý‚›… ¶ Ü—Œ .Å‹ÁÍ ß Ô‹ß ¬Äˆ ÿ–•Á


Sticky Positioning - ¶ Ü—Œ


ÞéŸéŸé… ÁÍ áÍŸ˜ ÍÁÍ– ÅŸŽß ÍÁË–› à— ËœËÿ› ÁÍ Þ‚—›Á ÞŸÁ ‚›Œ àƒ Ë…› ßË
.setHorizontalSticky() ß setVerticalSticky() :ËŸœ—



àÎÁËœÁ
ÓÍ ËŸœÁß…ÿ› ÿ˜ÏŸß ÞŸÁ à™Ÿ‹ßƒ .Å‹Á àÎÁËœÁ ÍË ÍŸŸ’… ͘ŸË ËŸ–› Ë̓͂— ÚŸ
ËéœÁßé…ÿ› ÿ™ƒ– ÑŠƒ .ËŸœ— ÞŸŸ… ÁÍ ÿ™ƒ– ÑŠƒ àƒ Åƒ‹œ ÁÍ ÑŠƒ ÚŸ Ö‚•…ÍÁ ‚Ÿ
.Å‹Á ͘ŸË ÿŒŠƒ àƒ Ù™…› Ëߊ à— ÿŒŠƒ ‚Ÿ ß ËŒ‚ƒ à‰• ÚŸ Ëߊ

ß setHorizontalFill(boolean) :ËéœéË ÿé› Ý‚é‡œÁ ÁÍ àÎÁËœÁ ÞŸŸ… Ë…› ßË
setVerticalFill(boolearn)



‚àŸŒ‚‰
àéŸéŒ‚‰ ËœÁß…ÿ› Ý PFPrintObject ¬ËœŒ‚ƒ à…ŒÁË àŸŒ‚‰ ËœœÁß…ÿ› Å‚‰• ͘Á
ÿé‡ßÍéŠ ß àËßéƒ ËŸ•› ËœÁß…ÿ› à™—Œ…› Å›‹– ÚŸ ÍË àŸŒ‚‰ ÝŸÕœ… .ËŒ‚ƒ à…ŒÁË
ÎÁ ß àËÍé— ÝŸÕœ… Ü–…‹› ÍßÔƒ ÁÍ ‚àŸŒ‚‰ ËŸœÁß…ÿ› .ËŒŠƒ Ë߃žƒ ÁÍ àËŒ Ä‚ˆ
.ËŸŸ‚›œ ØŸÍ… ÿ™• áÍŸ˜ àÎÁËœÁ Ý…‹Ÿ‹

Ëé…é› ¿ËéŸéŸ‚é›éœÿé› ÝéŸéÕéœé… ÁÍ ÑéŠéƒ ÚéŸ àŸŒ‚‰ ÿ‚àŠŒ› ÿ›‚›… àœß˜ˆ
ÿ‹Í̓ Ý‚˜œ š‚›…‰Á .ËÍŸ˜ÿ› àËžƒ ÁÍ ‚Í‚— à› computePositionAndSize()
Ðšé— Ôé–é• ß Åé‹Á private Ëé…é› ÞéŸÁ àé— ËéŸÁàËéŒ àé‡ß…› UML Diagram 1
ÍÁÍé– ÅŸ–ß› computePositionAndSize() .ËÍÁË ÿ‹Í…‹Ë ÞÀ àƒ PFPrintObject
Ë…› ¬Å•ÍŸÌ„ Þ‚Ÿ‚„ àƒ‹‚‰› ÿ…–ß .Ëœ—ÿ› àƒ‹‚‰› ÁÍ filling ß ‚àŸŒ‚‰ ¬ÿÍŸ˜
ÞÀ ÍË ËéŸéœÁß…ÿ› à— ÁÍ ÿÁàËßˉ› Ö‚•…ÍÁ ß ‚œž„ ¬Äˆ Å›‹ ß š‚ƒ àŒß˜ ÍÁË–›
ÍÁÍé– àËßˉ› ÞŸÁ ÎÁ ÇÍ‚Š à— áΟˆ Í .ËœÁË͘ÿ› ΂ƒ ÁÍ ËŸœ— ÝŸ‹Í… àËßˉ›
.Ëߌÿ› ØÌ‰ ¬ËÍŸ˜

.ÝŸœ—•Áÿ› áÍÕœ computePositionAndSize() Ë…› àƒ Ü‚‰

ÍË‚› ÿŸŒ .ËœÁË͘ ÿ›Íƒ ÁÍ ÝŸ‹Í… ÿ–Áß àÎÁËœÁ ß ÖßÍŒ Á˃› ÍË‚› ÿŸŒ ÁË…ƒÁ
Íé˜ŸË ÿŸŒ ÚŸ ‚Ÿ ¬Å‹Á àËŒ à•‚ŽÁ ÞÀ àƒ PFPage ÿŸŒ à— ËŒ‚ƒ ÿÁà‰• ËœÁß…ÿ›
àéƒé‹‚‰› ÁÍ sticky sizing ß ËŸŸ‚›œ ÝŸÕœ… ÁÍ ‚àŸŒ‚‰ ˃ .PFPrintObject
‚éƒ .ËéŸéŸ‚›œ ÒŠŒ› ß ÞŸŸ… ÁÍ áÍŸ˜ÍÁÍ– ÅŸ–ß› ÿ‚àŠŒ› Ý‚‡œÁÍ‹ .ËŸŸ‚›œ
à霂é˜Áˇ Å‚ŸßŠ ÜŠÁË… ÍË Ë߇ߛ Åš—Œ› Ý‚›… ¬ÅÍß ÞŸÁ àƒ Å‚ƒ‹‚‰› Ý‚‡œÁ
ÎÁ ÇÍ‚éŠ ÍË ÿéŸéŒ ÚéŸ Ý韋ͅ à—œŸÁ ÎÁ áÍŸ˜ß™‡ ÿÁ̓ .ËŸÁàËÍ— ܉ ÁÍ ‚ŸŒÁ
ÿ‚éÿéŸéŒ .ËËÍé˜ÿ› àË‚•…‹Á Clipp ÿÁ̓ Graphics2D ÎÁ ¬ËÍŸ˜œ ÅÍß àËßˉ›
ÿÁÍéƒ .ËéœéŸ‚é›éœÿ› àÍŸŠÌ ÁÍ Å‚ƒ‹‚‰› ÇŸ‚…œ drawingSize ß drawingOrigin
:ËéŸéŸ‚é›éœ àË‚é•é…é‹Á ÜéŸÌ Ëé…é› ßË ÎÁ ¬ÍéŸË‚é–é› ÞéŸÁ àéƒ ÿ郂éŸé…‹Ë
.getDrawingSize() ß GetDrawingOrigin()

rotate(double) Ë…› .ËœÁË͘ ÞÁß…ÿ› ÁÍ Å›‹– Í Ø™…Š› ÿ‚ àß™‡ Ë‚‡ŸÁ ÿÁ̓
àé‡ÍË Ãé‹é‰ Íéƒ ‚ŸÁßÎ Ý‚›… .Ëœ—ÿ› à•‚ŽÁ ÁÍ ÅŸ™ƒ‚– ÞŸÁ PFPrintObject ÍË
.ËœË͘ÿ› àƒ‹‚‰›



ØÁ͘ÁÍ‚„
ÞéŸÁ PFParagraph ß ËÍÁË Ã陂– ÍË áÍ‚Ÿ‹ƒ ÅŸ›Á ÞŸÍ…›ž› Þ…› ÿÁÍ‚— ÅŸÍŸË›
String ÿéŸéŒ ÚéŸ :ËÍéŸÌ„ÿ› ÁÍ áËßÍß Ößœ ßË ÿŸŒ .ËÍŸ˜ ÿ› àËžƒ ÁÍ à•ŸÕß
ÝßË Åé›é‹– ÍË AtributedString ÿŸŒ .AttributedString ÿŸŒ ÚŸ ß ËÍÁËœ‚…‹Á
àé— Åé‹Á ÿœ…› ÞËÍ— à•‚ŽÁ àÁÍ ‚žœ… ÍŽ‚‰ Ü‚‰ ÍË ß ËŸË͘ ÉŸÍŒ… àß›‡› ÞŸÁ
àéˆ HTML ß RTF ‚éŸ XML Ë韜— ÜÁß‹ Å‹Á Þ—›› ‚›Œ ÎÁ ÿŽƒ .àËŒ ś͕ Áˡ›
Åé›Í• ÿœ‚ƒŸ…Œ„ ÿœ‚‹À àƒ ËŸœÁß…ÿ› .ÝÍ‚„‹ÿ› ‚›Œ àËž àƒ ÁÍ Í‚— ÞŸÁ ¿ËœËŒ
ÍË .ËéœÍÁË ÿ•‚ŽÁ Í‚— àƒ Î‚Ÿœ ͘ŸË ś͕ ßË à—Ÿ™‚‰ ÍË ¬ËŸœ— à•‚ŽÁ ÁÍ XML
‚é›éŒ áÍßé• ÿ‚΂Ÿœ ‘•Í Åž‡ ÁÍ ÝΚ ß ÿ•‚— ÿ‚ ÅŸ™ƒ‚– Ã߈͂ˆ ÞŸÁ Ü‚‰ Í
.ËÍÁË

ÿ霂éƒéŸ…Œ„ ÁÍ Ü›‚— ÎÁÍ… Οœ ß ¬Äˆ ß Ô‹ß ¬Å‹ÁÍ Å›‹ ÎÁÍ… ÎÁ PFParagraph
ÍË Íé˜Á ‚é›Á ¬Ë韟‚›œ ØŸÍ… Þ…› ÿÁ̓ ÁÍ ÓÍ• ÑŸ„ ÛœÍ ÚŸ ËŸœÁß…ÿ› .Ëœ—ÿ›
.ËË͘ÿ› ޟΘŸ‚‡ ¬ËŒ‚ƒ àËŒ ØŸÍ… Þ…› ÿÁ̓ ÿ˜œÍ AtributedString

ËéŸéœÁß…ÿ› ÁÍ àÔ߃͛ ÿ‚Ë— .Ëœœ— ÿ› àÍÁËÁ ÁÍ Þ…› ÎÁÍ… private Ë…› Í‚žˆ
.ËŸì‚›œ àÕ‰š› ÝßË Å›‹– ÿ‚ž™‚†› ÍË





ÿŸÁË…ƒÁ Å‚›Ÿ‹Í…
ß .àÍéŸÁË ¬ÜŸÔ…‹› ¬ÔŠ :Ë߃ ËÁߊœ Ü›‚— ÿ—Ÿ•Á͘ àŸ™ßÁ Å‚œ‚—›Á Þß˃ Ù‚–
ÍË ÝéŸé‹Íé… Ëé…› ÚŸ ÎÁ ÿŸŒ Í .ËœËÿ› Ô‹ƒ PFPrintObject ÿŸŒ ‚žœŸÁ àŸ™—
ÿ‚éàŠŒ› ÝŸÕœ… Åž‡ ÿ•™…Š› ÿ‚Ë…› .ËŸ‚›œÿ› àË‚•…‹Á ÍËœÍ Åž‡ Graphics2D
.Ëœ…‹ ÿ‹Í…‹Ë ܃‚– ÛœÍ ß ÔŠ ÛœÍ ¬ÿŽÍ ÔßÔŠ à™›‡œ› Ø™…Š›



ÍŸß‚…
ËéŸéœÁß…ÿ› à…ƒ™Á .ËŸ‚›œ ÿ› ÿœ‚ƒŸ…Œ„ GIF ß JPEG ÿ‚ ÜŸ‚• ÎÁ PFImage ÿŸŒ
Ýé…éŒÁËž˜œ àË‚‹ ÁÍ PFImage Þ› .ËŸŸ‚›œ à•‚ŽÁ Οœ á͘ŸË ÿ‚ž…›Í• ÿœ‚‹À àƒ
ÞÀ ÍË ÁÍ àé…é•ÍéŒéŸ„ áÍŸß… ÿ‚ÑÎÁËÍ„ ÿÁ̓ Ü›‚— áÍŸÌ„ ؂ԜÁ à—Ÿ™‚‰ ÍË
¬ÿŸŒ ÚŸ ÍË Java 2D API ÿ‚ž…Ÿ™ƒ‚– àŸ™— ÞËÁË ÍÁÍ– ÍË ÿ‹ ÿ‚‡ƒ .ÝËÁË ÍÁÍ–
àéƒ Ô߃͛ Üì‚‹› ß ÝËÁË ÍÁÍ– ÞÀ ÍË ÁÍ Ä‚ˆ Ù‚– ÿÁ̓ ΂Ÿœ ËÍß› ÿ‚ž…Ÿ™ƒ‚–
Åé‹Ëéƒ ÿÁÍéƒ ÁÍ Ë…› ÚŸ .Ýœ—ÿ› ÍÁ̘Áß ‚›Œ àƒ ß àËÍ— ‚Í ÁÍ ÍŸß… ÑÎÁËÍ„
ÚéŸ àƒ à—Ÿ›‚˜œ .ÝÁàËß›œ à•‚ŽÁ Οœ àËŒ Í•‚ƒ áÍŸß… ÿŸŒ ÎÁ ÿ„— ÚŸ ÞËÍßÀ
ÁÍ áÍéŸßé… ÿ‚ÑÎÁËÍ„ àŸ™— ËŸœÁß…ÿ› ¬ËŸËß›œ ÁËŸ„ ÿ‹Í…‹Ë àËŒ Í•‚ƒ ÍŸß…
Ëé…é› ÎÁ àË‚é•é…é‹Á ‚éƒ ÁÍ ÍéŸßéé… ÚéŸ .ËéŸéŸ‚é›éœ ÜŸ›—… ¬ËŸÁߊÿ› à—
Í郅› URL ÚŸ ËŸ‚ƒ String Í…›ÁÍ‚„ .ËŸŸ‚›œ load àÕ•‚‰ ÍË setURL(String)
.ËŒ‚ƒ



ÜßÁˇ
àé—éŸé›‚é˜éœ .Ë߃ ËÁߊœ Ü›‚— ¬Üߡ ÿœ‚ƒŸ…Œ„ Ëß‡ß ÝË ÅÍß ÍË ‚› Ù‚–
.ËœŸÀÿ› Ú›— àƒ ‚ž‰ÍÔ ÞËÍ— ÝÕœ› ÿÁ̓ šß›› ¬ËœßŒÿ› Ë‚‡ŸÁ àËŸˆŸ„ ÿ‚Ù‚–
à韙— ÁË…ƒÁ ÎÁ ÞŸÁ̓‚œƒ ¬Å‹Á Üߡ ÍË Üß™‹ ÚŸ ͘œ‚Ÿ‚›œ PFPrintObject Í
àË̓ Í‚—ƒ Ã߈ Í‚žˆ ß Ã™‚– ÍË à— ÿŸ‚Ë…› .ËŸ…‹ ÁÍÁË ÁÍ ‚ž‹š— ÿ‚ž…Ÿ™ƒ‚–
.Ëœœ—ÿ› Ü›‚— ÁÍ Üߡ ÿ‚žœß…‹ ß ÍÔ‹ à— Ëœ…‹ ÿŸ‚àŠŒ› ͘œ‚Ÿ‚›œ ˜ߌÿ›

ÎÁ ÜßËé‡ Ðšé— ¬Å‹Šœ .ËŒ‚ƒÿ› Οœ ÿŸ‚ž…ŸËßˉ› ÿÁÍÁË Ã™‚– Üߡ Å‚ŠŒ› ‚›Á
ÿ‚éŽé• Þ‚é›Î ÚéŸ ÍË ËœÁß…ÿ›œ Üß™‹ ÚŸ .Ëœ— ÿœ‚ƒŸ…Œ„ ËœÁß…ÿ›œ Þß…‹ ÅŸŽß
ÁÍ Üߡ Å‚šÔÁ ËœÁß…ÿ›œ Ä‚ˆ Ù‚– ¬ÝßË .ËŸ‚›œ Ü‚“ŒÁ ÁÍ Üß™‹ ÚŸ ÎÁ Í…ŒŸƒ
ÜéŸé›é—é… à›‚œÍƒ ÍÔ‹ Ëœˆ ‚ƒ ÁÍ ØŸËÍ ÚŸ Í‚ƒ Í à— Å‹Á ÝΚ .ËŸ‚›œ import
.ËŸì‚›œ



Visual Å‚–‰™› Ä‚ˆ
PFVisualObject .Åé‹Á ËŸ•› à‰• ÿßÍ à™—Œ…› ÿ‚ž…›‹– ÞËÍ— ÍËœÍ Å‚–ßÁ ÿŽƒ
àé— ÁÍ áÍééƒ àé™é—éŒé…› ÿ‚ž…›‹– .setComponent() :Å‹Á Ë…› ÚŸ ÿÁÍÁË Ô–•
ÁÍ á̓ à™—Œ…› ÿ‚ž…›‹– Ä‚ˆ Ë…› .ËŸœ— ËÍÁß Ë…› ÞŸÁ àƒ ËŸœ— Ä‚ˆ ËŸÁߊÿ›
Ëé…é› Ëéƒ ß ÞŸŸ… PFVisualComponent Ђ‹Á ̓ ÁÍœÀ ÅŸ–ß› ß áÍŸ˜ àÎÁËœÁ
.ËœÎÿ› ÁË Graphics2D ÿŸŒ ‚ƒ ÁÍ paint

.ËéŸÍ‚é„é‹éƒ ÍÔ‚Šƒ á̓ à™—Œ…› ÿ‚ž…›‹– Ä‚ˆ Þ‚›Î ÍË ÁÍ Ýž› Ü›‚ ÚŸ ËŸ‚ƒ
ÿ› Ë‚‡ŸÁ ÁÍ Ëߊ Visual ÿŸŒ à— ÿ™‰› ¬ËŒ àËÁË ÉÍŒ ÜßÁ Å›‹– ÍË à—ŸÍßÔœ‚›
àé—韛‚˜œ .ËÍÁË ÍŸ†‚… Ëߌÿ› ÙšÔÁ ÞÀ àƒ à— Graphics ÿŸŒ Å–Ë Íƒ ¬ËŸŸ‚›œ
ÞÀ àéƒ Í‚é—ËßéŠ ÍßéÔƒ AffineTransform ÚŸ ¬ËË͘ÿ› Ë‚‡ŸÁ Graphics ÿŸŒ ÚŸ
ÐéŸÁßéŸË ÿ‚Ž• àƒ ÁÍ ÍƒÍ‚— Ü‚“ŒÁ ËÍß› ÿ‚Ž• AffineTransform .ËÍŸ˜ÿ› Ù™…
Frame ÚŸ ÜŠÁË ÍË ÁÍ Ëߊ à™—Œ…› ÿ‚ž…›‹– ‚›Œ àˆœ‚œˆ Ü‚†› ÿÁ̓ .Ëœ—ÿ› map
ÞéŸÁ ÍË .Ëéœé—ÿé› map ÐéŸÁßŸË ÿ‚Ž• ÍË ÁÍ AffineTransform ¬ËŸŸ‚›œ Ë‚‡ŸÁ
Åé–Ë Þ‚é›é ‚éƒ ‚›Œ Å‚–‰™› à‡Ÿ…œ ÍË .ËÍÁË áÍ…›— Å–Ë à— screen ÚŸ ¬Ü‚†›
ËéŸ‚éƒ ¬ËéŸéœé— àË‚•…‹Á Å‚–Ë Í†—Áˉ ÎÁ ËŸÁߊÿ› ͘Á .Ëߌ ÿ› Ä‚ˆ screen
ÿ—Ÿ•Á͘ context ÎÁ ÞßÍŸƒ ÍË ÁÍ Þ‚…ÍÕœ ËÍß› Å‚–‰™› à— ËŸŒ‚ƒ à…ŒÁË ÍÔ‚Šƒ
.ËŸœ— Ë‚‡ŸÁ





Ä‚ˆ ÍßÍ›
Þ‚éŒéœ ÁÍ àé‰é• ÚŸ Ô–• Þ‚›Î Í ÍË ¬ËŒ ÉÍÔ› ‚‡œŸÁ ÍË à— Ä‚ˆ ÍßÍ› ÿ˜ÏŸß
Ëé‰ ‚é… ÁÍéœÀ àÎÁËœÁ ËŸ‚ƒ ¬Íß…Ÿœß› ÿßÍ à‰• ÚŸ ÞËÁË Þ‚Œœ ÍßÕœ›ƒ .ËËÿ›
Ýéžé› ͂韋ƒ ÍŸß… ÞËÍ— ڈߗ ‚Ÿ ÛÍ΃ Ń‹œ Õ•‰ .ËŸË ÍŸŸ“… Íß…Ÿœß› à‰•
°/·· ‚éƒ ÍéƒÁÍéƒ ÈéœéŸÁ ±± ÍË ¸/µ ËÁÖƒÁ ÍË à‰• ÚŸ Ń‹œ Ü‚†› ÿÁ̓ .Å‹Á
°/·· ËéŸ‚éƒ Ýé ÿÁ àé‰é• ÞŸœˆ ÑŸ‚›œ à͇œ„ Ö‚•…ÍÁ àƒ ‚œž„ Ń‹œ .ËŒ‚ƒÿ›
.ËŒ‚ƒ

ÞŸ› ÎÁ ÝŸœÁß…ÿ› ¬ËŸ‚›œÿ› ÍËœÍ ÁÍ Graphics2D ÿŸŒ ÚŸ Ä‚ˆ Ù‚– à—‚‡œÀ ÎÁ
àËéŸéŒ— ÍŸß… ËŸœÁß…ÿ› .ÝŸœ— àË‚•…‹Á Ý Íß…Ÿœß› à‰• ÿßÍ ÝŸ‹Í… Åž‡ ÿŸŒ
ÍéŸéŸé’… Preview àÍé‡éœ„ ÍË Íß…Ÿœß› à‰• ‚ƒ ÞË߃ Ë‚œ…› Åž‡ ÁÍ Ëߊ àËŒ
Í‚—ƒ Graphics2D ̓ ÁÍ AffineTransform ¬Í‚— ÞŸÁ Ý‚‡œÁ ÿÁ̓ .ËŸË àÎÁËœÁ
.˟̓ƒ

¬àé‰é• ÞŸÍŠÀ ‚… ÜßÁ à‰• ÎÁ ËœÁß…ÿ› ̓͂— Preview à͇œ„ ÎÁ àË‚•…‹Á ‚ƒ
àßšé .Ëœ— ڈߗ ‚Ÿ ÛÍ΃ ÁÍ ÍŸß… ËœÁß…ÿ› ß Ëœ— ÍßÍ› ÿ™ƒ– ‚Ÿ á˃ Å‚‰•
.ËŒ‚ƒÿ› Ä‚ˆ ÿÁ̓ áËŸ™— ÿÁÍÁË à͇œ„ ÞŸÁ ¬ÞÀ ̓

PFPrintPreviewToobar ÞÀ Þ韙ßÁ à— ËË͘ÿ› ÜŸ—Œ… ÿŸŒ ßË ÎÁ Preview à͇œ„
àéƒ ÁÍ ÍéƒÍ‚é— ÞéŸé›ÁÍé• ß Å‚é—Íé‰ ß Ë‚é‡éŸÁ ÁÍ toolbar ÿéŸéŒ ÞŸÁ .Å‹Á
Íßé…éŸéœßé› ÿßÍ ÁÍ à‰• ‚… Ë…‹Í•ÿ› ¬ËŒ‚ƒÿ› ÿŸŒ ÞŸ›ßË à— PFPrintPreview
Ëéœéœé— ÿé› Í‚é— Ýé ‚éƒ àéœß阈 ÿŸŒ ßË ÞŸÁ ÝœŸƒƒ à—œŸÁ ÿÁ̓ .Ëœ— ÍËœÍ
.ËŸœŸƒƒ ÁÍ UML Diagram 3

UML Diagram 3


Print Job à͇œ„
àƒ ËÍ—Í‚— ß ÅŸ™ƒ‚– Õ‚‰™ ÎÁ ‚ÝÍ• Åš„ àŸ™— à—œŸÁ ÎÁ Þ‚œŸ›ÔÁ Ü߉ ÍßÕœ›ƒ
ÁÍ ËÍÁË霂酋Á à͇œ„ ÚŸ à— Ýœ—ÿ› Ë‚žœŒŸ„ ¬ËœŒ‚ƒ à…ŒÁË ÿ‹Í…‹Ë à‰• ÞŸ›
‚‡œÀ ÎÁ ËŸŸ‚›œ àË‚•…‹Á Ì’‚— Åž‡ ß ‚àŸŒ‚‰ Ëœœ‚› ÿŸ‚Í…›ÁÍ‚„ ÝŸÕœ… ÿÁ̓
ÍË Ëßé‡ßé› ÿ‚éÍé…é›ÁÍ‚„ Ä‚ˆ ÿÁ̓ Å‚‰• Ã‚Š…œÁ ß ‚ÿ„— ËÁË… ÞËßΕÁ à—
ÚŸ UML Diagram 1 .ÝËß›œ ØÌ‰ ÁÍ Å›‹– ÞŸÁ ¬ËŸ‚›œÿ› ̓Á̓ ßË ÁÍ Ä‚ˆ à͇œ„
.ËË ÿ› àìÁÍÁ PFPageSetup К— ÎÁ ÑŠƒ ÅŸ‚ŽÍ ß Ãߊ ÿ‹Í̓



áÍŸ˜ à‡Ÿ…œ
ß Ãé™‚é– ØÁËéÁ àéƒ à— Ü‚‰ .Ë‹Íÿ› Þ‚Ÿ‚„ àƒ Ä‚ˆ Ù‚– ÉÍÔ ËÍß› ÍË ‚› Ɖƒ
à雂œÍƒ ´ ÑŠƒ ÍË .ËÍ— ÝŸÁߊ ÖßÍŒ ÁÍ ÿ‹Ÿßœ à›‚œÍƒ ¬ËŸË̓ ÿ„ ÁÍ Ã߈͂žˆ
ß PFPage ¬PFDocument Üé›‚éŒ àé— Ëß雜 ÝŸÁߊ ÖßÍŒ ÁÍ ÿ™Á ÿ‚ÿŸŒ ÿ‹Ÿßœ
.ËŸŒ‚ƒ Ù•ß› Ä‚ˆ Í›Á ÍË .ËŒ‚ƒÿ› PFPrintObject


Resources
"Printing in Java," Jean-Pierre Dubé (JavaWorld)
Part 1: Acquaint yourself with the Java printing model

Part 2: Print your first page and render complex documents

Part 3: Jean-Pierre Dubé introduces the print framework that works on top of the Java Print API

Follow a lively thread on printing in Java from a Windows machine in JavaWorld's Windows Application Development discussion:
http://www.itworld.com/jump/jw-0105-print/forums.itworld.com/webx?14@@.
ee6baf4/77!skip=20


Graphic Java 2, Mastering The AWT, Volume 1, David M. Geary (Prentice Hall, 1998) -- you will find tons of books covering Java AWT, but none will cover the subject to the extent that this one does. If you're writing GUIs, you must have this book next to your computer:
http://www.amazon.com/exec/obidos/ASIN/0130796662/o/qid=970872039/
sr=2-2/102-2403269-9106541


Migrating from Java 1.0 to Java 1.1, Daniel I. Oshi and Pavel A. Vorobiev (Ventana Communications Group, 1997) -- this book was helpful when Java 1.1 came out, and was the first to talk about printing in Java:
http://www.amazon.com/exec/obidos/ASIN/1566046866/o/qid=969489411/
sr=8-1/ref=aps_sr_b_1_3/002-2488903-6332023


Java AWT Reference (Java Series), John Zukowski and Mike Loukides (O'Reilly & Associates, 1997) -- an excellent reference to the AWT API:
http://www.amazon.com/exec/obidos/ASIN/1565922409/qid=969489555/sr=
1-1/002-2488903-6332023


Java 2D API Graphics, Vincent J. Hardy (Prentice Hall, 1999) -- probably the best book on Java 2D, this book covers all aspects of the 2D API and also provides a Graphics framework for advanced 2D compositions:
http://www.amazon.com/exec/obidos/ASIN/0130142662/qid=969489696/sr=
-1-1/002-2488903-6332023


An excellent introduction to the Java 2D API: "Getting Started with Java 2D," Bill Day (JavaWorld, July 1998):
http://www.javaworld.com/javaworld/jw-07-1998/jw-07-media.html

A reference document on the 2D API: Programmer's guide to the Java 2D API, Sun Microsystems:
ftp://ftp.java.sun.com/docs/j2se1.3/j2d-book.pdf

For more articles on printing in Java, browse JavaWorld's Topical Index:
http://www.javaworld.com/javaworld/topicalindex/jw-ti-index.html




ÿ‡œ‹ÍÕœ
ÞŸÁ ËÍß› ÍË ÁÍ Ëߊ ÍÕœ
:ËŸŸß˜ƒ ‚› àƒ Ã™Ô›

ÑÎÍÁ ‚ƒ ÿ™ŸŠ -
ÑÎÍÁ ‚ƒ -
ÑÎÍÁÿƒ -

ÿœ šßÔ ÿ™ŸŠ -
Ë‚œ› -
à‚…ß— -

ÿŠ… ÿ™ŸŠ -
Ãߙԛ -
Å‹Ÿœ ÿŠ… ÿ•‚— àÎÁËœÁ àƒ -


:Ý‚œ

:ÚŸœßÍ…—™Á Å‹„

: Å—ÍŒ Ý‚œ

܃– ÿ‚Å›‹–
ÜßÁ Å›‹– - Áß‚‡ ÍË Ä‚ˆ
ÝßË Å›‹– - Áß‚‡ ÍË Ä‚ˆ
Ýß‹ Å›‹– - Áß‚‡ ÍË Ä‚ˆ








Copyright 2001, JavaWorld/PC WORLD Iran/IDG Inc. All rights reserved.