2010-02-10 3 views
0

J'essaie d'imprimer un fichier SWF et j'ai rencontré des problèmes. Lorsque vous utilisez la fonction Imprimer dans le navigateur, le fichier SWF est déformé et n'est pas mis à l'échelle correctement. J'ai donc essayé d'implémenter une fonction d'impression en utilisant Actionscript à la place.Problèmes lors de l'impression d'un fichier SWF dans un navigateur

Les différentes approches que j'ai prises sont:

  • Impression à l'aide du menu contextuel contextuel de clic de Flash Player et choisissez Imprimer. Cela fonctionne presque comme prévu, mais il aplatit les fichiers PNG transparents et n'est pas mis à l'échelle correctement.
  • Création d'un FlexPrintJob et ajout du composant au travail. Ne redimensionnera pas le composant pour l'adapter à la page, même si j'ai défini FlexPrintJobScaleType.SHOW_ALL sur le travail d'impression.
  • Création d'une PrintView contenant une image. Ensuite, prenez une capture d'écran du composant et définissez-le comme Image dans PrintView. Lorsque cela est fait, je crée un nouveau FlexPrintJob et l'envoie. Cela semble fonctionner la plupart du temps, mais la mise à l'échelle va déformer et rendre les petits éléments (comme le texte) très mauvais.

Le code pour l'impression ressemble à ceci:

var pj:FlexPrintJob = new FlexPrintJob(); 
if (pj.start()) 
{ 
pj.addObject(componentToBePrinted, FlexPrintJobScaleType.SHOW_ALL); 
    pj.send(); 
} 

Ce que je voudrais faire est d'obtenir le menu contextuel du clic droit de travailler, et je veux dire le réglage de la mise à l'échelle du fichier SWF. Est-ce possible? Existe-t-il d'autres alternatives lors de l'impression d'un fichier SWF? Qu'est-ce que je fais mal? Lorsque j'essaie, j'imprime sur un PDF, mais je ne pense pas que cela changera les résultats.

Répondre

0

Vous devez adapter votre travail d'impression pour ce que vous voulez dans FlexPrintJobScaleType:

MATCH_WIDTH

(par défaut) Scales l'objet pour remplir la largeur de la page disponible. Si la hauteur de l'objet résultant dépasse la hauteur de la page , la sortie s'étend sur plusieurs pages .

MATCH_HEIGHT

redimensionne l'objet pour remplir la hauteur de page disponible . Si la largeur de l'objet résultant dépasse la largeur de la page , la sortie s'étend sur plusieurs pages .

SHOW_ALL

redimensionne l'objet pour tenir sur une seule page , remplissant une dimension; c'est-à-dire, il sélectionne la plus petite des types MATCH_WIDTH ou MATCH_HEIGHT .

FILL_PAGE

Scales l'objet à remplir au moins une complètement la page; c'est-à-dire qu'il sélectionne le plus grand des types d'échelle MATCH_WIDTH ou MATCH_HEIGHT.

AUCUN

N'échelle pas la sortie. La page imprimée a les mêmes dimensions que l'objet à l'écran. Si l'objet hauteur, largeur ou les deux dimensions dépassent la largeur ou la hauteur de la page, la sortie s'étend sur plusieurs pages.

Voir http://livedocs.adobe.com/flex/3/html/help.html?content=printing_3.html pour plus d'informations à ce sujet.

Questions connexes