imprimer un jpg

voix
0

J'ai essayé d'imprimer un jpg dynamiquement chargé et pour une raison quelconque, il est l'impression jamais à l'échelle, ne sais pas ce que je fais mal alors voici ce que je l'ai fait jusqu'à présent

var request:URLRequest = new URLRequest(getAbsPath(pages/ + pagePrint + _big.jpg));
var loader:Loader = new Loader();
loader.load(request);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);

var frame:Sprite = new Sprite()
function completeHandler(event:Event):void {

    var picture:Bitmap = Bitmap(loader.content);
    var bitmap:BitmapData = picture.bitmapData;
    var matrix:Matrix = new Matrix();
    matrix.scale(1, 1);

    frame.graphics.beginBitmapFill(bitmap, matrix, true);
    frame.graphics.drawRect(0, 0, bitmap.width, bitmap.height);
    frame.graphics.endFill();
    addChild(frame);
    frame.visible = false;

    printPage();    
}
function printPage ():void {
    var myPrintJob:PrintJob = new PrintJob();
    var options:PrintJobOptions = new PrintJobOptions();
    options.printAsBitmap = true;

    myPrintJob.start();

    try {
        myPrintJob.addPage(frame, null, options);
    }
    catch(e:Error) {
        trace (Had problem adding the page to print job:  + e);
    }

    try {
        myPrintJob.send();
    }
    catch (e:Error) {
        trace (Had problem printing:  + e);    
    }
}

Pour une raison qui ne prend qu'une partie de l'image et il souffle pour remplir une page entière ... les dimentions jpg sont 1280x1656 et je voudrais à imprimer l'ensemble jpg ... Toutes les idées que je fais mal?

Créé 28/09/2009 à 15:27
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
0

Je devine que votre image est envoyée au spooler d'impression à une résolution par défaut de 72dpi, il est donc sortir énorme (à 1280x1656 qui est une image 17,777" x 23" ) donc je devine que vous voyez que la partie supérieure gauche plus partie de montage sur la page imprimée physique.

Pour résoudre ce problème, vous pouvez redimensionner l'image vers le bas pour tenir sur la page (probablement à environ .45 échelle au moins) qui sortira avec moins de cotisations de détail pour qu'il soit encore une résolution 72dpi assez faible. Ou vous pouvez utiliser la deuxième approche, qui consiste à définir le DPI pour être plus précis pour votre taille d'impression souhaitée (probablement 300dpi ou si)

Si vous devez réinitialiser le DPI interne de l'image, la seule méthode que je l'ai vu (mais pas personnellement essayé) est la classe ImageSnapshot dans le SDK Flex. Vous pouvez l'utiliser pour extraire BitmapData à un DPI spécifique, vous pouvez ensuite envoyer ce BitmapData au PrintJob.

ImageSnapshot.captureBitmapData () Documentation

En outre, une plus rapide plus facile chose à essayer ... Si le fichier d'image JPEG que vous chargez a un DPI plus élevé, ce qui est probablement être perdu lorsque vous faites votre beginBitmapFill (). Pourriez-vous essayer d'ajouter Bitmap comme un enfant de « cadre » plutôt que le dessiner? Cela peut préserver la résolution appropriée pour vous.

Créé 29/09/2009 à 17:30
source utilisateur

voix
0

J'ÉCHELLE le clip de façon appropriée avant d'essayer l'impression.

Vous pouvez obtenir la largeur de pixel et la hauteur de la page de sortie avec:

myPrintJob.pageWidth
myPrintJob.pageHeight

Et régler la .scaleX et .scaleY du cadre sur cette base.

(Manipulation d'impression est notoirement déchets dans chaque version du Flash Player, vous devez faire beaucoup de travail vous-même, j'ai peur ...)

Créé 29/09/2009 à 17:11
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more