Configuração de tamanho, escala e orientação

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

A seção Impressão de uma página fornece detalhes das etapas de um trabalho de impressão básico, em que a saída reflete diretamente o equivalente impresso do tamanho e posição da tela da entidade gráfica especificada. No entanto as impressoras usam resoluções diferentes para impressão e podem ter configurações que afetam contrariamente a aparência da entidade gráfica impressa.

Os tempos de execução do Flash podem ler configurações de impressão de um sistema operacional, mas observe que essas propriedades são somente leitura: embora você possa responder a seus valores, não pode defini-los. Portanto, por exemplo, você pode localizar a configuração de tamanho da página da impressora e ajustar seu conteúdo para se adequar ao tamanho. Também é possível determinar as configurações de margem e de orientação da página da impressora. Para responder às configurações da impressora, especifique uma área de impressão, ajuste a diferença entre a resolução da tela e as medidas de ponto da impressora ou transforme o conteúdo para atender às configurações de tamanho ou de orientação da impressora do usuário.

Uso de retângulos para a área de impressão

O método PrintJob.addPage() permite especificar a região de uma entidade gráfica que você deseja que seja impressa. O segundo parâmetro, printArea, está na forma de um objeto Rectangle. Há três opções para fornecer um valor para esse parâmetro:

  • Crie um objeto Rectangle com propriedades específicas e, em seguida, use esse retângulo na chamada de addPage() , conforme no exemplo a seguir:

    private var rect1:Rectangle = new Rectangle(0, 0, 400, 200); 
    myPrintJob.addPage(sheet, rect1);
  • Se você ainda não tiver especificado um objeto Rectangle, poderá fazer isso dentro da própria chamada, como no exemplo a seguir:

    myPrintJob.addPage(sheet, new Rectangle(0, 0, 100, 100));
  • Se você planejar fornecer valores para o terceiro parâmetro na chamada de addPage() , mas não desejar especificar um retângulo, poderá usar null para o segundo parâmetro, como no exemplo a seguir:

    myPrintJob.addPage(sheet, null, options);

Comparação de pontos e pixels

A largura e a altura do retângulo são valores em pixels. Uma impressora usa pontos como unidades de medida de impressão. Os pontos têm tamanho físico fixo (1/72 polegadas), mas o tamanho de um pixel na tela depende da resolução da tela específica. A taxa de conversão entre pixels e pontos depende das configurações da impressora e se a entidade gráfica está dimensionada. Um sprite não dimensionado, com 72 pixels de largura, terá uma polegada de largura na impressão, com um ponto igual a um pixel, independentemente da resolução da tela.

Você pode usar as equivalências a seguir para converter polegadas ou centímetros em twips (1/20 de um ponto) ou pontos:

  • 1 ponto = 1/72 pol = 20 twips

  • 1 pol = 72 pontos = 1440 twips

  • 1 centímetro = 567 twips

Se você omitir o parâmetro printArea , ou se ele for passado incorretamente, a área total da entidade gráfica será impressa.

Escala

Para dimensionar um objeto Sprite antes de imprimi-lo, defina as propriedades da escala (consulte Manipulação do tamanho e dimensionamento de objetos ) antes de chamar o método PrintJob.addPage() e defina-as novamente como seus valores originais após a impressão. A escala de um objeto Sprite não tem nenhuma relação com a propriedade printArea . Em outras palavras, se você especificar uma área de impressão de 50 x 50 pixels, serão impressos 2500 pixels. Se você dimensionar o objeto Sprite, serão impressos os mesmos 2500 pixels, mas o objeto Sprite será impresso no tamanho dimensionado.

Para obter um exemplo, consulte Exemplo de impressão: escala, corte e resposta .

Impressão de orientação paisagem ou retrato

Como o Flash Player e o AIR podem detectar as configurações de orientação, você pode criar lógica no ActionScript para ajustar o tamanho ou a rotação do conteúdo em resposta às configurações da impressora, conforme ilustrado no exemplo a seguir:

if (myPrintJob.orientation == PrintJobOrientation.LANDSCAPE) 
{ 
    mySprite.rotation = 90; 
}
Nota: Se você planeja ler a configuração do sistema para obter a orientação do conteúdo no papel, lembre-se de importar a classe PrintJobOrientation . A classe PrintJobOrientation fornece valores de constante que definem a orientação do conteúdo na página. Importe a classe usando a seguinte instrução:
import flash.printing.PrintJobOrientation;

Resposta à altura e largura da página

Usando uma estratégia semelhante à manipulação das configurações de orientação da impressora, você pode ler as configurações de altura e largura da página e responder a elas incorporando alguma lógica em uma instrução if . O código a seguir mostra um exemplo:

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

Além disso, as configurações da margem de uma página podem ser determinadas comparando as dimensões da página e do papel, conforme ilustrado no exemplo a seguir:

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