Flex - FlexPrintJob, как правильно распечатать группу полей и PrintDataGrid? - PullRequest
0 голосов
/ 01 февраля 2012

Я пытаюсь распечатать многостраничный FlexPrintJob, который включает на первой странице несколько этикеток, а затем PrintDataGrid. Это все печатает, за исключением того, что PrintDataGrid печатает только используя половину страницы на всех страницах.

Я знаю, что это связано с этикетками, которые я печатаю на странице 1, потому что их снятие или скрытие устраняет проблему, и сетка печатает всю страницу на всех страницах.

Я пробовал различные контейнеры вокруг сетки и надписей, включая VBox, VGroup, Group, и указывал различные комбинации высоты = "100%" для некоторых контейнеров.

Разве просто невозможно напечатать полстраницы переменных / меток на странице 1, затем запустить сетку данных на той же странице (стоит полстраницы), но затем перейти на полную страницу на следующих страницах?

Вот мой код задания на печать:

   var printJob:FlexPrintJob = new FlexPrintJob();
    if (printJob.start()) {
var thePrintView:printViewEventUser = new printViewEventUser(); // Create a FormPrintView control as a child of the application.
        addElement(thePrintView);
                        thePrintView.width=printJob.pageWidth; 
                        thePrintView.height=printJob.pageHeight;
                        thePrintView.parentEncounter=parentEncounter;  //pass in my object for the labels to print
                        thePrintView._currentRec=_currentRec;  //pass in my object for the labels to print

                        thePrintView.myDataGrid.dataProvider = bedSearchEditList._recs;
                        thePrintView.showPage("single"); // Create a single-page image.
                        if(!thePrintView.myDataGrid.validNextPage) // If the print image's DataGrid can hold all the data provider's rows, add the page to the print job. 
                        {
                            printJob.addObject(thePrintView,FlexPrintJobScaleType.NONE);
                        }
                        else // Otherwise, the job requires multiple pages.
                        {
                            thePrintView.showPage("first"); // Create the first page and add it to the print job.
                            printJob.addObject(thePrintView);
                            thePrintView.pageNumber++;
                            while(true) //queue pages
                            {
                                thePrintView.myDataGrid.nextPage(); // Move the next page of data to the top of the PrintDataGrid.
                                thePrintView.showPage("last");   // Try creating a last page.
                                if(!thePrintView.myDataGrid.validNextPage) // 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.
                                {   
                                    printJob.addObject(thePrintView,FlexPrintJobScaleType.MATCH_WIDTH); // This is the last page; queue it and exit the print loop.
                                    break;
                                }
                                else // This is not the last page. Queue a middle page. 
                                {
                                    thePrintView.showPage("middle");
                                    printJob.addObject(thePrintView,FlexPrintJobScaleType.MATCH_WIDTH);
                                    thePrintView.pageNumber++;
                                }
                            }
                        }

                        removeElement(thePrintView);  

                }
                printJob.send(); // Send the job to the printer.

Мой объект просмотра печати - это просто мои метки, а затем PrintDataGrid.

1 Ответ

0 голосов
/ 03 июля 2012

Если я правильно помню, я исправил подобную ситуацию в прошлом, указав свойство minHeight для моего mx: PrintDataGrid, как это ..

<mx:PrintDataGrid id="printViewDataGrid" width="100%" minHeight="500">
...
</mx:PrintDataGrid>

Удачи!

...