AX 2009检查(检查)徽标无法正确打印

时间:2011-10-10 19:11:16

标签: axapta

我们在AX 2009中设置了一个带有透明背景的.gif图像作为徽标。当我们打印支票我们用户的一些获取支票时,徽标的透明背景部分打印为黑色。检查签名也是如此。

如果我将GIF直接打印到同一台打印机上,它会打印得很好(图像的透明部分没有黑色)

这让我相信它是AX中的用户设置,考虑到它只发生在我们的一些用户身上,并且原始gif打印得很好。

我看到徽标存储在数据类型 image 字段的BANKCHEQUELAYOUT表中。看起来这是一个AX范围的记录(不是每个用户),所以我不认为问题是这个值。

有没有人遇到过这个问题?我应该看一下用户级别的打印设置吗?

2 个答案:

答案 0 :(得分:1)

首先,检查位图控件的BackStyle属性是否设置为Transparent。这是启用任何报告或表单图像控件透明度的必需步骤。

我没有尝试使用GIF图像文件的透明度。但是,在以前版本的AX中,GIF不是受支持的图像文件,可能存在透明度错误。

我的第一个建议是将GIF转换为PNG,更新支票布局中的图片,然后重试。

我的第二个选择是删除透明度并替换为背景颜色(白色?)。

更新:AX将图像存储在CompanyImage表中。可以通过实施此方法来计算图像的大小:

display ImageSize imageSize()
{
    ImageSize size;
    BinData b;
    if (this.Image)
    {
        b = new BinData();
        b.setData(this.Image);
        size = b.size();
    }
    return size;
}

不幸的是new Image(this.Image).size()不起作用。将方法拖到AutoReport字段组,然后在表浏览器中打开表。

在我的示例中,PNG文件的大小为1476字节,BMP文件的大小为42062字节。

答案 1 :(得分:1)

最后得到了这个,感谢Jan的评论。以下是我采取的步骤:

  1. 使用白色背景创建.gif图像。
  2. 将检查报告中图片的BackStyle属性更改为不透明
  3. 在CompanyImage表单的showLogo方法中,添加以下代码行:
  4. logoImage.transparent(真,255,255,255);

    所以完整的showLogo方法如下:

    void  showLogo()
    

    {

    Image   logoImage;
    ;
    try
    {
        element.lock();
        if (imageContainer)
        {
            logoImage = new Image();
            logoImage.setData(imageContainer);
            logoImage.transparent(true,255,255,255);
            image.image(logoImage);
            image.widthValue(logoImage.width());
            image.heightValue(logoImage.height());
        }
        else
        {
            image.imageResource(0);
            image.widthValue(32);
            image.heightValue(32);
        }
    
        element.resetSize();
        element.unLock();
    }
    catch (Exception::Warning)
    {
        throw error(strfmt("@SYS19312", imageFilePathName));
    }
    

    }