Configuración del tamaño, la escala y la orientación

Flash Player 9 y posterior, Adobe AIR 1.0 y posterior

En la sección Impresión de una página se detallan los pasos de un trabajo de impresión básico, en el que la salida refleja directamente el equivalente impreso del tamaño de pantalla y la posición del objeto Sprite especificado. Sin embargo, las impresoras utilizan resoluciones distintas para imprimir y pueden tener configuraciones que afecten negativamente al aspecto del objeto Sprite impreso.

Los motores de ejecución de Flash pueden leer la configuración de impresión de un sistema operativo, pero se debe tener en cuenta que estas propiedades son de solo lectura: aunque se puede responder a sus valores, estos no pueden definirse. Así pues, por ejemplo, se puede buscar la configuración de tamaño de página de la impresora y ajustar el contenido a dicho tamaño. También se puede determinar la configuración de márgenes y la orientación de página de una impresora. Para responder a la configuración de la impresora, es posible que sea necesario especificar un área de impresión, ajustar la diferencia entre la resolución de una pantalla y las medidas de puntos de una impresora, o transformar el contenido para ajustarlo a la configuración de tamaño u orientación de la impresora del usuario.

Uso de rectángulos en el área de impresión

El método PrintJob.addPage() permite especificar la región de un objeto Sprite que se desea imprimir. El segundo parámetro, printArea tiene la forma de un objeto Rectangle. Hay tres formas posibles de proporcionar un valor para este parámetro:

  • Crear un objeto Rectangle con propiedades específicas y luego utilizar el rectángulo en la llamada a addPage() , como en el siguiente ejemplo:

    private var rect1:Rectangle = new Rectangle(0, 0, 400, 200); 
    myPrintJob.addPage(sheet, rect1);
  • Si no se ha especificado todavía un objeto Rectangle, puede hacerse en la propia llamada, como en el siguiente ejemplo:

    myPrintJob.addPage(sheet, new Rectangle(0, 0, 100, 100));
  • Si se ha previsto proporcionar valores para el tercer parámetro en la llamada a addPage() , pero no se desea especificar un rectángulo, se puede utilizar null para el segundo parámetro, como en el siguiente ejemplo:

    myPrintJob.addPage(sheet, null, options);

Comparación de puntos y píxeles

La anchura y la altura de un rectángulo son valores expresados en píxeles. Una impresora utiliza los puntos como unidad de medida de impresión. Los puntos tienen un tamaño físico fijo (1/72 pulgadas), pero el tamaño de un píxel en pantalla depende de la resolución de cada pantalla. Así, la relación de conversión entre píxeles y puntos depende de la configuración de la impresora y del hecho de que el objeto Sprite tenga ajustada la escala. Un objeto Sprite sin escalar de 72 píxeles de ancho se imprimirá con una anchura de una pulgada, cada punto equivaldrá a un píxel, independientemente de la resolución de la pantalla.

Puede utilizar las equivalencias siguientes para convertir los valores en pulgadas o centímetros en twips o puntos (un twip es 1/20 de un punto):

  • 1 punto = 1/72 pulgadas =20 twips

  • 1 pulgada = 72 puntos = 1440 twips

  • 1 centímetro = 567 twips

Si se omite o pasa de forma incorrecta el parámetro printArea , se imprime el área completa del objeto Sprite.

Escala

Si desea realizar un ajuste de escala en un objeto Sprite antes de imprimirlo, establezca las propiedades de escala (consulte Manipulación del tamaño y ajuste de escala de los objetos ) antes de llamar al método PrintJob.addPage() y restablezca los valores originales después de imprimir. La escala de un objeto Sprite no tiene relación con la propiedad printArea. En otras palabras, si se especifica un área de impresión de 50 por 50 píxeles, se imprimen 2500 píxeles. Si se cambia la escala del objeto Sprite, se seguirán imprimiendo 2500 píxeles, pero el objeto Sprite se imprimirá con el tamaño con la escala ajustada.

Para ver un ejemplo, consulte Ejemplo de impresión: Ajuste de escala, recorte y respuesta .

Impresión de la orientación horizontal o vertical

Flash Player y AIR pueden detectar la configuración de la orientación, por lo que se puede generar lógica en el código ActionScript para ajustar el tamaño del contenido o la rotación como respuesta a la configuración de la impresora, como se muestra en el siguiente ejemplo:

if (myPrintJob.orientation == PrintJobOrientation.LANDSCAPE) 
{ 
    mySprite.rotation = 90; 
}
Nota: si va a leer la configuración del sistema para la orientación de contenido en papel, recuerde importar la clase PrintJobOrientation . La clase PrintJobOrientation proporciona valores constantes que definen la orientación del contenido en la página. La case se importa utilizando la siguiente instrucción:
import flash.printing.PrintJobOrientation;

Respuesta a la altura y anchura de la página

A través de una estrategia similar a la gestión de la configuración de orientación de la impresora, se puede leer la configuración de altura y anchura de la página, y responder a sus valores mediante la incorporación de lógica en una sentencia if. El siguiente código muestra un ejemplo:

if (mySprite.height > myPrintJob.pageHeight) 
{ 
    mySprite.scaleY = .75; 
}

Además, la configuración de márgenes de una página puede determinarse comparando las dimensiones de la página y del papel, como se muestra en el siguiente ejemplo:

margin_height = (myPrintJob.paperHeight - myPrintJob.pageHeight) / 2; 
margin_width = (myPrintJob.paperWidth - myPrintJob.pageWidth) / 2;