Ian

The Flex Print Job class has this property read carefully here.

http://livedocs.macromedia.com/flex/201/langref/mx/printing/FlexPrintJobScaleType.html

and here

http://livedocs.macromedia.com/flex/201/langref/mx/printing/PrintDataGrid.html#sizeToPage


Regards.


--ic

On 2/15/07, Ian Shafer <[EMAIL PROTECTED]> wrote:

  Thanks for the code, but I'm not sure if this solves the problem. I went

to the Flex2 demo
(http://examples.adobe.com/flex2/inproduct/sdk/explorer/explorer.html)
and tried the printing demo. If one prints 3 or more pages, one can see
that the data grid on the second page could have more rows. (This
problem is highlighted when the heading on the first page is large.) In
other words, the height of the data grid is not changing according to
the space available on the page.

With my limited knowledge of Flex2, it seems that the PrintDataGrid
should have a method "fitToPage" or something like that which will
resize it according to the space left on the page.

Ian


Igor Costa wrote:
>
> Here's a short example of PrintJob copied from Components Explorer.
>
> // The function to print the output.
> public function doPrint():void {
>
> var printJob:FlexPrintJob = new FlexPrintJob();
> if (printJob.start()) {
> // Create a FormPrintView control as a child of the
> current view.
> var thePrintView:FormPrintView = new FormPrintView();
> Application.application.addChild (thePrintView);
>
> //Set the print view properties.
> thePrintView.width=printJob.pageWidth;
> thePrintView.height=printJob.pageHeight;
> thePrintView.prodTotal = prodTotal;
> // Set the data provider of the FormPrintView
> component's data grid
> // to be the data provider of the displayed data grid.
> thePrintView.myDataGrid.dataProvider =
> myDataGrid.dataProvider;
> // Create a single-page image.
> thePrintView.showPage("single");
> // If the print image's data grid can hold all the
> provider's rows,
> // add the page to the print job.
> if(!thePrintView.myDataGrid.validNextPage)
> {
> printJob.addObject(thePrintView);
> }
> // Otherwise, the job requires multiple pages.
> else
> {
> // Create the first page and add it to the print job.
> thePrintView.showPage("first");
> printJob.addObject (thePrintView);
> thePrintView.pageNumber++;
> // Loop through the following code until all pages
> are queued.
> while(true)
> {
> // Move the next page of data to the top of
> the print grid.
> thePrintView.myDataGrid.nextPage();
> thePrintView.showPage("last");
> // If the page holds the remaining data, or if
> the last page
> // was completely filled by the last grid
> data, queue it for printing.
> // Test if there is data for another
> PrintDataGrid page.
> if(!thePrintView.myDataGrid.validNextPage)
> {
> // This is the last page; queue it and
> exit the print loop.
> printJob.addObject(thePrintView);
> break;
> }
> else
> // This is not the last page. Queue a middle page.
> {
> thePrintView.showPage ("middle");
> printJob.addObject(thePrintView);
> thePrintView.pageNumber++;
> }
> }
> }
> // All pages are queued; remove the FormPrintView
> control to free memory.
> Application.application.removeChild(thePrintView);
> }
> // Send the job to the printer.
> printJob.send();
> }
>
>
> Best
>
> On 2/14/07, *Ian Shafer* < [EMAIL PROTECTED] <ian%401321.org> <mailto:
[EMAIL PROTECTED] <ian%401321.org>>> wrote:
>
> Hello,
>
> I'm using PrintDataGrid to print a DataGrid and everything is working
> fine except one thing. The size (height) of the PrintDataGrid same
> one
> every page. This would be okay if I were just printing the
> PrintDataGrid, but I have a header on the first page (and footers on
> subsequent pages).
>
> The example code for this (in the "Developing Flex Applications"
> guide)
> is great and I followed it to a tee (I think). My current solution
> is to
> manually set the height of the PrintDataGrid after the first page.
> This
> is a lame solution because I'm doing something like this:
>
> printView.reportsTable.height = printJob.pageHeight - 20;
>
> (If I set the height to printJob.pageHeight I get a scrollbar and my
> footer (with page number) doesn't show.)
>
> Any idea what's causing this?
>
> Here's the pertinent code snippets:
>
> ** Application View **
>
> private function printTable():void {
> var printJob:FlexPrintJob = new FlexPrintJob();
>
> if (!printJob.start()) { return; }
>
> var printView:CategoryOrderReportTablePrintView = new
> CategoryOrderReportTablePrintView();
> var pageNumber:int = 1;
>
> addChild(printView);
>
> printView.width = printJob.pageWidth;
> printView.height = printJob.pageHeight;
> printView.reports = _reports;
> printView.pageNumber = pageNumber;
> printView.totals = this.calcTotals(this._reports);
> printView.description = this.formatDate(_options.startDate) + " - "
> + this.formatDate(_options.endDate);
>
> printJob.addObject(printView);
>
> while (printView.reportsTable.validNextPage) {
> pageNumber++;
> printView.reportsTable.nextPage();
> printView.reportsTable.height = printJob.pageHeight - 20;
> printView.pageNumber = pageNumber;
> printJob.addObject(printView)
> }
>
> printJob.send();
> removeChild(printView);
> }
>
> ** Print View **
>
> public function set pageNumber(pageNumber:int):void {
> footer.pageNumber = pageNumber;
>
> if (pageNumber == 1) {
> header.includeInLayout = true;
> header.visible = true;
> footer.includeInLayout = false;
> footer.visible = false;
> } else {
> header.includeInLayout = false;
> header.visible = false;
> footer.includeInLayout = true;
> footer.visible = true;
> }
> validateNow();
> }
>
>
>
>
> --
> ----------------------------
> Igor Costa
> www.igorcosta.org <http://www.igorcosta.org>
> www.igorcosta.com <http://www.igorcosta.com>
> skype: igorpcosta
>




--
----------------------------
Igor Costa
www.igorcosta.org
www.igorcosta.com
skype: igorpcosta

Reply via email to