PrintJob.addPage()

可用性

Flash Player 7。

用法

my_pj.addPage(target [, printArea] [, options ] [, frameNumber])

参数

target 要打印的影片剪辑的级别或实例名称。传递一个数字来指定级别(例如,0 是 _root 影片)或传递一个字符串(括在引号中)来指定影片剪辑的实例名称。

printArea 一个指定要打印的区域的可选对象,格式如下:

{xMin:topLeft, xMax:topRight, yMin:bottomLeft, yMax:bottomRight}

您为 printArea 指定的坐标表示屏幕像素,这些屏幕像素相对于 _root 影片(如果 target = 0)的注册点或 target 指定的级别或影片剪辑的注册点。您必须提供所有四个坐标。宽度 (xMax-xMin) 和高度 (yMax-yMin) 必须都大于 0。

磅是用于打印的度量单位,像素是屏幕的度量单位;一磅的大小等于一个像素的大小。您可以使用以下换算公式将英寸或厘米转换为缇、像素或磅(1 缇为 1/20 像素):

注意:如果以前曾使用 print()printAsBitmap()printAsBitmapNum()printNum() 从 Flash 进行打印,则使用了 #b 帧标签来指定打印区域。当使用 addPage() 方法时,您必须使用 printArea 参数来指定打印区域;#b 帧标签将被忽略。

如果省略了 printArea 参数或错误地传递了该参数,则将打印 target 的整个舞台区域。如果不想为 printArea 指定值,但想为 optionsframeNumber 指定值,则为 printArea 传递 null

options 一个可选参数;指定是作为矢量打印还是作为位图打印,格式如下:

{printAsBitmap:Boolean}

默认情况下,将以矢量格式打印页。若要作为位图打印 target,则为 printAsBitmap 传递 true。默认值是 false,该值表示要求进行矢量打印。当确定要使用的值时,请记住以下建议:

如果省略或错误地传递了 options,则执行矢量打印。如果您不想为 options 指定值,但想为 frameNumber 指定值,则为 options 传递 null

frameNumber 一个可选数字,用于指定要打印的帧;请注意,将不调用该帧上的任何动作脚本。如果省略此参数,则打印 target 中的当前帧。

注意:如果以前曾使用 print()printAsBitmap()printAsBitmapNum()printNum() 从 Flash 进行打印,则可能在多个帧上使用了 #p 帧标签指定要打印哪些页。若要使用 PrintJob.addPage() 打印多个帧,您必须对每个帧发出 PrintJob.addPage() 命令;#p 帧标签将被忽略。有关以编程的方式实现此目的的方法,请参见本条目稍后部分中的示例。

返回

如果页被成功发送到打印后台处理程序,则为布尔值 true;否则为 false

说明

方法;将指定的级别或影片剪辑作为单个页发送到打印后台处理程序。在使用此方法之前,您必须使用 PrintJob.start();在对打印作业调用了一次或多次 PrintJob.addPage() 之后,您必须使用 PrintJob.send() 将经过后台处理的页发送到打印机。

如果此方法返回 false(例如,如果您未调用 PrintJob.start() 或者用户取消了打印作业),则对 PrintJob.addPage() 的任何后续调用都将失败。但是,如果此前对 PrintJob.addPage() 的调用成功,则结束的 PrintJob.send() 命令会将经成功后台处理的所有页发送到打印机。

如果为 printArea 传递了一个值,则 xMinyMin 坐标对应于页上可打印区域的左上角(坐标 0,0);可打印区域是由 PrintJob.start() 设置的 pageHeightpageWidth 属性确定的。因为打印输出会和页上可打印区域的左上角对齐,所以如果 printArea 中定义的区域大于页上的可打印区域,则打印输出在右边和/或底部会被截断。如果没有为 printArea 传递值并且舞台大于可打印区域,则发生同样类型的截断操作。

如果要在打印前对影片剪辑进行缩放,可在调用此方法前设置其 MovieClip._xscaleMovieClip._yscale 属性,并在打印后将它们设回原始值。影片剪辑的缩放与 printArea 无关。也就是说,如果指定打印大小为 50 x 50 像素的区域,则将打印 2500 像素。如果对影片剪辑进行了缩放,同样会打印 2500 像素,但是将以缩放的大小进行打印。

Flash Player 打印功能支持 PostScript 和非 PostScript 打印机。非 PostScript 打印机将矢量转换成位图。

示例

下面的示例说明了发布 addPage() 命令的多种方式。

my_btn.onRelease = function()
{
  var pageCount = 0;

  var my_pj = new PrintJob();
  
  if (my_pj.start())
  {
    // 以矢量格式打印 _root 影片的全部当前帧
    if (my_pj.addPage(0))
    {
      pageCount++;

      // 从 0,0 开始,以矢量格式打印 _root 影片当前帧的
      // 400 像素宽 500 像素高的区域
      if (my_pj.addPage(0, {xMin:0,xMax:400,yMin:0,yMax:500}))
      {
        pageCount++;

        // 从 0,0 开始,以位图格式打印 _root 影片第 1 帧的
        // 400 像素宽 500 像素高的区域
        if (my_pj.addPage(0, {xMin:0,xMax:400,yMin:0,yMax:500},
            {printAsBitmap:true}, 1))
        {
          pageCount++;

          // 从 0,0 右侧 50 像素、下方 70 像素开始,
          // 以矢量格式打印级别 5 的第 4 帧的
          // 500 像素宽 600 像素高的区域
          if (my_pj.addPage(5, {xMin:50,xMax:550,yMin:70,yMax:670},null, 4))
          {
            pageCount++;

            // 从 0,0 开始,以位图格式打印
            // “dance_mc”影片剪辑的第 3 帧的
            // 400 像素宽 400 像素高的区域
            if (my_pj.addPage("dance_mc",
                {xMin:0,xMax:400,yMin:0,yMax:400},{printAsBitmap:true}, 3))
            {
              pageCount++;

              // 从 0,0 开始,以矢量格式打印
              // “dance_mc”影片剪辑的第 3 帧的 400 像素宽 600 像素高的区域,
              // 大小为实际大小的 50%
              var x = dance_mc._xscale;
              var y = dance_mc._yscale;
              dance_mc._xscale = 50;
              dance_mc._yscale = 50;

              if (my_pj.addPage("dance_mc",
                  {xMin:0,xMax:400,yMin:0,yMax:600},null, 3))
              {
                pageCount++;
              }

              dance_mc._xscale = x;
              dance_mc._yscale = y;
            }
          }
        }
      }
    }
  }
  
  if (pageCount)
  {
    my_pj.send();
  }
  delete my_pj;
}

另请参见

PrintJob.send()PrintJob.start()