| 패키지 | flash.printing |
| 클래스 | public class PrintJob |
| 상속 | PrintJob EventDispatcher Object |
| 언어 버전 : | ActionScript 3.0 |
| Player 버전 : | Flash Player 9 |
인쇄 작업을 만들려면 PrintJob() 생성자를 사용합니다.
또한 PrintJob.start()로 채워진 속성을 사용하면 문서에서 페이지 높이, 폭 및 이미지 방향과 같은 사용자의 프린터 설정을 읽을 수 있으며 Flash 내용의 서식이 프린터 설정에 맞게 동적으로 지정되도록 문서를 구성할 수 있습니다. PrintJob.start()에서 채우는 사용자 레이아웃 속성은 읽기 전용이며 Flash Player에서 변경할 수 없습니다.
참고: ActionScript 3.0에서는 이전 버전의 ActionScript와 달리 PrintJob 객체를 단일 프레임으로 제한하지 않습니다. 그러나 사용자가 [인쇄] 대화 상자에서 [확인] 버튼을 클릭하면 운영 체제에서 사용자에게 인쇄 상태 정보를 표시하므로 PrintJob.addPage() 및 PrintJob.send()를 최대한 빠르게 호출하여 페이지를 스풀러로 보내야 합니다. PrintJob.send() 호출을 포함하는 프레임에 늦게 도달하면 인쇄 과정이 지연됩니다.
또한 다음 간격에는 15초 스크립트 시간 초과 제한이 적용됩니다.
PrintJob.start() 및 첫 번째 PrintJob.addPage()PrintJob.addPage() 및 다음 PrintJob.addPage()PrintJob.addPage() 및 PrintJob.send()위 간격 중 하나가 15초를 초과한 경우 PrintJob 인스턴스에서 다음 번에 PrintJob.start()를 호출하면 false가 반환되고 PrintJob 인스턴스에서 다음 번에 PrintJob.addPage()를 호출하면 Flash Player에서 런타임 예외가 발생합니다.
참고 사항
| 속성 | 다음에 의해 정의됨 | ||
|---|---|---|---|
![]() | constructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다.
| Object | |
| orientation : String
[read-only]
인쇄할 이미지 방향입니다.
| PrintJob | ||
| pageHeight : int
[read-only]
실제로 인쇄 가능한 페이지 영역의 높이(단위: 포인트)입니다.
| PrintJob | ||
| pageWidth : int
[read-only]
실제로 인쇄 가능한 페이지 영역의 너비(단위: 포인트)입니다.
| PrintJob | ||
| paperHeight : int
[read-only]
전체 용지 높이(단위: 포인트)입니다.
| PrintJob | ||
| paperWidth : int
[read-only]
전체 용지 너비(단위: 포인트)입니다.
| PrintJob | ||
![]() | prototype : Object
[static]
클래스 또는 함수 객체의 프로토타입 객체에 대한 참조입니다.
| Object | |
| 메서드 | 다음에 의해 정의됨 | ||
|---|---|---|---|
|
PrintJob()
하나 이상의 페이지를 인쇄할 때 사용할 수 있는 PrintJob 객체를 만듭니다.
| PrintJob | ||
![]() |
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
리스너에서 이벤트 알림을 받을 수 있도록 EventDispatcher 객체에 이벤트 리스너 객체를 등록합니다.
| EventDispatcher | |
|
addPage(sprite:Sprite, printArea:Rectangle = null, options:PrintJobOptions = null, frameNum:int = 0):void
지정된 Sprite 객체를 인쇄 스풀러에 단일 페이지로 보냅니다.
| PrintJob | ||
![]() |
이벤트를 이벤트 흐름으로 전달합니다.
| EventDispatcher | |
![]() |
EventDispatcher 객체에 특정 유형의 이벤트에 대한 리스너가 등록되어 있는지 여부를 확인합니다.
| EventDispatcher | |
![]() |
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다.
| Object | |
![]() |
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다.
| Object | |
![]() |
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다.
| Object | |
![]() |
EventDispatcher 객체에서 리스너를 제거합니다.
| EventDispatcher | |
|
PrintJob.start() 및 PrintJob.addPage()를 성공적으로 실행한 다음 스풀된 페이지를 프린터로 보냅니다.
| PrintJob | ||
![]() |
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다.
| Object | |
|
운영 체제의 [인쇄] 대화 상자를 열고 스풀링을 시작한 다음 PrintJob 읽기 전용 속성 값을 설정합니다.
| PrintJob | ||
![]() |
지정된 객체의 문자열 표현을 반환합니다.
| Object | |
![]() |
지정된 객체의 프리미티브 값을 반환합니다.
| Object | |
![]() |
이 EventDispatcher 객체 또는 조상 객체에 지정한 이벤트 유형에 대한 이벤트 리스너가 등록되어 있는지 여부를 확인합니다.
| EventDispatcher | |
| orientation | 속성 |
orientation:String [read-only]
| 언어 버전 : | ActionScript 3.0 |
| Player 버전 : | Flash Player 9. |
인쇄할 이미지 방향입니다. 이 속성은 PrintJobOrientation 클래스의 값입니다. 이 속성은 PrintJob.start() 메서드를 호출한 후에만 사용할 수 있습니다.
public function get orientation():String
참고 사항
| pageHeight | 속성 |
pageHeight:int [read-only]
| 언어 버전 : | ActionScript 3.0 |
| Player 버전 : | Flash Player 9. |
실제로 인쇄 가능한 페이지 영역의 높이(단위: 포인트)입니다. 사용자가 설정한 여백은 무시됩니다. 이 속성은 PrintJob.start() 메서드를 호출한 후에만 사용할 수 있습니다.
public function get pageHeight():int
참고 사항
| pageWidth | 속성 |
pageWidth:int [read-only]
| 언어 버전 : | ActionScript 3.0 |
| Player 버전 : | Flash Player 9. |
실제로 인쇄 가능한 페이지 영역의 너비(단위: 포인트)입니다. 사용자가 설정한 여백은 무시됩니다. 이 속성은 PrintJob.start() 메서드를 호출한 후에만 사용할 수 있습니다.
public function get pageWidth():int
참고 사항
| paperHeight | 속성 |
paperHeight:int [read-only]
| 언어 버전 : | ActionScript 3.0 |
| Player 버전 : | Flash Player 9. |
전체 용지 높이(단위: 포인트)입니다. 이 속성은 PrintJob.start() 메서드를 호출한 후에만 사용할 수 있습니다.
public function get paperHeight():int
| paperWidth | 속성 |
paperWidth:int [read-only]
| 언어 버전 : | ActionScript 3.0 |
| Player 버전 : | Flash Player 9. |
전체 용지 너비(단위: 포인트)입니다. 이 속성은 PrintJob.start() 메서드를 호출한 후에만 사용할 수 있습니다.
public function get paperWidth():int
| PrintJob | () | 생성자 |
public function PrintJob()
| 언어 버전 : | ActionScript 3.0 |
| Player 버전 : | Flash Player 9 |
하나 이상의 페이지를 인쇄할 때 사용할 수 있는 PrintJob 객체를 만듭니다. PrintJob 객체를 만든 후 PrintJob.start(), PrintJob.addPage() 및 PrintJob.send() 메서드를 순서대로 사용하여 인쇄 작업을 프린터로 보내야 합니다.
예를 들어 my_pj.addPage() 메서드 호출의 [params] 자리 표시자 텍스트를 다음 코드와 같이 사용자 정의 매개 변수로 바꿀 수 있습니다.
// 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 객체가 계속 활성 중인 상태에서 두 번째 PrintJob 객체를 만들 수 없습니다. 첫 번째 PrintJob 객체가 계속 활성 중인 상태에서는 new PrintJob()을 호출하여 두 번째 PrintJob 객체를 만들어도 두 번째 PrintJob 객체가 만들어지지 않습니다. 따라서 두 번째 PrintJob을 만들기 전에 my_pj 값을 확인해야 합니다.
IllegalOperationError — 다른 PrintJob 객체가 아직 활성 상태인 경우 예외가 발생합니다.
|
참고 사항
| addPage | () | 메서드 |
public function addPage(sprite:Sprite, printArea:Rectangle = null, options:PrintJobOptions = null, frameNum:int = 0):void
| 언어 버전 : | ActionScript 3.0 |
| Player 버전 : | Flash Player 9. |
지정된 Sprite 객체를 인쇄 스풀러에 단일 페이지로 보냅니다. 이 메서드를 사용하기 전에는 PrintJob 객체를 만든 다음 PrintJob.start()를 사용해야 합니다. 그런 다음 인쇄 작업에 대해 PrintJob.addPage()를 한 번 이상 호출한 후 PrintJob.send()를 사용하여 스풀된 페이지를 프린터로 보냅니다. 즉, PrintJob 객체를 만든 후 PrintJob.start(), PrintJob.addPage() 및 PrintJob.send()를 순서대로 사용하여 인쇄 작업을 프린터로 보냅니다. PrintJob.start()를 한 번 호출한 다음 PrintJob.addPage()를 여러 번 사용하여 한 번에 여러 페이지를 인쇄할 수 있습니다.
PrintJob.addPage()로 인해 Flash Player에서 예외가 발생하면(예: PrintJob.start()를 미리 호출하지 않았거나 사용자가 인쇄 작업을 취소한 경우) 이후에 PrintJob.addPage()를 호출할 때 실패하게 됩니다. 그러나 PrintJob.addPage()에 대한 이전 호출이 성공적으로 수행된 경우 마무리 PrintJob.send() 명령이 성공적으로 스풀된 페이지를 프린터로 전송합니다.
인쇄 작업에서 PrintJob.addPage() 작업을 완료하는 데 15초 이상 걸리면 다음 번에 Print.addPage()를 호출할 때 Flash Player에서 예외가 발생합니다.
printArea 매개 변수에 값을 전달하면 printArea 객체의 x 및 y 좌표가 페이지에서 인쇄 가능 영역의 왼쪽 위 모서리(0,0 좌표)로 매핑됩니다. 인쇄 가능 영역은 PrintJob.start()로 설정된 읽기 전용 pageHeight 및 pageWidth 속성으로 결정됩니다. 인쇄 결과는 페이지에서 인쇄 가능 영역의 왼쪽 위 모서리에 정렬되므로 printArea에 정의된 영역이 페이지의 인쇄 가능 영역보다 크면 printArea에 정의된 영역의 오른쪽 및 아래쪽에서 인쇄 결과가 잘립니다. 만일 printArea에 값을 전달하지 않았고 스테이지가 인쇄 가능 영역보다 큰 경우에도 인쇄 결과가 같은 방식으로 잘립니다.
인쇄하기 전에 Sprite 객체의 배율을 조정하려면 이 메서드를 호출하기 전에 배율 속성(flash.display.DisplayObject.scaleX 및 flash.display.DisplayObject.scaleY 참조)을 설정하고 인쇄 후 속성을 원래 값으로 다시 설정합니다. Sprite 객체의 배율은 printArea와 관계가 없습니다. 즉, 인쇄 영역을 50 x 50픽셀로 지정하면 2500픽셀이 인쇄됩니다. Sprite 객체의 배율을 조절하면 같은 2500픽셀이 인쇄되지만 Sprite 객체가 배율이 조절된 크기로 인쇄됩니다.
Flash Player 인쇄 기능은 PostScript 프린터와 PostScript가 아닌 프린터를 지원합니다. PostScript가 아닌 프린터는 벡터를 비트맵으로 변환합니다.
매개 변수
sprite:Sprite — 인쇄할 Sprite의 인스턴스 이름입니다.
|
|
printArea:Rectangle (default = null) — 인쇄 영역을 지정하는 Rectangle 객체입니다.
사각형의 너비와 높이는 픽셀 값입니다. 프린터에서는 인쇄 측정 단위로 포인트를 사용합니다. 포인트는 고정된 실제 크기(1/72인치)이지만 화면상 픽셀의 크기는 특정 화면의 해상도에 따라 다릅니다. 따라서 픽셀과 포인트 사이의 변환 비율은 프린터 설정 및 Sprite의 배율 조절 여부에 따라 다릅니다. 폭이 72픽셀이고 배율이 조절되지 않은 Sprite는 폭이 1인치로 인쇄되며 이때 1포인트는 화면 해상도에 관계없이 1픽셀과 같습니다. 인치나 센티미터를 트윕 또는 포인트(1트윕은 1/20포인트)로 변환할 때 다음 등식을 사용할 수 있습니다.
|
|
options:PrintJobOptions (default = null) — 선택 요소로서, 벡터로 인쇄할지 비트맵으로 인쇄할지를 지정하는 매개 변수입니다. 기본값은 null입니다. 이 값은 벡터 인쇄에 대한 요청을 나타냅니다. sprite를 비트맵으로 인쇄하려면 PrintJobOptions 객체의 printAsBitmap 속성을 true로 설정합니다. printAsBitmap을 true로 설정할지 여부를 판단할 때는 다음 사항에 유의하십시오.
|
|
frameNum:int (default = 0) — 선택 요소로서 인쇄할 프레임을 지정하는 숫자입니다. frameNum을 전달해도 해당 프레임의 ActionScript가 호출되지는 않습니다. 이 매개 변수를 생략하면 sprite의 현재 프레임이 인쇄됩니다.
참고: Flash에서 |
Error — PrintJob.start()를 호출하지 않았거나 사용자가 인쇄 작업을 취소한 경우 예외가 발생합니다.
|
참고 사항
| send | () | 메서드 |
public function send():void
| 언어 버전 : | ActionScript 3.0 |
| Player 버전 : | Flash Player 9. |
PrintJob.start() 및 PrintJob.addPage()를 성공적으로 실행한 다음 스풀된 페이지를 프린터로 보냅니다. PrintJob.start() 호출에 실패하거나 PrintJob.addpage()에서 예외가 발생하면 PrintJob.send()에 실패하게 됩니다. 따라서 PrintJob.send()를 호출하기 전에 PrintJob.start()에서 true를 반환하는지 확인하고 모든 PrintJob.addpage() 예외를 포착해야 합니다. 예를 들면 다음과 같습니다.
var my_pj:PrintJob = new PrintJob(); if (my_pj.start()) { try { my_pj.addPage([params]); } catch(e:Error) { // handle error } my_pj.send(); }
참고 사항
| start | () | 메서드 |
public function start():Boolean
| 언어 버전 : | ActionScript 3.0 |
| Player 버전 : | Flash Player 9. |
운영 체제의 [인쇄] 대화 상자를 열고 스풀링을 시작한 다음 PrintJob 읽기 전용 속성 값을 설정합니다. [인쇄] 대화 상자를 사용하면 인쇄 설정을 변경할 수 있습니다. 사용자가 [인쇄] 대화 상자에서 [확인]을 클릭하여 PrintJob.start() 메서드가 성공적으로 반환되면 사용자의 현재 인쇄 설정을 나타내는 다음과 같은 읽기 전용 속성이 채워집니다.
| 속성 | 유형 | 단위 | 설명 |
|---|---|---|---|
PrintJob.paperHeight | Number | 포인트 | 전체 용지의 세로 길이입니다. |
PrintJob.paperWidth | Number | 포인트 | 전체 용지 너비 |
PrintJob.pageHeight | Number | 포인트 | 페이지에서 실제로 인쇄 가능한 영역의 높이입니다. 사용자가 설정한 여백은 무시됩니다. |
PrintJob.pageWidth | Number | 포인트 | 페이지에서 실제로 인쇄 가능한 영역의 너비입니다. 사용자가 설정한 여백은 무시됩니다. |
PrintJob.orientation | String | "portrait" ( flash.printing.PrintJobOrientation.PORTRAIT) 또는 "landscape"(flash.printing.PrintJobOrientation.LANDSCAPE) |
참고: 사용자가 [인쇄] 대화 상자를 취소하면 속성이 채워지지 않습니다.
[인쇄] 대화 상자에서 사용자가 [확인]을 클릭하면 Flash Player는 운영 체제로 인쇄 작업을 스풀링하기 시작합니다. 그런 다음 운영 체제에서 사용자에게 인쇄 진행률 정보를 표시하기 시작하므로 PrintJob.addPage() 및 PrintJob.send()를 최대한 빠르게 호출하여 페이지를 스풀러로 보내야 합니다. 이 메서드가 채우는 높이, 너비 및 방향의 읽기 전용 속성을 사용해 인쇄 서식을 지정할 수 있습니다.
이후에 PrintJob.addPage() 및 PrintJob.send()를 호출하기 전에 사용자가 운영 체제의 [인쇄] 대화 상자에서 [확인]을 클릭할 때 이 메서드에서 true가 반환되는지 여부를 확인해야 합니다.
var my_pj:PrintJob = new PrintJob(); if(my_pj.start()) { // addPage() and send() statements here }
특정 인쇄 작업 인스턴스에서 다음 간격 중 하나가 15초를 넘으면 다음 번에 PrintJob.start()를 호출할 때 false가 반환됩니다.
PrintJob.start() 및 첫 번째 PrintJob.addPage()PrintJob.addPage() 하나와 다음 PrintJob.addPage()PrintJob.addPage() 및 PrintJob.send()Boolean — [인쇄] 대화 상자가 표시될 때 사용자가 [확인]을 클릭하면 true 값이고 사용자가 [취소]를 클릭하거나 오류가 발생하면 false 값입니다.
|
참고 사항
PrintJobExample 클래스를 사용하여 작은 문서를 만든 다음 이 문서를 프린터로 보냅니다. 이는 다음 단계로 이루어집니다.
sheet1 및 sheet2를 선언합니다.init()를 호출하여 새 Sprite 인스턴스를 sheet1과 sheet2에 할당하고 다른 인수를 사용하여 createSheet()를 호출합니다.createSheet()는 다음을 수행합니다.
txt인 새 TextField 객체를 만듭니다. 크기는 Sprite와 같고 wordWrap 속성은 true로 설정하며, text 속성은 createSheet()에 인수로 전달한 String으로 설정합니다.img라는 새 Sprite 인스턴스를 만듭니다. 흰색 사각형은 addChild()를 통해 Sprite 객체의 표시 목록에 추가됩니다.txt TextField가 addChild()를 통해 Sprite 객체의 표시 목록에 추가됩니다.printOnePerPage() 메서드에 대해 설명합니다.printOnePerPage()는 다음을 수행합니다.
pj 및 pagesToPrint라는 새 PrintJob 객체를 uint로 선언합니다.OK을 클릭하기를 기다립니다.sheet1 및 sheet2의 페이지 높이 및 폭을 설정합니다.addPage()를 사용하여 sheet1 및 sheet2를 인쇄 스플러로 보냅니다.draw() 메서드를 호출하여 두 Sprite의 크기 속성을 스테이지에 맞게 조절하고 sheet2의 위치를 sheet1의 바로 오른쪽으로 조정합니다.참고: 생성자는 필요에 따라 세 가지 인쇄 메서드(페이지당 한 장, 페이지당 두 장 또는 페이지의 위쪽 절반에 인쇄) 중 하나를 선택할 수 있도록 설정되어 있습니다. 이 예제를 제대로 실행하려면 코드 주석을 사용하여 인쇄 메서드 중 두 개를 비활성화해야 합니다. 예제는 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://livedocs.adobe.com/flash/9.0_kr/ActionScriptLangRefV3/flash/printing/PrintJob.html