Flash Player 任务和系统打印

由于 Flash Player 向操作系统的打印接口调度页面,因此您应了解 Flash Player 和操作系统自身的打印接口所管理的任务范围。Flash Player 可启动打印作业,读取打印机的部分页面设置,将打印作业的内容传递给操作系统,并验证用户或系统是否已取消打印作业。其它过程(例如显示特定于打印机的对话框、取消后台打印作业或报告打印机的状态)都由操作系统处理。如果出现打印作业启动或格式设置问题,Flash Player 能够做出响应,但只能报告操作系统打印接口的某些属性或条件。作为开发人员,您编写的代码应能响应这些属性或条件。

子主题

处理异常和返回值
处理页面属性
设置矢量或位图呈现
为打印作业语句定时

处理异常和返回值

您应检查在用户已取消打印作业的情况下,在执行 addPage()send() 调用之前 PrintJob.start() 方法是否返回 true。一种在继续之前检查是否已取消这些方法的简单途径是,将它们包含在 if 语句中,如下所示:

if (myPrintJob.start())
{
    // 此处为 addPage() 和 send() 语句
}

如果 PrintJob.start()true,即表示用户已选择 Print(或者 Flash Player 已启用 Print 命令),则可以调用 addPage()send() 方法。

另外,为了帮助管理打印过程,Flash Player 现在对 PrintJob.addPage() 方法引发异常,以便您可以捕获错误并向用户提供信息和选项。如果 PrintJob.addPage() 方法失败,则可以调用其它函数或停止当前打印作业。您可以通过将 addPage() 调用嵌入 try..catch 语句来捕获这些异常,如下例所示。在该例中,[params] 是指定实际打印内容的参数的占位符:

if (myPrintJob.start())
{
    try
    {
        myPrintJob.addPage([params]);
    }
    catch (error:Error)
    {
        // 处理错误,
    }
    myPrintJob.send();
}

打印作业启动后,您就可以使用 PrintJob.addPage() 添加内容,并查看是否生成异常(例如,如果用户已取消打印作业)。如果生成异常,则可以向 catch 语句添加逻辑,以便向用户(或 Flash Player)提供信息和选项,或者可以停止当前打印作业。如果成功添加了页面,则可以继续使用 PrintJob.send() 将页面发送到打印机。

如果 Flash Player 在将打印作业发送到打印机时遇到问题(例如,如果打印机处于脱机状态),则也可以捕获该异常并向用户(或 Flash Player)提供信息或更多选项(例如显示消息文本或在 Flash 动画中提供警告)。例如,您可以为 if..else 语句中的文本字段分配新文本,如以下代码所示:

if (myPrintJob.start())
{
    try
    {
        myPrintJob.addPage([params]);
    }
    catch (error:Error)
    {
        // 处理错误。 
    }
    myPrintJob.send();
}
else
{
    myAlert.text = "Print job canceled";
}

有关运行正常的示例,请参阅示例:缩放、裁剪和拼接

处理页面属性

用户在“打印”对话框中单击“确定”且 PrintJob.start() 返回 true 后,您就可以访问由打印机设置定义的属性。这些设置包括纸张宽度、纸张高度(pageHeightpageWidth)以及纸张上内容的方向。由于这些设置属于打印机设置,不受 Flash Player 控制,因此您无法更改这些设置;但是,您可以使用它们将发送到打印机的内容对齐以与当前设置匹配。有关详细信息,请参阅设置大小、缩放和方向

设置矢量或位图呈现

您可以将打印作业手动设置为将每个页面在后台处理为矢量图形或位图图像。在某些情况下,矢量打印相对于位图打印而言会生成更小的后台文件和效果更佳的图像。但是,如果您的内容包含位图图像,并且您要保留任何 Alpha 透明度或色彩效果,则应将页面打印为位图图像。另外,非 PostScript 打印机会自动将任何矢量图形转换为位图图像。您可以在 PrintJob.addPage() 的第三个参数中指定位图打印,方法是传递一个 PrintJobOptions 对象并将 printAsBitmap 参数设置为 true,如下所示:

var options:PrintJobOptions = new PrintJobOptions();
options.printAsBitmap = true;
myPrintJob.addPage(mySprite, null, options);

如果没有指定第三个参数的值,打印作业将使用默认设置,即矢量打印。

注意

 

如果您不想指定 printArea(第二个参数)的值,但想指定位图打印的值,请为 printArea 使用 null

为打印作业语句定时

与 ActionScript 的先前版本不同,ActionScript 3.0 未将 PrintJob 对象限定在单帧。然而,由于在用户单击“打印”对话框中的“确定”按钮之后,操作系统会向用户显示打印状态信息,所以应尽快调用 PrintJob.addPage()PrintJob.send(),以将页面发送到后台处理程序。如果到达包含 PrintJob.send() 调用的帧时发生延迟,将会延迟打印过程。

在 ActionScript 3.0 中,脚本超时限制为 15 秒。因此,打印作业序列中各个主要语句间的时间间隔不能超过 15 秒。也就是说,15 秒脚本超时限制适用于以下时间间隔:

如果以上任何一个间隔时间超过了 15 秒,则对 PrintJob 实例的下一次 PrintJob.start() 调用将返回 false,并且对 PrintJob 实例的下一个 PrintJob.addPage() 将使 Flash Player 引发运行时异常。


Flash CS3

 

评论添加到页面后给我发送电子邮件 | 评论报告

当前页: http://livedocs.adobe.com/flash/9.0_cn/main/00000333.html