zoukankan      html  css  js  c++  java
  • Understanding Flex Print Job from A to Z (彻底了解FlexPrintJob)(精彩转载)

    What is FlexPrintJob

    In Flex, you usually do printing in your application through FlextPrintJob.

    According to Adobe, FlexPrintJob is:

    • A class that prints one or more objects
    • Automatically splits large objects for printing on multiple pages
    • Scales the output to fit the page size

    FlexPrintJob vs. Flash PrintJob

    FlexPrintJob is a new print class introduced by Adobe for Flex. In Flash, there is a similar one, named PrintJob.

    Here is how you call FlexPrintJob in Flex:

    flexPrintJob.addObject(myPrintObject,scaleType)
    - myPrintObject is the UIComponent you want to print
    - scaleType specifies how to scale UIComponent to fit print page
      (e.g. matchWidth, matchHeight, fillPage, showAll)

    To compare, here is how you call PrintJob in Flash:

    printJob.addPage(Sprite(myPrintObject), rectangle, printJobOptions)
    - myPrintObject is the UIComponent you want to print
    - rectangle is the print area defined by a rectangle
    - printJboOptions specifies print as a BitMap or in Vector format

    So, what is the relationship between those two print classes?

    FlexPrintJob is actually a wrapper for PrintJob class.

    What does a wrapper class mean in this case? It means:

    1.  FlexPrintJob eventually calls Flash PrintJob to finish the printing task.

    2.  FlexPrintJob enhances the Flash PrintJob and simplifies its usage.

    What is new in FlexPrintJob

    Adobe claims that FlexPrintJob automatically slices large object for printing on multiple pages and scales the output to fit the page size.

    To do so,  FlexPrintJob wraps the old Flash PrintJob in the following 8 steps:

    Step 1:  Convert percentage width or height to explicit width or height

    Step 2:  Calculate Scale Ratio based on Print Page Size and ScaleType (e.g. matchWidth)

    Step 3:  Scale the print object to the required value

    Step 4:  Find the number of pages required in vertical and horizontal

    Step 5:  Create the print area in a shape of rectangle

    Step 6:  Specify Print Options (BitMap or Vector)

    Step 7:  Call Flash PrintJob to print each page

    Step 8:  Restore from explicit width or height to percentage width or height

    What is missing in FlexPrintJob

    FlexPrintJob enhances the Flash PrintJob in terms of scaling the output to fit the page size. However, is it good enough to print large object on multiple pages?

    Maybe… as long as you don’t mind cutting text in half or printing only 5% content of TextArea or DataGrid.

    As a matter of fact, to really support multiple pages printing in Flex, it need to resolve the following 3 issues:

    1. How to scale display objects from screen to printer?

    2. How to print the full content of Scrollable Components such as TextArea or DataGrid?

    3. How to find the right page breaker to avoid cutting objects (e.g. Text or Image) in half?

    Through the implementation of FlexPrintJob, it does not provide good answers to issue#2 and issue#3. Therefore, when come to printing multiple pages in Flex, you often need extra helps like PrintDataGrid or FlexReport.

    Note:The paper comes from http://flextutorial.org/2009/06/23/understanding-flex-print-job-from-a-to-z/

  • 相关阅读:
    c语言 414 根据输入的整数,循环显示1234567890
    c语言 47 编写一段程序,显示小于输入的整数的所有2的乘方。
    c语言49 交替输出正负号,当输入0以下时什么也不显示
    c语言48 改写48的程序,当输入的值小于1时不输出换行符
    c语言 411 逆向输出输入的整数值(同时输出原始数据)
    c语言47 显示出小于输入的整数的所有2的乘方
    c语言412 输入一个整数值显示其位数
    c语言415 输出标准身高体重对照表
    c语言413 求1到n的和
    c语言 410 输出连续* \n
  • 原文地址:https://www.cnblogs.com/wuhenke/p/1605020.html
Copyright © 2011-2022 走看看