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:
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;
|
|
|
|
|