afdrukken van een jpg

stemmen
0

Ik heb geprobeerd om een ​​dynamisch geladen jpg af te drukken en om wat voor reden het is nooit af te drukken op schaal, niet zeker wat ik verkeerd doe dus hier is wat ik tot dusver heb gedaan

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);    
    }
}

Om een ​​of andere reden dat duurt slechts een deel van het beeld en blaast het tot een hele pagina te vullen ... de jpg-formaat is 1280x1656 en ik zou graag zien dat het hele jpg drukken ... Enig idee wat ik verkeerd doe?

De vraag is gesteld op 28/09/2009 om 15:27
bron van user
In andere talen...                            


2 antwoorden

stemmen
0

Ik veronderstel dat uw afbeelding wordt aan de print spooler bij standaard resolutie van 72dpi gestuurd, dus het komt uit enorme (op 1280x1656 dat is een 17,777" x 23" image), dus ik gok dat je ziet alleen de linker bovenhoek meest passend gedeelte op de fysieke afdruk.

Om dit op te lossen, kunt u de schaal van de afbeelding naar beneden aan te passen op de pagina (waarschijnlijk tot ongeveer 0,45 schaal tenminste) dat wordt uitgevoerd met minder detail contributie zal komen om het nog een vrij lage 72 dpi resolutie wordt. Of u kunt de tweede benadering, die erin bestaat de DPI gebruiken nauwkeuriger voor het gewenste afdrukformaat (waarschijnlijk 300dpi of zo) te zijn

Als u de interne DPI van het beeld te resetten, de enige methode die ik heb gezien (maar niet persoonlijk geprobeerd) is de ImageSnapshot klasse in de Flex SDK. U kunt het gebruiken om te extraheren BitmapData op een specifiek DPI, dan kun je sturen dat BitmapData aan de PrintJob.

ImageSnapshot.captureBitmapData () Documentatie

Ook een snellere makkelijker ding om te proberen ... Als de JPEG-bestand dat u het laden heeft wel een hogere DPI, dat is waarschijnlijk verloren wanneer je je beginBitmapFill (). Zou je kunnen proberen het toevoegen van de Bitmap als een kind van 'raam' in plaats van het tekenen? Dat kan de resolutie goed voor u te behouden.

antwoordde op 29/09/2009 om 17:30
bron van user

stemmen
0

Ik zou de clip op de juiste wijze schalen voordat u probeert af te drukken.

U kunt de breedte pixel en hoogte van de uitgang pagina krijgen met:

myPrintJob.pageWidth
myPrintJob.pageHeight

En stel de .scaleX en .scaleY van het frame op basis van dat.

(Print handling is notoir rommel in elke versie van de Flash Player, je moet een hoop werk te doen zelf, ben ik bang ...)

antwoordde op 29/09/2009 om 17:11
bron van user

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