This page was saved using jaction on 2006-09-04 8:33:58.
Address: http://flexdocs.kr/docs/flex2/langref/flash/printing/PrintJob.html
Title: flash.printing.PrintJob (Flex™ 2 레퍼런스 가이드)  •  Size: 61791
Packageflash.printing
Classpublic class PrintJob
InheritancePrintJob Inheritance EventDispatcher Inheritance Object

PrintJob 클래스를 사용하면, 컨텐츠를 작성해 1 페이지 또는 복수의 페이지에 인쇄할 수 있습니다. 이 클래스를 사용하면, 가시 상태의 컨텐츠를 다이나믹 또는 화면외에서 렌더링 해, 단일의 [인쇄] 다이알로그 박스를 사용해, 컨텐츠의 종횡비를 보관 유지하면서 신축하지 않고 문서를 인쇄할 수 있습니다. 이 기능은, 데이타베이스 컨텐츠나 다이나믹 텍스트 등 다이나믹 컨텐츠를 렌더링 및 인쇄할 경우에 특히 편리합니다.

인쇄 작업을 작성하기 시작하려면 , constructor    PrintJob() 를 사용합니다.

게다가PrintJob.start() 에 의해 얻을 수 있는 property를 사용하면, 문서로부터 유저의 프린터 설정 (용지의 높이, 폭, 이미지의 방향등)에 액세스 할 수가 있어 프린터의 설정에 맞추어 Flash 의 컨텐츠를 동적으로 포맷 하도록(듯이) 문서를 구성할 수가 있습니다. PrintJob.start() 에 의해 포함되는 이러한 레이아웃 property는 읽기 전용(read-only)으로, Flash Player 로 변경할 수 없습니다.

메모 : ActionScript 3.0 에서는, ActionScript 의 이전의 버젼과 같게, PrintJob object가 단일 프레임에 제한되지 않습니다. 다만,[인쇄] 다이알로그 박스로 [OK] 버튼을 클릭하면 인쇄 스테이터스 정보가 표시되기 (위해)때문에, 페이지를 스풀러에 송신하면 즉시 PrintJob.addPage()PrintJob.send() 를 호출할 필요가 있습니다. PrintJob.send() 호출의 포함된 프레임에 지연이 도달하면, 인쇄 처리가 지연 합니다.

또, 다음의 간격에는, 15 초의 스크립트의 타임 아웃 제한이 적용됩니다.

상기의 간격이 15 초 이상인 경우, PrintJob 인스턴스의 다음번의 PrintJob.start() 를 호출하면 false 가 돌려주어집니다. PrintJob 인스턴스의 다음번의 PrintJob.addPage() 에 의해, Flash Player 는 런타임 예외를 슬로우 합니다.

View the examples

See also

ActionScript 3.0 에 있어서의 PrintJob 클래스의 신기능


Public property
 property정의
 Inheritedconstructor : Object
특정의 object 인스턴스의 클래스 object 또는 constructor    함수에의 참조입니다.
Object
  orientation : String
[read-only] 인쇄하는 이미지의 방향.
PrintJob
  pageHeight : int
[read-only] 페이지상에서 실제로 인쇄 가능한 area의 높이 (포인트 단위)
PrintJob
  pageWidth : int
[read-only] 페이지상에서 실제로 인쇄 가능한 area의 폭 (포인트 단위).
PrintJob
  paperHeight : int
[read-only] 용지 전체의 높이 (포인트 단위)
PrintJob
  paperWidth : int
[read-only] 용지 전체의 폭 (포인트 단위)
PrintJob
 Inheritedprototype : Object
[static] 클래스 또는 함수 object의 prototype object에의 참조입니다.
Object
Public Methods
 Methods정의
  PrintJob ()
페이지를 인쇄할 수 있는 PrintJob object를 작성합니다.
PrintJob
 InheritedaddEventListener (type:String , listener:Function , useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
event listener objects를 EventDispatcher object에 등록해, listener가 이벤트의 통지를 받도록(듯이) 합니다.
EventDispatcher
  addPage (sprite:Sprite , printArea:Rectangle = null, options:PrintJobOptions = null, frameNum:int = 0):void
지정의 Sprite object를 1 페이지로서 인쇄 스풀러에 보냅니다.
PrintJob
 InheriteddispatchEvent (event:Event ):Boolean
이벤트를 event 플로우(flow)에 dispatch합니다.
EventDispatcher
 InheritedhasEventListener (type:String ):Boolean
EventDispatcher object에, 특정의 event 타입에 대해서 등록된 listener가 있을지 어떨지를 확인합니다.
EventDispatcher
 InheritedhasOwnProperty (name:String ):Boolean
object로 지정된 property가 정의되고 있는지 어떤지를 나타냅니다.
Object
 InheritedisPrototypeOf (theClass:Object ):Boolean
Object 클래스의 인스턴스가, Parameters로서 지정된 object의 prototype 체인내에 있을지 어떨지를 나타냅니다.
Object
 InheritedpropertyIsEnumerable (name:String ):Boolean
지정된 property가 존재해, 열거 가능한가 어떤가를 나타냅니다.
Object
 InheritedremoveEventListener (type:String , listener:Function , useCapture:Boolean = false):void
EventDispatcher object로부터 listener를 삭제합니다.
EventDispatcher
  send ():void
PrintJob.start()PrintJob.addPage() 가 성공한 후, spool 한 페이지를 프린터에 송신합니다.
PrintJob
 InheritedsetPropertyIsEnumerable (name:String , isEnum:Boolean = true):void
루프 처리에 대한 다이나믹 property의 가용성을 설정합니다.
Object
  start ():Boolean
operating system의 [인쇄] 다이알로그 박스를 표시해, spool를 개시해, PrintJob 의 읽기 전용(read-only) property치를 설정합니다.
PrintJob
 InheritedtoString ():String
지정된 object의 string 표현을 돌려줍니다.
Object
 InheritedvalueOf ():Object
지정된 object의 원시적치를 돌려줍니다.
Object
 InheritedwillTrigger (type:String ):Boolean
지정된 event 타입에 대해, 이 EventDispatcher object 또는 그 조상에게 event listener가 등록되어 있는지 어떤지를 확인합니다.
EventDispatcher
property의 상세
orientationproperty
orientation:String   [read-only]

인쇄하는 이미지의 방향. 이 property는 PrintJobOrientation 클래스로부터의 값입니다. 이 property는,PrintJob.start() Methods의 호출 후에게만 사용 가능하게 됩니다.

Implements
    public function get orientation():String

See also

pageHeightproperty 
pageHeight:int   [read-only]

페이지상에서 실제로 인쇄 가능한 area의 높이 (포인트 단위) 유저가 설정한 margin는 포함하지 않습니다. 이 property는,PrintJob.start() Methods의 호출 후에게만 사용 가능하게 됩니다.

Implements
    public function get pageHeight():int

See also

pageWidthproperty 
pageWidth:int   [read-only]

페이지상에서 실제로 인쇄 가능한 area의 폭 (포인트 단위). 유저가 설정한 margin는 포함하지 않습니다. 이 property는,PrintJob.start() Methods의 호출 후에게만 사용 가능하게 됩니다.

Implements
    public function get pageWidth():int

See also

paperHeightproperty 
paperHeight:int   [read-only]

용지 전체의 높이 (포인트 단위) 이 property는,PrintJob.start() Methods의 호출 후에게만 사용 가능하게 됩니다.

Implements
    public function get paperHeight():int
paperWidthproperty 
paperWidth:int   [read-only]

용지 전체의 폭 (포인트 단위) 이 property는,PrintJob.start() Methods의 호출 후에게만 사용 가능하게 됩니다.

Implements
    public function get paperWidth():int
constructor    의 상세
PrintJob()constructor   
public 함수 PrintJob()

페이지를 인쇄할 수 있는 PrintJob object를 작성합니다. PrintJob object를 작성하면,PrintJob.start(),PrintJob.addPage(),PrintJob.send() 의 순서에 Methods를 사용해, 프린터에 인쇄 작업을 송신합니다.

예를 들어 다음의 코드에 나타나는 my_pj.addPage() Methods 호출의 [params] 플레이스홀더-텍스트를 custom Parameters와 옮겨놓고 할 수 있습니다.

 // create PrintJob object
 var my_pj:PrintJob = new PrintJob();
  
 // display Print dialog box, but only initiate the print job
 // if start returns successfully.
 if (my_pj.start()) {
  
    // add specified page to print job
    // repeat once for each page to be printed
    try {
      my_pj.addPage([params]);
    }
    catch(e:Error) {
      // handle error 
    }
    try {
      my_pj.addPage([params]);
    }
    catch(e:Error) {
     // handle error 
    }
 
    // send pages from the spooler to the printer, but only if one or more
    // calls to addPage() was successful.  You should always check for successful 
    // calls to start() and addPage() before calling send().
    my_pj.send();
 }
 

최초의 PrintJob object가 액티브한 사이는, 2 번째의 PrintJob object를 작성할 수 없습니다. 1 번째의 PrintJob object가 액티브하다라고 나무에 new PrintJob() 를 호출해 2 번째의 PrintJob object를 작성하려고 해도, 2 번째의 PrintJob object는 생성되지 않습니다. 그 때문에 2 번째의 PrintJob 를 작성하기 전에 my_pj 값를 확인할 수가 있습니다.


Throws
IllegalOperationError — 별의 PrintJob object가 액티브한 그대로인 경우는, 예외를 슬로우 합니다.

See also

Methods의 상세
addPage()Methods
public function addPage(sprite:Sprite , printArea:Rectangle = null, options:PrintJobOptions = null, frameNum:int = 0):void

지정의 Sprite object를 1 페이지로서 인쇄 스풀러에 보냅니다. 이 Methods를 사용하기 전에, PrintJob object를 작성해,PrintJob.start() 를 사용할 필요가 있습니다. 다음에, 인쇄 작업에 대해서 PrintJob.addPage() 를 1 회 또는 여러 차례 호출한 후, PrintJob.send() 를 사용해, spool 한 페이지를 프린터에 송신합니다. 즉, PrintJob object를 작성하면,PrintJob.start(), PrintJob.addPage(),PrintJob.send() 의 순서에 Methods를 사용해, 프린터에 인쇄 작업을 송신합니다. PrintJob.start() 를 1 회 호출한 다음에 PrintJob.addPage() 를 여러 차례 사용하는 것으로써, 복수의 페이지를 1 회에 인쇄할 수 있습니다.

PrintJob.addPage() 에 의해 Flash Player 가 예외를 슬로우 했을 경우 (PrintJob.start() 를 호출하지 않은 경우나, 유저가 인쇄 작업을 캔슬했을 경우등)는, 그 후로 PrintJob.addPage() 를 호출하면 실패합니다. 다만, 그때까지 PrintJob.addPage() 의 호출이 성공하고 있으면, 마지막에 PrintJob.send() 커멘드를 실행하는 것으로, spool에 성공한 모든 페이지가 프린터에 보내집니다.

인쇄 작업으로 PrintJob.addPage() 조작의 완료에 15 초 이상 걸리는 경우, Flash Player 는, 다음번의 Print.addPage() 의 호출해에 예외를 슬로우 합니다.

printArea Parameters의 값을 건네주면,printArea object의 x 좌표와 y 좌표가 페이지의 인쇄 가능 area의 좌상구석 (0,0 좌표)에 대응합니다. 인쇄 가능 area는,PrintJob.start() 로 설정한 읽기 전용(read-only)의 pageHeight property와 pageWidth property로 나타내집니다. 인쇄 결과는 페이지상의 인쇄 가능 area의 좌상구석을 기준에 정렬되므로,printArea 로 정의한 area가 용지상의 인쇄 가능 area보다 큰 경우는,printArea 로 정의한 area의 우측 또는 아래 쪽의 부분 (또는 그 양쪽 모두)은 잘라내지는 일이 있습니다. printArea 의 값을 지정하지 않는 경우에 스테이지가 인쇄 가능 area보다 클 때도, 같은 절취가 발생합니다. printArea 의 값을 지정하지 않는 경우에 스크린이 인쇄 가능 area보다 클 때도, 같은 절취가 발생합니다.

인쇄전에 Sprite object를 확대/축소하려면 , 이 Methods를 호출하기 전에 확대·축소의 property (flash.display.DisplayObject.scaleXflash.display.DisplayObject.scaleY 를 참조)를 설정합니다. 인쇄 후, 이러한 property를 원의 값에 되돌립니다. Sprite object의 확대·축소는,printArea 와는 무관계합니다. 즉, 크기가 50 x 50 픽셀의 area를 인쇄하도록(듯이) 지정했을 경우, 2500 픽셀이 인쇄됩니다. Sprite object를 확대 또는 축소하고 있는 경우, 그 설정을 반영해 프린트 결과는 신축합니다만, 프린트의 대상이 되는 2500 개의 픽셀은 바뀌지 않습니다.

Flash Player 의 인쇄 기능은, PostScript 프린터와 비 PostScript 프린터를 지원(support)하고 있습니다. 비 PostScript 프린터에서는, 벡터는 비트 맵에 변환됩니다.

Parameters
sprite:Sprite — 인쇄하는 Sprite 의 인스턴스명.
 
printArea:Rectangle (default = null) — 인쇄하는 area를 지정하는 Rectangle object.

구형의 폭과 높이는 픽셀치입니다. 프린터에서는, 인쇄용의 측정 단위로서 포인트를 사용합니다. 포인트는 물리적인 고정 크기 (1/72 인치)입니다만, 화면용의 픽셀 심도의 크기는 화면의 해상도에 따라서 다릅니다. 그 때문에 픽셀과 포인트의 사이의 변환 레이트는, 프린터의 설정, 및 Sprite 가 신축되고 있는지 어떤지에 의해 정해집니다. 72 픽셀폭의 신축되어 있지 않은 스프라이트는, 용지상에는 1 인치폭으로 프린트 됩니다. 화면의 해상도와는 관계없이, 1 포인트가 1 픽셀에 대응합니다.

인치 및 센티미터와 포인트 및 twip (1/20 포인트)와의 사이에는, 다음의 등식이 성립됩니다.

  • 1 point = 1/72 inch = 20 twips
  • 1 inch = 72 points = 1440 twips
  • 1 cm = 567 twips

printArea Parameters를 생략 했을 경우, 또는 잘못한 값을 지정했을 경우는,sprite 의 전스테이지 area가 인쇄됩니다.

printArea 의 값을 지정하지 않고 ,options 또는 frameNum 의 값을 지정하려면 ,printAreanull 를 지정합니다.

 
options:PrintJobOptions (default = null) — 벡터와 비트 맵의 어디에서 인쇄하는지를 지정하는, 옵션의 Parameters. 디폴트치는 null 로, 이것은 벡터 형식을 나타냅니다. sprite 를 비트 맵으로서 인쇄하려면 , PrintJobOptions object의 printAsBitmap property를 true 로 설정합니다. printAsBitmaptrue 로 설정할지 어떨지를 결정할 때는, 다음의 항목에 유의해 주세요.
  • 인쇄하는 컨텐츠에 비트 맵 이미지가 포함되는 경우는, 알파 투명 효과와 칼라 효과를 포함하기 위해서(때문에) printAsBitmaptrue 로 설정합니다.
  • 컨텐츠에 비트 맵 이미지가 포함되지 않는 경우는, 이 Parameters를 생략 할까 해, 보다 품질의 높은 벡터 형식에서 인쇄합니다.

options 를 생략 했을 경우, 또는 잘못한 값을 건네주었을 경우는, 벡터 형식이 사용됩니다. options 의 값을 지정하지 않고 ,frameNumber 의 값을 지정하려면 ,optionsnull 를 지정합니다.

 
frameNum:int (default = 0)인쇄하는 프레임을 지정할 수 있는 옵션의 수치. frameNum 를 건네주어도, 그 프레임의 ActionScript 는 불려 가지 않습니다. 이 Parameters를 생략 하면,sprite 내의 현재의 프레임이 인쇄됩니다. Flash 오쏘링 환경에서 사용할 수 있는 옵션의 수치. Flex 어플리케이션을 기술하는 경우에는, 이 Parameters를 생략 하는지, 값 0 을 지정합니다.

메모 : print(),printAsBitmap(),printAsBitmapNum(), 또는 printNum() 를 사용해 인쇄하는 경우, 복수의 프레임을 인쇄하는 경우에는, 인쇄하는 페이지를 지정하기 위해서 #p 프레임 label를 사용한다고 하는 방법이 있었습니다. PrintJob.addPage() 를 사용해 복수의 프레임을 인쇄하려면 , 프레임 마다 PrintJob.addPage() Methods를 사용할 필요가 있습니다. #p 프레임 label는 무시됩니다. 프로그램으로 실시하는 방법에 대해서는, 「예」의 섹션을 참조해 주세요.


Throws
Error PrintJob.start() 를 호출하지 않았던 경우, 또는 유저가 인쇄 작업을 캔슬했을 경우, 예외가 슬로우 됩니다.

See also

send()Methods 
public function send():void

PrintJob.start()PrintJob.addPage() 가 성공한 후, spool 한 페이지를 프린터에 송신합니다. PrintJob.start() 의 호출이 실패했을 경우, 또는 PrintJob.addpage() 가 예외를 슬로우 했을 경우,PrintJob.send() 의 호출은 성공하지 않습니다. 그 때문에 PrintJob.start()true 를 돌려주는 것을 확인해,PrintJob.send() 의 호출전에 PrintJob.addpage() 예외를 캐치 해 주세요. 다음에 예를 나타냅니다.

var my_pj:PrintJob = new PrintJob();
if (my_pj.start()) {
try {
my_pj.addPage([params]);
   }
catch(e:Error) {
// 에러를 처리합니다
   }
my_pj.send();
  }
  

See also

start()Methods 
public function start():Boolean

operating system의 [인쇄] 다이알로그 박스를 표시해, spool를 개시해, PrintJob 의 읽기 전용(read-only) property치를 설정합니다. 유저는 [인쇄] 다이알로그 박스로 인쇄 설정을 변경할 수 있습니다. PrintJob.start() Methods가 정상적으로 돌려주어졌을 경우, 즉 유저가 [인쇄] 다이알로그 박스로 [OK] 를 클릭했을 경우, 다음의 읽기 전용(read-only) property에 값이 건네받아 유저의 현재의 인쇄 설정을 나타냅니다.

property 타입 단위 메모
PrintJob.paperHeight Number 포인트 용지의 높이
PrintJob.paperWidth Number 포인트 용지 전체의 폭
PrintJob.pageHeight Number 포인트 용지상의 실제의 인쇄 가능 area의 높이. 유저가 설정한 margin는 포함하지 않습니다.
PrintJob.pageWidth Number 포인트 용지상의 실제의 인쇄 가능 area의 폭. 유저가 설정한 margin는 포함하지 않습니다.
PrintJob.orientation String "portrait" (flash.printing.PrintJobOrientation.PORTRAIT) 또는 "landscape" (flash.printing.PrintJobOrientation.LANDSCAPE).

메모 : [인쇄] 다이알로그 박스로 캔슬되면, property가 설정되지 않습니다.

유저가 [인쇄] 다이알로그 박스로 [OK] 를 클릭하면, operating system에의 인쇄 작업의 spool가 개시됩니다. operating system로 인쇄의 진행 상황에 대해 정보가 표시되기 (위해)때문에, 페이지를 스풀러에 송신하면 즉시 PrintJob.addPage()PrintJob.send() 를 호출할 필요가 있습니다. 이 Methods에 값을 건네주는 읽기 전용(read-only)의 높이, 폭, 방향의 property를 사용해, 인쇄 결과를 포맷 할 수 있습니다.

PrintJob.addPage()PrintJob.send() 를 호출하기 전에, 이 Methods가 true 를 돌려주는 것 (유저가 operating system의 [인쇄] 다이알로그 박스로 [OK] 를 클릭했을 경우)를 확인하기 위해서, 테스트를 실시합니다.

var my_pj:PrintJob = new PrintJob();
if (my_pj.start()) {
// 여기에 addPage() 및 send() 명령문(statement)를 기술
     }
  

지정된 인쇄 작업 인스턴스의 경우, 다음의 몇개의 간격이 15 초 이상인 경우, 다음번의 PrintJob.start() 를 호출하면 false 가 돌려주어집니다.

반환값
Boolean — [인쇄] 다이알로그 박스로 유저가 [OK] 를 클릭했을 경우는 true, 유저가 [캔슬] 을 클릭했을 경우, 또는 에러가 발생했을 경우는 false 를 돌려줍니다.

See also

Examples

다음의 예에서는,PrintJobExample 클래스를 사용해, 작은 문서를 작성해, 그 문서를 프린터에 송신합니다 여기에서는 이하의 순서를 실행합니다.
  1. Sprite 형의 2 변수 sheet1sheet2 를 선언합니다.
  2. init() 를 호출합니다. 이것에 의해, 새로운 Sprite 인스턴스가 sheet1sheet2 에 할당할 수 있어 다음에 다른 인수로 createSheet() 가 불려 갑니다.
  3. createSheet() 에 의해 다음 일을 실시합니다.
    1. 건네받는 Sprite object는, 사각형을 묘화 하기 위해서 사용됩니다. 이 사각형은, 배경이 밝은 회색으로, 경계가 1 픽셀폭의 흑색, 위치는 x = 0, y = 0 으로, 폭이 100 픽셀, 높이가 200 픽셀입니다.
    2. txt 라는 이름의 새로운 TextField object가 작성됩니다. 이 object의 크기는 Sprite 와 같아, wordWrap property는 true, 텍스트 property는 createSheet()
    3. 에 인수로서 건네받은 캐릭터 라인으로 설정됩니다.
    4. 건네받은 Object 인수가 null 가 아닌 경우, 새로운 Sprite 인스턴스를 작성합니다. 이 인스턴스의 이름은 img 로, 흰 사각형을 묘화 하기 위해서 사용됩니다. 이 사각형의 좌표와 크기의 property는 건네받은 Object 의 값이 사용됩니다. 다음을 호출해, 흰 사각형을 Sprite object 보기 리스트에 추가합니다. addChild().
    5. 다음을 호출해,
    6. txt TextField 를 Sprite object 보기 리스트에 추가합니다. addChild().
  4. constructor    에 돌아오면, 유효한 (comment out되어 있지 않다) 인쇄 Methods가 불려 갑니다. 이러한 Methods는 자주(잘) 비슷하기 (위해)때문에,printOnePerPage() 에 대해 다음에 설명합니다.
  5. printOnePerPage() 에 의해 다음 일을 실시합니다.
    1. pj 라고 하는 새로운 PrintJob object와 단위로서 pagesToPrint 를 선언합니다.
    2. operating system에 갖춰지고 있는 인쇄 다이알로그 박스를 열어, 유저가 [OK
    3. ] 를 클릭할 때까지 대기합니다.
    4. 원점을 확인해,[옆] 이 선택되고 있는 경우는, 에러를 슬로우 해 종료합니다.
    5. sheet1sheet2
    6. 의 페이지의 높이와 폭을 설정합니다.
    7. addPage()
    8. 를 사용해 sheet1sheet2 를 인쇄 스풀러에 송신합니다.
    9. 인쇄하는 페이지수가 1 페이지 이상 있는 경우는, spool 된 페이지를 모두 인쇄합니다.
  6. draw() Methods가 불려 갑니다. 이 Methods는, 스테이지에 맞도록(듯이) 2 개의 Sprite property의 크기를 변경해, sheet1
  7. 의 바로 우측으로 오도록(듯이) sheet2 의 위치를 변경합니다.

메모 : constructor    이 설정되어 3 개의 인쇄 Methods의 언젠가 ( 1 페이지 근처 1 시트, 1 페이지 근처 2 시트, 페이지의 상반분만 인쇄)를 환경 설정에 응해 선택할 수 있게 됩니다. 인쇄 Methods의 쳐 정확히 2 개이 무효인 경우에 한정해, 이 예는 적절히 동작합니다. 무효로 하려면 , 코드 코멘트를 사용합니다. 이 예에서는,printOnePerPage() 가 불려 가도록(듯이) 설정됩니다.

package {
    import flash.printing.PrintJob;
    import flash.printing.PrintJobOrientation;
    import flash.display.Stage;
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.geom.Rectangle;
       
    public class PrintJobExample extends Sprite {
        private var sheet1:Sprite;
        private var sheet2:Sprite;
           
        public function PrintJobExample() {
            init();
            printOnePerPage();
//            printTwoPerPage();
//            printTopHalf();
            draw();
        }
        
        private function init() :void {
            sheet1 = new Sprite();
            createSheet(sheet1, "Once upon a time...", {x:10, y:50, width:80, height:130});

            sheet2 = new Sprite();
            createSheet(sheet2, "There was a great story to tell, and it ended quickly. \n\nThe end. ", null);
        }
        
        private function createSheet(sheet:Sprite, str:String, imgValue:Object) :void {
            sheet.graphics.beginFill(0xEEEEEE);
            sheet.graphics.lineStyle(1, 0x000000);
            sheet.graphics.drawRect(0, 0, 100, 200);
            sheet.graphics.endFill();
            
            var txt:TextField = new TextField();
            txt.height = 200;
            txt.width = 100;
            txt.wordWrap = true;
            txt.text = str;
            
            if(imgValue ! = null) {
                var img:Sprite = new Sprite();
                img.graphics.beginFill(0xFFFFFF);
                img.graphics.drawRect(imgValue.x, imgValue.y, imgValue.width, imgValue.height);
                img.graphics.endFill();
                sheet.addChild(img);
            }
            sheet.addChild(txt);
        }
        
        private function printOnePerPage() :void {
            var pj:PrintJob = new PrintJob();
            var pagesToPrint:uint = 0;
            if(pj.start()) {                
                if(pj.orientation == PrintJobOrientation.LANDSCAPE) {    
                    throw new Error("Without embedding fonts you must print one sheet per page with an orientation of portrait. ");
                }
                
                sheet1.height = pj.pageHeight;
                sheet1.width = pj.pageWidth;
                sheet2.height = pj.pageHeight;
                sheet2.width = pj.pageWidth;

                try {
                    pj.addPage(sheet1);
                    pagesToPrint++;
                }
                catch(e:Error) {
                    // do nothing
                }

                try {
                    pj.addPage(sheet2);
                    pagesToPrint++;
                }
                catch(e:Error) {
                    // do nothing
                }

                if(pagesToPrint > 0) {
                    pj.send();
                }
            }
        }
        
        private function printTwoPerPage() :void {
            var pj:PrintJob = new PrintJob();
            var pagesToPrint:uint = 0;
            if(pj.start()) {                
                if(pj.orientation == PrintJobOrientation.PORTRAIT) {
                    throw new Error("Without embedding fonts you must print two sheets per page with an orientation of landscape. ");
                }
                
                sheet1.height = pj.pageHeight;
                sheet1.width = pj.pageWidth/2;
                sheet2.height = pj.pageHeight;
                sheet2.width = pj.pageWidth/2;

                var sheets:Sprite = new Sprite();
                sheets.addChild(sheet1);
                sheets.addChild(sheet2);
                sheets.getChildAt(1). x = sheets.getChildAt(0). width;
                try {
                    pj.addPage(sheets);
                    pagesToPrint++;
                }
                catch(e:Error) {
                    // do nothing
                }

                if(pagesToPrint > 0) {
                    pj.send();
                }
            }
        }

        private function printTopHalf() :void {
            var pj:PrintJob = new PrintJob();
            var pagesToPrint:uint = 0;
            if(pj.start()) {                
                if(pj.orientation == PrintJobOrientation.PORTRAIT) {
                    throw new Error("Without embedding fonts you must print the top half with an orientation of landscape. ");
                }
                
                sheet1.height = pj.pageHeight;
                sheet1.width = pj.pageWidth/2;
                sheet2.height = pj.pageHeight;
                sheet2.width = pj.pageWidth/2;

                var sheets:Sprite = new Sprite();
                sheets.addChild(sheet1);
                sheets.addChild(sheet2);
                sheets.getChildAt(1). x = sheets.getChildAt(0). width;
                try {
                    pj.addPage(sheets, new Rectangle(0, 0, sheets.width, sheets.height/2));
                    pagesToPrint++;
                }
                catch(e:Error) {
                    // do nothing
                }

                if(pagesToPrint > 0) {
                    pj.send();
                }
            }
        }


        private function draw() :void {
            var sheetWidth:Number = this.stage.stageWidth/2;
            var sheetHeight:Number = this.stage.stageHeight;
            
            addChild(sheet1);
            sheet1.width = sheetWidth;
            sheet1.height = sheetHeight;
            
            addChild(sheet2);
            sheet2.width = sheetWidth;
            sheet2.height = sheetHeight;
            sheet2.x = sheet1.width;
        }        
    }
}






 

코멘트가 추가되었을 경우, 메일로 받기. | 코멘트 리포트

현재의 페이지: http://flexdocs.kr/docs/flex2/langref/flash/printing/PrintJob.html