Apache flex Flex:摆脱";警告:过滤器将不会渲染。显示对象';s过滤的维度…“;错误

Apache flex Flex:摆脱";警告:过滤器将不会渲染。显示对象';s过滤的维度…“;错误,apache-flex,layout,printing,flex3,Apache Flex,Layout,Printing,Flex3,打印时(我想在调用FlexPrintJob.addObject()时),我会得到以下结果: 警告:过滤器将不会渲染。DisplayObject的过滤尺寸(33241740)太大,无法绘制 我不知道它认为是33241740。我传递给它的mx:Box对象大约是600x100 我想知道这个问题是否与我遇到的另一个问题有关。打印的内容在我想要打印的内容的底部和右侧有一个额外的边框。我希望理解这条信息能解决我的问题 我正在使用Flex3.5SDK 下面是一个简化版本的代码,它仍然允许出现此问题: <

打印时(我想在调用FlexPrintJob.addObject()时),我会得到以下结果:

警告:过滤器将不会渲染。DisplayObject的过滤尺寸(33241740)太大,无法绘制

我不知道它认为是33241740。我传递给它的mx:Box对象大约是600x100

我想知道这个问题是否与我遇到的另一个问题有关。打印的内容在我想要打印的内容的底部和右侧有一个额外的边框。我希望理解这条信息能解决我的问题

我正在使用Flex3.5SDK

下面是一个简化版本的代码,它仍然允许出现此问题:

<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"     
            title="FPL Flight Strip" 
        showCloseButton="true" 
        borderAlpha="1"
        borderColor="{BrandGlobals.COLOUR_DARK}" 
        borderThicknessBottom="1" 
    borderThicknessLeft="1" 
    borderThicknessRight="1" 
    borderThicknessTop="0" 
    dropShadowEnabled="true"  
    fontSize="{AppGlobals.fntSize}" 
    backgroundAlpha="1.0" 
    alpha="1.0"
    creationComplete="init()"
    close="PopUpManager.removePopUp(this);">
<mx:Script>
    <![CDATA[
        import mx.managers.PopUpManager;
        import mx.printing.FlexPrintJobScaleType;
        import mx.printing.FlexPrintJob;


        private function init():void
        {
            this.setStyle('fontFamily', 'Arial');
        }

        private function printData():void
        {
            var dbPrintJob: FlexPrintJob = new FlexPrintJob();
            if (dbPrintJob.start()) 
            {
                try 
                {
                    dbPrintJob.addObject(boxPrint, FlexPrintJobScaleType.NONE);
                }
                catch (e:Error) 
                {
                    //trace(e);
                }
                dbPrintJob.send();
            }
        }

    ]]></mx:Script>
     <mx:VBox width="600" height="100" horizontalAlign="center" verticalAlign="middle" backgroundColor="#FFFFFF" verticalGap="1" paddingLeft="2" paddingRight="2" paddingTop="2" paddingBottom="2">
        <mx:Box id="boxPrint" width="100%" height="100%" backgroundColor="#FFFFFF">
            <mx:Box id="box" width="100%" height="100%"/>
        </mx:Box>
    </mx:VBox>
    <mx:ControlBar width="100%" barColor="#E8E8E8" paddingBottom="0" paddingLeft="0" paddingRight="0" paddingTop="0">
        <mx:VBox width="100%" height="100%" horizontalAlign="left" backgroundColor="#E8E8E8" paddingTop="5" paddingBottom="5" paddingRight="20" paddingLeft="20">
            <mx:HBox width="100%" height="100%">
                <mx:Button label="Print Strip" fontFamily="Arial" click="printData()" width="100" height="25" />
            </mx:HBox>
        </mx:VBox>
    </mx:ControlBar>
</mx:TitleWindow>

您可以尝试使用简单的字体,如“Arial”,如果错误仍然出现,请尝试使用,以排除字体以外的问题。
如果您遇到此问题,请避免使用任何组件,以查看是否可以消除此问题。

我无法在Flex 3.6中重现过滤器错误。您无法升级吗?据我所知,向后兼容性应该很少有问题,除非您正在严重重写mx_internal

然而,我确实遇到了边界问题。这与添加对象的方式有关。最好将要打印的内容包装在容器中,然后将容器添加到打印作业中。这让您可以控制诸如边距和间距之类的内容

private function printData():void
{
    var dbPrintJob:FlexPrintJob = new FlexPrintJob();

    if(dbPrintJob.start())
    {
        try
        {
            dbPrintJob.addObject(this.canvas, FlexPrintJobScaleType.NONE);
        }
        catch(e:Error)
        {
            //trace(e);
        }
        dbPrintJob.send();
    }
}

<mx:Canvas id="canvas" width="100%" height="100%">
    <mx:Box id="boxPrint" top="10" left="10" bottom="10" right="10" backgroundColor="#FFFFFF">
        <mx:Box id="box" width="100%" height="100%" />
    </mx:Box>
</mx:Canvas>
私有函数printData():void
{
var dbPrintJob:FlexPrintJob=new FlexPrintJob();
if(dbPrintJob.start())
{
尝试
{
dbPrintJob.addObject(this.canvas,FlexPrintJobScaleType.NONE);
}
捕获(e:错误)
{
//微量元素(e);
}
dbPrintJob.send();
}
}
使用画布绘制背景,并将子对象分隔到所需的打印布局中

我还建议快速阅读以下内容:


我以前从未见过它。我建议发布一个复制错误的测试用例。我在哪里使用这种字体?我在这个控件中唯一有文本的地方是标题和打印按钮。因此,我将主弹出窗口和按钮的fontStyle设置为Arial,这没有什么区别。我不知道你说的“组件”是什么意思。此弹出窗口必须是一个组件。如果你想看到一个演示问题的精简版本,我将根据drkstr1的请求发布代码。如果你使用任何特定的源代码,字体在某些情况下会产生问题。对于组件,自定义组件会说话。我等待你的代码。-regarsFlash Builder只提供3.5、4.0和4.1 SDK。我厌倦了你给我的东西,但那只是一个很厚的灰色边框。我将那些顶部、左侧、按钮、右侧属性(我从未理解这些属性)更改为0,这具有非常奇怪的效果。在打印输出上,它在画布右侧放置了一个几乎不明显的垂直边框。奇怪的是,当我打印到MicrosoftXPS writer时,这一行根本没有出现。我猜软件打印机驱动程序不会创建发送到打印机的内容的精确图像。您的解决方案不会影响错误消息,但我并不真正关心这一点。只要客户不抱怨边境,我就不会再花时间了。谢谢。@Penguilust FYI Flash Builder 4.6是从4.5免费升级而来,默认包含3.6 SDK。您还可以安装其他SDK: