0

我有一个使用 Flex 4.6.0 SDK 的 mx:application 并且仅在 Chrome 中遇到了 FlexPrintJob 的一些问题。FlexPrintJob 在 chrome 中运行良好,直到几周前(我没有对代码进行任何更改),现在我开始经历“冲击波崩溃”。

打印时我正在使用:

  • 第一个标题页模板
  • 处理 DataGrid 的中间部分模板。这是使用 PrintDataGrid 并循环通过 dataProvider 以查看数据是否适合一页,如果不适合则创建另一页。
  • 条款和条件最后一页模板

问题:我已将其范围缩小到这一点,当数据(中间部分)超过一页并尝试创建另一页时,我在 chrome 中收到 Shockwave Crash 错误。这刚刚开始发生,我猜是 chrome 更新……对不起,如果我遗漏了一些东西并且我的描述缺乏细节。如果需要,我可以添加更多说明。

有什么想法吗?

谢谢!

--萌

public function doPrint(): void {
    // Create a FlexPrintJob instance.


    var printJob: FlexPrintJob = new FlexPrintJob();

    // Start the print job.
    if (printJob.start()) {
        // Create a FormPrintView control as a child of the application.
        var thePrintView: FormPrintView = new FormPrintView();

        addElement(thePrintView);

        // Set the print view properties.
        thePrintView.width = printJob.pageWidth;
        thePrintView.height = printJob.pageHeight;
        thePrintView.horizontalAlign = "center";

        // Set the data provider of the FormPrintView  component's DataGrid to be the data provider of the displayed DataGrid.
        thePrintView.summaryGrid.dataProvider = summaryGrid.dataProvider;

        // Create a single-page image.
        thePrintView.showPage("single");

        // If the print image's DataGrid can hold all the  data provider's rows, add the page to the print job. 
        if (!thePrintView.summaryGrid.validNextPage) {
            printJob.printAsBitmap = false;
            printJob.addObject(UIComponent(mainPagePrint), FlexPrintJobScaleType.MATCH_WIDTH);
            printJob.addObject(thePrintView);
            printJob.addObject(UIComponent(terms), FlexPrintJobScaleType.MATCH_WIDTH);
        }
        // Otherwise, the job requires multiple pages.
        else {
            // Create the first page and add it to the print job.
            thePrintView.showPage("first");
            printJob.printAsBitmap = false;
            printJob.addObject(UIComponent(mainPagePrint), FlexPrintJobScaleType.MATCH_WIDTH);
            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 PrintDataGrid.
                thePrintView.summaryGrid.nextPage();
                printJob.printAsBitmap = false;
                // Try creating a last page.
                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.summaryGrid.validNextPage) {
                    // This is the last page; queue it and exit the print loop.
                    printJob.addObject(thePrintView);
                    printJob.addObject(UIComponent(terms), FlexPrintJobScaleType.MATCH_WIDTH);
                    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.
        removeElement(thePrintView);
    }
    // Send the job to the printer.
    printJob.send();

}
4

1 回答 1

0

我最终将事情一一拆开并弄清楚它是什么 - 问题是FormPrintView。我的 PrintDataGrid 中有一些不需要的属性,我认为这些属性最初是从我的应用程序的主数据网格中复制而来的。

我不确定为什么它以前可以工作,现在才开始崩溃,但无论哪种方式,我一开始就不应该拥有其中的一些属性。

谢谢!

--萌

<mx:PrintDataGrid  id="summaryGrid" width="100%" height="100%" sizeToPage="true"
                  alternatingItemColors="[#f7f7f7, #ffffff]" alpha="0.8"
                  borderStyle="solid" borderThickness="1" color="#646262"
                  creationComplete="summaryGrid_creationCompleteHandler(event)" fontSize="9"
                  headerColors="[#ffffff, #e8e8e8]" headerHeight="25" paddingTop="5"
                  rowHeight="55" textAlign="center" wordWrap="true" paddingRight="-1" >
于 2016-01-06T19:40:15.923 回答