Пакет | flash.printing |
Класс | public class PrintJob |
Наследование | PrintJob ![]() ![]() |
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Используйте конструктор PrintJob()
для создания задания печати.
Кроме того, благодаря свойствам, заполняемым PrintJob.start()
, для документа могут считываться параметры настройки принтера, например высота страницы, ее ширина и ориентация изображения, и можно настроить в документе динамическое форматирование содержимого Flash в соответствии с параметрами принтера. Свойства макета пользователя, заполняемые PrintJob.start()
, открыты только для чтения и не могут быть изменены в Flash Player.
Примечание. ActionScript 3.0 не ограничивает объект PrintJob одним кадром (как это было в предыдущих версиях программы ActionScript). Однако, поскольку операционная система отображает информацию о состоянии печати пользователю, после того как он нажал кнопку "ОК" в диалоговом окне "Печать", необходимо как можно быстрее вызвать методы PrintJob.addPage()
и PrintJob.send()
, чтобы отправить страницы в диспетчер очереди печати. Задержка при обращении к кадру, содержащему вызов PrintJob.send()
, приведет к задержке процесса печати.
Кроме того, для следующих интервалов применяется 15 секундное ограничение задержки сценария:
PrintJob.start()
и первым PrintJob.addPage()
PrintJob.addPage()
и следующим PrintJob.addPage()
PrintJob.addPage()
и PrintJob.send()
Если любой из вышеуказанных интервалов длится более 15 секунд, следующий вызов метода PrintJob.start()
для экземпляра PrintJob возвращает значение false
, а следующее обращение к методу PrintJob.addPage()
для этого экземпляра PrintJob вызывает в проигрывателе Flash Player исключение при выполнении.
Свойство | Определено | ||
---|---|---|---|
![]() | constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | |
orientation : String [только для чтения]
Ориентация изображения при печати. | PrintJob | ||
pageHeight : int [только для чтения]
Высота фактически печатаемой области на странице (в пунктах). | PrintJob | ||
pageWidth : int [только для чтения]
Ширина фактически печатаемой области на странице (в пунктах). | PrintJob | ||
paperHeight : int [только для чтения]
Общая высота бумаги (в пунктах). | PrintJob | ||
paperWidth : int [только для чтения]
Общая ширина бумаги (в пунктах). | PrintJob | ||
![]() | prototype : Object [статические]
Ссылка на модель объекта класса или функции. | 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
[только для чтения] Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9. |
Ориентация изображения при печати. Это свойство является значением класса PrintJobOrientation. Это свойство доступно только после того, как был вызван метод PrintJob.start()
.
public function get orientation():String
См. также
pageHeight | свойство |
pageHeight:int
[только для чтения] Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9. |
Высота фактически печатаемой области на странице (в пунктах). Любые границы, установленные пользователем, игнорируются. Это свойство доступно только после того, как был вызван метод PrintJob.start()
.
public function get pageHeight():int
pageWidth | свойство |
pageWidth:int
[только для чтения] Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9. |
Ширина фактически печатаемой области на странице (в пунктах). Любые границы, установленные пользователем, игнорируются. Это свойство доступно только после того, как был вызван метод PrintJob.start()
.
public function get pageWidth():int
paperHeight | свойство |
paperHeight:int
[только для чтения] Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9. |
Общая высота бумаги (в пунктах). Это свойство доступно только после того, как был вызван метод PrintJob.start()
.
public function get paperHeight():int
paperWidth | свойство |
paperWidth:int
[только для чтения] Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9. |
Общая ширина бумаги (в пунктах). Это свойство доступно только после того, как был вызван метод PrintJob.start()
.
public function get paperWidth():int
PrintJob | () | Конструктор |
public function PrintJob()
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Создает объект PrintJob, который можно использовать для печати одной или нескольких страниц. После создания объекта PrintJob для отправки задания печати на принтер необходимо использовать (в указанном порядке) методы PrintJob.start()
, PrintJob.addPage()
, а затем PrintJob.send()
.
Например, можно заменить текст-заполнитель [params]
для вызовов метода my_pj.addPage()
пользовательскими параметрами, как показано в следующем программном коде.
Нельзя создать второй объект PrintJob, если уже есть один такой активный объект. Если второй объект PrintJob создается (вызовом метода new PrintJob()
), когда активен первый объект PrintJob, второй объект создан не будет. Поэтому можно проверить значение my_pj
, прежде чем создавать второй объект PrintJob.
IllegalOperationError — Если еще активен другой объект PrintJob, выдается исключение.
|
См. также
addPage | () | метод |
public function addPage(sprite:Sprite, printArea:Rectangle = null, options:PrintJobOptions = null, frameNum:int = 0):void
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9. |
Отправляет заданный объект Sprite в диспетчер очереди печати принтера в виде одной страницы. Перед использованием этого метода необходимо создать объект PrintJob, а затем применить метод PrintJob.start()
. Затем, после вызова метода PrintJob.addPage()
один или несколько раз для задания печати, для передачи страниц в диспетчере очереди печати на принтер применяется метод PrintJob.send()
. Говоря другими словами, после создания объекта PrintJob для отправки задания печати на принтер необходимо использовать (в указанном порядке) методы PrintJob.start()
, PrintJob.addPage()
, а затем PrintJob.send()
. Метод PrintJob.addPage()
можно использовать несколько раз после одного вызова метода PrintJob.start()
, чтобы выполнить печать нескольких страниц одновременно.
Если метод PrintJob.addPage()
вызывает исключение в проигрывателе Flash Player (например, если не вызван метод PrintJob.start()
или пользователь отменил задание печати), любой последующий вызов PrintJob.addPage()
завершится ошибкой. Однако, если предыдущие вызовы метода PrintJob.addPage()
были успешными, завершающая команда PrintJob.send()
отправит успешно помещенные в очередь диспетчера печати страницы на принтер.
Если заданию печати требуется более 15 секунд для выполнения операции PrintJob.addPage()
, то проигрыватель Flash Player вызовет исключение при следующем обращении к методу Print.addPage()
.
Если передается значение для параметра printArea
, то координаты x
и y
объекта printArea
устанавливаются для верхнего левого угла (координаты 0,0) области печати страницы. Область печати описывается доступными только для чтения свойствами pageHeight
и pageWidth
, устанавливаемыми методом PrintJob.start()
. Поскольку печатаемые данные выравниваются по верхнему левому углу области печати страницы, то когда область, определенная параметром 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, происходит преобразование векторных изображений в растровые.
Параметры
sprite:Sprite — Имя экземпляра объекта Sprite для печати.
| |
printArea:Rectangle (default = null ) — Прямоугольный объект, указывающий область для печати.
Значения ширины и высоты прямоугольника задаются в пикселях. Принтер использует точки в качестве единиц измерения для печати. Точки имеют фиксированный физический размер (1/72 дюйма), но размер пикселя на экране зависит от разрешения конкретного экрана. Поэтому коэффициент преобразования между пикселями и точками зависит от параметров принтера и масштабирования объекта Sprite. Немасштабированный объект Sprite, имеющий ширину 72 пикселя, будет распечатываться с шириной 1 дюйм, при этом одна точка будет равна одному пикселю, независимо от разрешения экрана. Можно использовать следующие соответствия для преобразования дюймов или сантиметров в твипы или точки (твип равен 1/20 части точки):
Если параметр Если не требуется указывать значение для параметра | |
options:PrintJobOptions (default = null ) — Дополнительный параметр, который указывает, нужно ли выполнять печать в векторном или растровом формате. По умолчанию установлено значение null , которое соответствует запросу на печать в векторном формате. Чтобы распечатать объект sprite в растровом формате, установите для свойства printAsBitmap объекта rintJobOptions значение true . Не забывайте о следующих рекомендациях, когда определяете, устанавливать ли для свойства printAsBitmap значение true .
Если параметр | |
frameNum:int (default = 0 ) — Дополнительный номер, который позволяет указать, какой кадр распечатывать; передача параметра frameNum не означает вызов ActionScript для этого кадра. Если этот параметр пропущен, распечатывается текущий кадр объекта sprite .
Примечание. Тем кто ранее выполнял печать из Adobe Flash с помощью методов |
Error — Выдается исключение, если не был вызван метод PrintJob.start() или пользователь отменил задание печати
|
См. также
send | () | метод |
public function send():void
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9. |
Отправляет страницы в очереди печати на принтер после успешного выполнения методов PrintJob.start()
и PrintJob.addPage()
. Невозможны успешные вызовы метода PrintJob.send()
, если вызов PrintJob.start()
завершился с ошибкой или возникло исключение при вызове PrintJob.addpage()
. Необходимо проверить, что при вызове метода PrintJob.start()
возвращается значение true
и перехватить любое исключение PrintJob.addpage()
, прежде чем вызывать метод PrintJob.send()
. Например,
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 |
Версии среды выполнения: | Flash Player 9., 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 ). |
Примечание. Если пользователь закрывает диалоговое окно "Печать", эти свойства не заполняются.
После того как пользователь нажмет кнопку "ОК" в диалоговом окне "Печать", проигрыватель начинает отправлять задание печати в очередь диспетчера печати операционной системы. Поскольку операционная система затем начинает отображать пользователю информацию о выполнении печати, необходимо как можно быстрее вызвать методы PrintJob.addPage()
и PrintJob.send()
, чтобы отправить страницы в диспетчер очереди печати. Можно использовать доступные только для чтения свойства высоты, ширины и ориентации страницы, которые этот метод подставляет при форматировании печатаемой страницы.
Проверьте, возвращает ли метод значение true
(если пользователь нажмет кнопку "ОК" в диалоговом окне "Печать" операционной системы) перед последующим вызовом одного из методов PrintJob.addPage()
и PrintJob.send()
:
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()
выполняет следующие действия:
printOnePerPage()
.printOnePerPage()
выполняет следующие действия:
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; } } }