flex-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Arne Broedel <arne.broe...@googlemail.com>
Subject Re: Printing at a set DPI
Date Wed, 05 Feb 2014 18:46:17 GMT
I was working on a project some time ago and had problems with bad quality.
I dont have it on my computer here but I remember that I scaled all objects
up before printing to get a better resolution in the pdf or printout.
What I did maybe a poor solution but it worked okay for me.
Something like this:
           function
addDisplayObjectToPdfWith300DPIResolution(displayObj:DisplayObject,
pdfTarget:PDF):void{
                        var scaleFactor:Number=Math.round(300/72);
var matrix:Matrix=new Matrix(scaleFactor,0,0,scaleFactor);
var data:BitmapData = new BitmapData(displayObj.width*scaleFactor,
displayObj.height*scaleFactor, false);
data.draw(displayObj,matrix,null,null,null,false);
var encodedImage: ByteArray =data.encode(data.rect, new
PNGEncoderOptions());
pdfTarget.addImageStream(encodedImage,ColorSpace.DEVICE_RGB,pdfResize);
                     }

But I'm not too sure about it.


2014-02-03 Alex Harui <aharui@adobe.com>:

>
>
> On 2/2/14 2:07 PM, "jude" <flexcapacitor@gmail.com> wrote:
>
> >So you're saying if I get a page size that is more than 72x8.5 by 72x11
> >then I could be printing at a higher DPI?
>
> Yes, that's my understanding, but I could certainly be wrong.
>
> >And you're saying the page size
> >that's returned may not exactly be 72x8.5 or 300x8.5?
> >I'm guessing that
> >would be because of the margins and options the user chosen in the print
> >dialog. I'll have to check.
> That would be my guess as well.
>
>
> >
> >But that means by the time the user finally presses the print button on
> >the
> >OS print dialog the DPI is set in stone.
> That's my understanding as well, because I think you get to choose the DPI
> in the print dialog via some sort of combination of page setup and printer
> settings in the OS.
>
> >That's when we get to add and
> >scale the display objects we want to print. It sounds like then if I scale
> >the display object after getting the page size information it won't change
> >the DPI of the actual printout but will give me enough information to know
> >what it is.
> >
> >The way I've been testing this is by choosing the Open as PDF option in
> >the
> >print dialog but I think I'll have to do some print outs.
> What are you seeing for page sizes when PDF printing?  Also, it may matter
> if you are doing printAsBitmap or not.  If you don't choose printAsBitmap,
> then I think the player will try to re-draw everything at the print
> driver's DPI.
> >
> >Do you know why certain things like Button would not look correctly in the
> >printout? It looks like the button was vectorized (actual graphics data or
> >commands were used) but not all of them. for example, the button has a
> >thicker border than normal and it's label is text selectable but the
> >button background is missing. in the PDF the button scales up as a vector
> >would. does ui component bitmap capture highlight have anything to do with
> >it?
> On a printout the label is text selectable?  Or in a PDF?  Maybe the
> player doesn't know how to print gradients in a way that PDF can
> understand.  I think border thickness can be affected by destination DPI
> and how antialiasing and other colors gets computed.  I thought we did see
> artifacts like that on screen when cacheAsBitmap is on.
>
> -Alex
> >
> >On Wednesday, January 29, 2014, Alex Harui <aharui@adobe.com> wrote:
> >
> >> I'm definitely not the expert on printing, but in my limited experience,
> >> after the call to flexprintjob.start() you now know the page size.
> >>IIRC,
> >> the page size often has an unexpected size.  Like if you think you've
> >>used
> >> the PrintDialog to set up a 300 dpi print on an 8.5x11 inch page, you
> >>don't
> >> get a page size of (300x8.5 by 300x11). But I could be wrong about that.
> >>  But I don't think it is 72*8.5 by 72x11.  Or is it?
> >>
> >> IIRC, the next step is to generate a display object to pass to
> >> flexprintjob.  If you generate a display object that is larger than the
> >> page size, it will get clipped or print on multiple pages.  If you scale
> >> the children being put in this display object, then it should print with
> >> the scaled child.  What I don't know is if that scaling will do the
> >>right
> >> thing for a bitmap.
> >>
> >> -Alex
> >>
> >>
> >>
> >> From: jude <flexcapacitor@gmail.com <javascript:;><mailto:
> >> flexcapacitor@gmail.com <javascript:;>>>
> >> Reply-To: "users@flex.apache.org <javascript:;><mailto:
> >> users@flex.apache.org <javascript:;>>"
> >><users@flex.apache.org<javascript:;>
> >> <mailto:users@flex.apache.org <javascript:;>>>
> >> Date: Wednesday, January 29, 2014 12:58 PM
> >> To: "users@flex.apache.org
> >><javascript:;><mailto:users@flex.apache.org<javascript:;>>"
> >> <users@flex.apache.org
> >><javascript:;><mailto:users@flex.apache.org<javascript:;>
> >> >>
> >> Subject: Re: Printing at a set DPI
> >>
> >> It does but I'm not sure how that would help. Also, it sends it after
> >>you
> >> send the job to the printer. The whole thing is somewhat confusing. In
> >> Photoshop you can specify the width, height and DPI of a document before
> >> you even start. Then later when you are ready to print the print dialog
> >> shows the width and height and DPI. If you change the scale or width or
> >> height in the print dialog the DPI also changes. For example, it scaled
> >>a
> >> large image to fit the page and it went from 72DPI to 176DPI.
> >>
> >> Then in the OS print dialog, nestled 3 layers deep in the menus, there's
> >> an option to change the print quality (DPI). There's fast draft, fast
> >> normal, normal, automatic, best and maximum DPI. If you dig deeper you
> >>can
> >> check the printer settings and it will show a DPI value for the preset.
> >>
> >> [Inline image 3]
> >>
> >>
> >> Here's the code I'm using:
> >>
> >> var printableObject:IUIComponent;
> >> var flexPrintJob:FlexPrintJob = new FlexPrintJob();
> >> var printJobStarted:Boolean = flexPrintJob.start();
> >> // after call to start you can get the pageWidth and pageHeight
> >> // log.info<http://log.info>("Print width and height: " +
> >> flexPrintJob.pageWidth + "x" + flexPrintJob.pageHeight);
> >> flexPrintJob.addObject(printableObject,
> >>FlexPrintJobScaleType.MATCH_WIDTH);
> >> flexPrintJob.send();
> >>
> >> What I want to know is if somewhere along the line I can say I'd prefer
> >>to
> >> print this at 300 dpi vs 72dpi (screen)? If I supply it with an object
> >>that
> >> is twice as large as the page size does that double the DPI? Sorry for
> >>the
> >> plethora of questions.
> >>
> >> On Tue, Jan 28, 2014 at 4:59 PM, Alex Harui
> >><aharui@adobe.com<javascript:;>
> >> <mailto:aharui@adobe.com <javascript:;>>> wrote:
> >> I thought PrintJob returned information about page width/height.  And I
> >> thought that was controlled by the print settings in the print dialog.
> >>
> >> -Alex
> >>
> >> On 1/28/14 10:42 AM, "jude" <flexcapacitor@gmail.com <javascript:;>
> >> <mailto:flexcapacitor@gmail.com <javascript:;>>> wrote:
> >>
> >> >Is there a way to print something at a certain DPI with the PrintJob or
> >> >FlexPrintJob classes? From what I've read so far it will print at the
> >> >resolution of the screen. Also, when I print in vector (not
> >>printAsBitmap)
> >> >certain display objects lose their backgrounds. For example, if there
> >>is a
> >> >Spark Button, the gradient doesn't show up.
> >>
> >>
> >>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message