设置大小、缩放和方向Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本 打印页面一节详细介绍基本打印作业的步骤,在基本打印作业中,输出直接反映了指定的 Sprite 的屏幕大小和位置的打印效果。然而,打印机使用不同的分辨率进行打印,并且可以具有对打印 sprite 的外观有不利影响的设置。 Flash 运行时可以读取操作系统的打印设置,但是请注意这些属性是只读的:虽然您可以响应它们的值,但无法对它们进行设置。例如,您可以查明打印机的页面大小设置,并调整内容以适合该大小。您还可以确定打印机的边距设置和页面方向。要响应打印机设置,请指定打印区域,调整屏幕的分辨率和打印机的点测量之间的差异,或者转换您的内容以适合用户打印机的大小或方向设置。 为打印区域使用矩形使用 PrintJob.addPage() 方法可以指定要打印的 sprite 的区域。第二个参数 printArea 为 Rectangle 对象的形式。您可以选择三种方法来提供该参数的值:
比较点和像素矩形的宽度和高度以像素为单位。打印机使用点来作为打印的度量单位。点的实际大小是固定的(1/72 英寸),但是在屏幕上,像素的大小取决于特定屏幕的分辨率。像素和点之间的转换比率取决于打印机设置以及 sprite 是否经过缩放。一个 72 像素宽的 sprite 在未经缩放的情况下打印输出为一英寸宽,这时,一点等于一像素,与屏幕分辨率无关。 您可以使用以下换算公式将英寸或厘米转换为缇或点(1 缇为 1/20 点):
如果省略了 printArea 参数或错误地传递了该参数,将打印 sprite 的整个区域。 缩放如果要在打印前对 Sprite 对象进行缩放,请在调用 PrintJob.addPage() 方法之前设置缩放属性(请参阅处理大小和缩放对象),并在打印后将这些属性设置回原始值。Sprite 对象的缩放与 printArea 属性无关。也就是说,如果指定一个 50 x 50 个像素的打印区域,则会打印 2500 个像素。如果对 Sprite 对象进行缩放,则同样会打印 2500 个像素,但按缩放后的大小打印 Sprite 对象。 有关示例,请参阅打印示例:缩放、裁剪和响应。 横向或纵向打印由于 Flash Player 和 AIR 可以检测方向设置,因此,您可以在 ActionScript 中构建逻辑来调整内容大小或旋转以响应打印机设置,如下面的示例所示: if (myPrintJob.orientation == PrintJobOrientation.LANDSCAPE) { mySprite.rotation = 90; } 注: 如果您计划读取纸张上内容方向的系统设置,请记得导入 PrintJobOrientation 类。PrintJobOrientation 类提供了定义页面上的内容方向的常量值。使用以下语句导入该类:
import flash.printing.PrintJobOrientation; 响应页面高度和宽度使用类似于处理打印机方向设置的策略,可以读取页面高度和宽度设置,并通过将某些逻辑嵌入 if 语句中来响应这些设置。下面的代码显示了一个示例: if (mySprite.height > myPrintJob.pageHeight) { mySprite.scaleY = .75; } 此外,还可以通过比较页面尺寸和纸张尺寸来确定页面的边距设置,如下面的示例所示: margin_height = (myPrintJob.paperHeight - myPrintJob.pageHeight) / 2; margin_width = (myPrintJob.paperWidth - myPrintJob.pageWidth) / 2; |
|