使用Crystal报表动态生成ID卡

时间:2011-05-09 11:48:41

标签: c# asp.net crystal-reports id-card

我想为属于不同部门的各个团体成员生成身份证。每种格式都有不同的格式,具体取决于用户选择的内容,例如

enter image description here

我还想要的是照片部分应该在用户想要的区域内调整,来自数据库的照片应该能够根据用户要求裁剪。

这是否可以使用Crystal Report。任何教程和指南都会有所帮助,因为我对使用Crystal Reports绝对不熟悉。 如果不使用= Crystal Reports,那么另一个最佳选择是什么。

请帮助我动态生成身份证。

4 个答案:

答案 0 :(得分:1)

如果您想将其缩小到只有一个报告,您可以使用类似于MD-Tech建议的内容,但根据用户选择使用隐藏或显示的部分。

答案 1 :(得分:1)

有三种选择:

  1. 两份报告 - 就像MD-Tech所暗示的那样。平均而言,两份报告更难维护。
  2. 一个报告/两个部分 - 就像BUkHix所说的那样。您可以在两个单独的部分中创建所需的格式,然后使用参数隐藏/显示所需的部分
  3. 一个报告/两个子报告 - 这为您提供了对格式的最细致的控制。子报告显示也可以通过参数控制。
  4. 在任何情况下,您都可以使用条件公式控制v 11.0中图像的X(距左边距的距离)。在v 12.0中,您还可以使用条件公式控制Width属性。条件公式可以引用参数字段,因此定位可以使用用户提供的值。

    您还需要尝试使用图像类型,因为Crystal Reports支持有限集(肯定是JPG和BMP)。

答案 2 :(得分:0)

最快的方法是拥有2个单独的报告,然后根据用户选择使代码Load()成为正确的一个,这将来自一个单独的窗体。创建此表单是可能的(尽管很困难),如果您需要将其作为单个条目表单,则可以使用它来设置报表的所有参数。

答案 3 :(得分:0)

将此分成2个答案,这么多信息传入;首先加载单独的报告:

可以通过有条件地调用文档类的Load()函数来选择在运行时加载哪些报表。这方面的一个例子是(在c ++中):

ReportDocument myDocument = gcnew myDocument();
if(wideIDcard)
{
   myDocument->Load("wideIDCard.rpt");
}
else
{
   myDocument->Load("narrowIDCard.rpt");
}

其中boolean wideIDCard是从前端的下拉框等设置的。然后可以将ReportDocument myDocument发送到报表查看器以查看该报表。