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