我正在尝试打印多页FlexPrintJob,其中包括第一页,多个标签,然后是PrintDataGrid。除了PrintDataGrid仅使用所有页面的一半页面打印外,它都打印出来。
我知道它与我在第1页上打印的标签有关,因为将它们关闭或隐藏它们可以解决问题并且网格会打印整页所有页面。
我在网格和标签周围尝试了各种容器,包括VBox,VGroup,Group,并为某些容器指定了height =“100%”的不同组合。
是否根本无法在第1页上打印半页变量/标签,然后在同一页面上启动数据网格(半页值),然后让它在以下页面上转到整页? / p>
这是我的打印作业代码:
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。
答案 0 :(得分:0)
如果我没记错的话,我过去修了一个类似的情况,为我的mx:PrintDataGrid指定一个minHeight属性,就像这样..
<mx:PrintDataGrid id="printViewDataGrid" width="100%" minHeight="500">
...
</mx:PrintDataGrid>
祝你好运!