Справочник по ActionScript® 3.0 для платформы Adobe® Flash®
Домашняя страница  |  Скрыть список пакетов и классов |  Пакеты  |  Классы  |  Что нового  |  Указатель  |  Приложения  |  Почему по-английски?
Фильтры: Получение данных с сервера...
Получение данных с сервера...
mx.printing 

FlexPrintJob  - AS3 Flex

Пакетmx.printing
Классpublic class FlexPrintJob
НаследованиеFlexPrintJob Inheritance Object

Язык версии: ActionScript 3.0
Версия продукта: Flex 3
Версии среды выполнения: Flash Player 9, AIR 1.1

Класс FlexPrintJob является оболочкой для класса flash.printing.PrintJob. В нем поддерживаются автоматическое разделение и разбиение выходящего объекта на несколько страниц и масштабирование содержимого сетки в соответствии с размером страницы принтера.

Посмотреть примеры



Общедоступные свойства
 СвойствоОпределено
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
  pageHeight : Number
[только для чтения] Высота области печати на странице принтера; не включает установленные пользователем поля.
FlexPrintJob
  pageWidth : Number
[только для чтения] Ширина области печати на странице принтера; не включает установленные пользователем поля.
FlexPrintJob
  printAsBitmap : Boolean
Определяет, в каком формате должно быть распечатано содержимое задания: в растровом (true) или векторном (false).
FlexPrintJob
Общедоступные методы
 МетодОпределено
  
Конструктор.
FlexPrintJob
  
addObject(obj:IUIComponent, scaleType:String = "matchWidth"):void
Добавляет объект UIComponent в список распечатываемых объектов.
FlexPrintJob
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
  
Обеспечивает отправку добавленных объектов на принтер для запуска процесса печати.
FlexPrintJob
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
  
Обеспечивает инициализацию объекта PrintJob.
FlexPrintJob
 Inherited
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали.
Object
 Inherited
Возвращает строковое представление заданного объекта.
Object
 Inherited
Возвращает элементарное значение заданного объекта.
Object
Сведения о свойстве

pageHeight

свойство
pageHeight:Number  [только для чтения]

Язык версии: ActionScript 3.0
Версия продукта: Flex 3
Версии среды выполнения: Flash Player 9, AIR 1.1

Высота области печати на странице принтера; не включает установленные пользователем поля. Устанавливается после получения результата вызова метода start().



Реализация
    public function get pageHeight():Number

pageWidth

свойство 
pageWidth:Number  [только для чтения]

Язык версии: ActionScript 3.0
Версия продукта: Flex 3
Версии среды выполнения: Flash Player 9, AIR 1.1

Ширина области печати на странице принтера; не включает установленные пользователем поля. Значение этого свойства устанавливается после получения результата вызова метода start().



Реализация
    public function get pageWidth():Number

printAsBitmap

свойство 
printAsBitmap:Boolean

Язык версии: ActionScript 3.0
Версия продукта: Flex 3
Версии среды выполнения: Flash Player 9, AIR 1.1

Определяет, в каком формате должно быть распечатано содержимое задания: в растровом (true) или векторном (false). При печати в растровом формате поддерживаются выходные объекты, включающие растровое изображение с прозрачностью альфа-канала или цветовыми эффектами. Если содержимое не включает растровые изображения с прозрачностью альфа-канала или цветовыми эффектами, можно выполнить печать в векторном формате с более высоким качеством, установив значение false для свойства printAsBitmap.

Значением по умолчанию является true.



Реализация
    public function get printAsBitmap():Boolean
    public function set printAsBitmap(value:Boolean):void
Сведения о конструкторе

FlexPrintJob

()Конструктор
public function FlexPrintJob()

Язык версии: ActionScript 3.0
Версия продукта: Flex 3
Версии среды выполнения: Flash Player 9, AIR 1.1

Конструктор.

Сведения о методе

addObject

()метод
public function addObject(obj:IUIComponent, scaleType:String = "matchWidth"):void

Язык версии: ActionScript 3.0
Версия продукта: Flex 3
Версии среды выполнения: Flash Player 9, AIR 1.1

Добавляет объект UIComponent в список распечатываемых объектов. Этот метод вызывается после получения результата вызова метода start(). После каждого вызова этого метода создается новая страница, поэтому объекты должны быть отформатированы в пределах фрагментов, имеющих размеры страниц. Для охвата сетки данных на нескольких страницах можно использовать класс PrintDataGrid.

Параметры

obj:IUIComponent — Объект, который должен быть распечатан.
 
scaleType:String (default = "matchWidth") — Метод масштабирования, используемый для управления размещением объекта на одной или нескольких печатных страницах. Значением должно представлять собой одну из констант, определенных в классе FlexPrintJobScaleType.

Связанные элементы API

send

()метод 
public function send():void

Язык версии: ActionScript 3.0
Версия продукта: Flex 3
Версии среды выполнения: Flash Player 9, AIR 1.1

Обеспечивает отправку добавленных объектов на принтер для запуска процесса печати. Этот метод должен быть вызван после применения метода addObject() для добавления печатаемых страниц.

start

()метод 
public function start():Boolean

Язык версии: ActionScript 3.0
Версия продукта: Flex 3
Версии среды выполнения: Flash Player 9, AIR 1.1

Обеспечивает инициализацию объекта PrintJob. Отображает диалоговое окно принтера операционной системы для пользователя. После получения результата вызова в среде Flex устанавливаются свойства pageWidth и pageHeight.

Возвращает
Boolean — Значение true устанавливается в том случае, если при появлении диалогового окна «Печать» пользователь нажал кнопку «OK», а значение false при нажатии кнопки «Отмена» или возникновении ошибки.
FormPrintHeader.mxml
<?xml version="1.0"?>
<!-- Custom control for the header area of the printed page. -->
<s:VGroup name="FormPrintHeader"
        xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        width="60%"
        horizontalAlign="right" >

    <s:Label text="This is a placeholder for first page contents"/>

</s:VGroup>
FormPrintFooter.mxml
<?xml version="1.0"?>
<!-- Custom control for the footer area of the printed page. -->
<s:VGroup name="FormPrintFooter"
        xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        width="60%"
        horizontalAlign="right" >

    <!-- Declare and initialize the product total variable. -->
    <fx:Script>
        <![CDATA[
            [Bindable]
            public var pTotal:Number = 0;
        ]]>
    </fx:Script>

    <s:Label text="Product Total: {pTotal}"/>

</s:VGroup>
FormPrintView.mxml
<?xml version="1.0"?>
<!-- Custom control to print the Halo DataGrid control on multiple pages. -->
<s:VGroup name="FormPrintView"
        xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/mx"
        xmlns="*">

    <fx:Script>
        <![CDATA[
            import mx.core.*;

            // Declare and initialize the variables used in the component.
            // The application sets the actual prodTotal value.
            [Bindable]
            public var pageNumber:Number = 1;

            [Bindable]
            public var prodTotal:Number = 0;

            // Control the page contents by selectively hiding the header and
            // footer based on the page type.
            public function showPage(pageType:String):void {
                if (pageType == "first" || pageType == "middle") {
                    // Hide the footer.
                    footer.includeInLayout = false;
                    footer.visible = false;
                }
                if (pageType == "middle" || pageType == "last") {
                    // The header won't be used again; hide it.
                    header.includeInLayout = false;
                    header.visible = false;
                }
                if (pageType == "last") {
                    // Show the footer.
                    footer.includeInLayout = true;
                    footer.visible = true;
                }
                //Update the DataGrid layout to reflect the results.
                validateNow();
            }
        ]]>
    </fx:Script>

    <!-- The template for the printed page, with the contents for all pages. -->
    <s:VGroup width="80%" horizontalAlign="left">
        <s:Label text="Page {pageNumber}"/>
    </s:VGroup>

    <FormPrintHeader id="header" />

    <!-- The data grid. The sizeToPage property is true by default, so the last
        page has only as many grid rows as are needed for the data. -->
    <mx:PrintDataGrid id="myDataGrid" width="60%" height="100%">
        <!-- Specify the columns to ensure that their order is correct. -->
        <mx:columns>
            <mx:DataGridColumn dataField="Index" />
            <mx:DataGridColumn dataField="Qty" />
        </mx:columns>
    </mx:PrintDataGrid>

    <!-- Create a FormPrintFooter control and set its prodTotal variable. -->
    <FormPrintFooter id="footer" pTotal="{prodTotal}" />

</s:VGroup>
PrintDataGridExample.mxml
<?xml version="1.0"?>
<!-- Main application to print a Halo DataGrid control on multiple pages. -->
<s:Application name="PrintDataGridExample.mxml"
        xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/mx"
        initialize="initData();">

    <fx:Script>
        <![CDATA[

        import mx.printing.*;
        import mx.collections.ArrayCollection;
        import FormPrintView;
        import mx.core.FlexGlobals;

        // Declare variables and initialize simple variables.
        [Bindable]
        public var dgProvider:ArrayCollection;
        public var footerHeight:Number = 20;
        public var prodIndex:Number;
        public var prodTotal:Number = 0;

        // Data initialization.
        public function initData():void {
            // Create the data provider for the DataGrid control.
            dgProvider = new ArrayCollection;
        }

        // Fill the dgProvider ArrayCollection with the specified items.
        public function setdgProvider(items:int):void {
            prodIndex=1;
            dgProvider.removeAll();
            for (var z:int=0; z<items; z++) {
                var prod1:Object = {};
                prod1.Qty = prodIndex * 7;
                prod1.Index = prodIndex++;
                prodTotal += prod1.Qty;
                dgProvider.addItem(prod1);
            }
        }

        // The function to print the output.
        public function doPrint():void {
            var printJob:FlexPrintJob = new FlexPrintJob();
            if (printJob.start()) {
                // Create a FormPrintView control as a child of the current view.
                var thePrintView:FormPrintView = new FormPrintView();
                FlexGlobals.topLevelApplication.addElement(thePrintView);

                //Set the print view properties.
                thePrintView.width=printJob.pageWidth;
                thePrintView.height=printJob.pageHeight;
                thePrintView.prodTotal = prodTotal;
                // Set the data provider of the FormPrintView component's data grid
                // to be the data provider of the displayed data grid.
                thePrintView.myDataGrid.dataProvider = myDataGrid.dataProvider;
                // Create a single-page image.
                thePrintView.showPage("single");
                // If the print image's data grid can hold all the provider's rows,
                // add the page to the print job.
                if (!thePrintView.myDataGrid.validNextPage)  {
                    printJob.addObject(thePrintView);
                }
                // Otherwise, the job requires multiple pages.
                else {
                    // Create the first page and add it to the print job.
                    thePrintView.showPage("first");
                    printJob.addObject(thePrintView);
                    thePrintView.pageNumber++;
                    // Loop through the following code until all pages are queued.
                    while (true) {
                        // Move the next page of data to the top of the print grid.
                        thePrintView.myDataGrid.nextPage();
                        thePrintView.showPage("last");
                        // If the page holds the remaining data, or if the last page
                        // was completely filled by the last grid data, queue it for printing.
                        // Test if there is data for another PrintDataGrid page.
                        if (!thePrintView.myDataGrid.validNextPage) {
                            // This is the last page; queue it and exit the print loop.
                            printJob.addObject(thePrintView);
                            break;
                        } else {
                            // This is not the last page. Queue a middle page.
                            thePrintView.showPage("middle");
                            printJob.addObject(thePrintView);
                            thePrintView.pageNumber++;
                        }
                    }
                }
                // All pages are queued; remove the FormPrintView control to free memory.
                FlexGlobals.topLevelApplication.removeElement(thePrintView);
            }
            // Send the job to the printer.
            printJob.send();
        }
        ]]>
    </fx:Script>

    <s:Panel title="DataGrid Printing Example"
            width="75%" height="75%"
            horizontalCenter="0" verticalCenter="0">
        <s:VGroup left="10" right="10" top="10" bottom="10">
            <mx:DataGrid id="myDataGrid" dataProvider="{dgProvider}">
                <mx:columns>
                    <mx:DataGridColumn dataField="Index"/>
                    <mx:DataGridColumn dataField="Qty"/>
                </mx:columns>
            </mx:DataGrid>

            <s:Label width="100%" color="blue"
                text="Specify the number of lines and click Fill Grid first. Then you can click Print."/>

            <s:TextInput id="dataItems" text="35"/>

            <s:HGroup>
                <s:Button id="setDP" label="Fill Grid" click="setdgProvider(int(dataItems.text));"/>
                <s:Button id="printDG" label="Print" click="doPrint();"/>
            </s:HGroup>
        </s:VGroup>
    </s:Panel>

</s:Application>




[ X ]Почему по-английски?
Содержимое Справочника ActionScript 3.0 отображается на английском языке

Не все части Справочника ActionScript 3.0 переводятся на все языки. Если какой-то текстовый элемент не переведен, он отображается на английском языке. Например, компонент ga.controls.HelpBox не переведен ни на один из языков. Это значит, что в русской версии справки компонент ga.controls.HelpBox будет отображаться на английском языке.