添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

身份证一类读卡器读取的照片信息,保存在 Access 数据库中一般为 OLE 型字段,图片为 BMP 格式,因为是用其读卡器写入的,其数据类型为常二进制数据。

再用报表或 EXCEL 读取这些图片时,如果将该图片字段拖入单元格后,预览就看不到图片了。 EXCEL 如何读取这类图片网上有教程,这里不多说。如果你要用报表软件 FineReport 来展现这类图片该如何做呢?

思路是采用 FineReport 的自定义函数,使用 java jna 调用本地的 WltRS.dll ,将数据库 OLE 字段中的长二进制数据转为 .wlt 文件,再调用本地方法将 .wlt 文件转为 .bmp 图片,最终自定义函数返回图片在 FineReport 中显示。

1、 前提准备

本地库文件 WltRS.dll 保存在 E:\bmp\WltRS.dll (位置可变,但 ixu 保证以自定义函数中的路径一致); eclipse 项目中导入 FINEREPORT jar 包。

2、 实现自定义函数

自定义一个函数类 BinaryImage.java ,该类继承 AbstractFunction ,在 run() 方法中使用 java jna 调用本地库文件 WltRS.dll ,最终返回图片。代码如下:

Java代码

将编译后的 BinaryImage.class WltRS.class 根据包名拷贝至报表工程如报表安装目录下的 WebReport\WEB-INF\classes\com\FineReport\function\ 文件夹下。

3 、使用自定义函数

OLE 类型字段的值显示为图片。启动设计器,点击服务器 > 函数管理器,新增自定义函数 BINARYIMAGE ,选择 com.FineReport.function.BinaryImage 类:

将身份证读卡器写入 Access 数据库 OLE 型字段的照片信息拖入单元格,双击,在 数据列 > 高级 > 自定义 显示中使用自定义函数转换成图片:

本文转自 雄霸天下啦 51CTO博客,原文链接:http://blog.51cto.com/10549520/1840187,如需转载请自行联系原作者

OLE,Object Linking and Embedding,即对象连接与嵌入。我们在设计程序时,OLE可以用来创建复合文档,把文字、声音、图像、表格、应用程序等类型的信息组合在一起,在Word中,我们可以通过OLE来实现以上要素信息的组合。 用户自定义结构数据与VARIANT转换
将用户自定义的C结构数据存储成VARIANT类型,需要时再将VARIANT类型转为用户自定义的结构数据,有十分现实的意义,既然我们不想为这样的结构数据写一个COM包装类。虽然有很多方法和手段生成这样的VARIANT,但是,多数时候可能需要一个更加简单的,灵活的方法。