皕杰技术社区

 找回密码
 立即加入

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 668|回复: 8

[求助] 自定义单元格,如何重写生成图片方法

[复制链接]
发表于 2022-3-23 10:36:34 | 显示全部楼层 |阅读模式
自定义单元格功能中有个方法:getImage,此方法描述是为获取该单元格的图片显示结果(字节数组格式),用于各种格式的导出以及打印,请问一下这个方法该如何写实现,是否有案例
发表于 2022-3-23 11:07:43 | 显示全部楼层
在下载的压缩包里,有一个“应用开发示例”目录,里面有各种api调用的示例。
在示例包里,有个MyQRcodeCell.java文件里展示了getImage的用法
  1. public byte[] getImage(int width, int height) {
  2.                
  3.                 byte[] contentBytes = codeContent.getBytes();
  4.                 code  = new Qrcode();
  5.                 code.setQrcodeErrorCorrect(codeErrorCorrect);
  6.                 code.setQrcodeEncodeMode(codeEncodeMode);
  7.                 code.setQrcodeVersion(codeVersion);
  8.                 BufferedImage bufImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  9.                 Graphics2D g2d = bufImg.createGraphics();
  10.                 g2d.setBackground(Color.WHITE);
  11.                 g2d.clearRect(0, 0, width, height);
  12.                 g2d.setColor(Color.BLACK);
  13.                 // 设置偏移量 不设置可能导致解析出错
  14.                 int pixoffset = 2;
  15.                
  16.                 if (contentBytes.length > 0)
  17.                 {
  18.                         boolean[][] codeOut = code.calQrcode(contentBytes);
  19.                         for (int i = 0; i < codeOut.length; i++){
  20.                                 for (int j = 0; j < codeOut.length; j++){
  21.                                         if (codeOut[j][i]){
  22.                                                 g2d.fillRect(j * 3 + pixoffset, i * 3 + pixoffset, 3, 3);
  23.                                         }
  24.                                 }
  25.                         }
  26.                 }else{
  27.                         System.err.println("内容长度不对");
  28.                 }
  29.                 g2d.dispose();
  30.                 bufImg.flush();
  31.                 ByteArrayOutputStream output = new ByteArrayOutputStream(20000);
  32.                 try {
  33.                         ImageIO.write(bufImg, "png", output);
  34.                 } catch (IOException e) {
  35.                         e.printStackTrace();
  36.                 }
  37.                 return output.toByteArray();
  38.         }
复制代码


回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-1 10:15:07 | 显示全部楼层
本帖最后由 zhangweisep 于 2022-4-1 10:27 编辑
admin 发表于 2022-3-23 11:07
在下载的压缩包里,有一个“应用开发示例”目录,里面有各种api调用的示例。
在示例包里,有个MyQRcodeCell ...

codeContent = (String)args[0];  赋值是什么意思  
下载是个二维码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即加入

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-1 10:25:25 | 显示全部楼层
F:\img\eee.pngF:\img\www.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即加入

x
回复 支持 反对

使用道具 举报

发表于 2022-4-1 16:51:59 | 显示全部楼层
本帖最后由 beibm 于 2022-4-1 16:54 编辑

说的直白点,就是把单元格的内容以图片的方式给到报表引擎系统(因为这个单元格是你自己定义的,系统并不知道打印或导出时,这个单元格该是啥模样,所以,让你把单元格快照成图片),这样系统就可以导出或打印了,或许这个方法名改为toImage更合适些。至于具体是把单元格快照成啥样子,是你自己来定义的。

回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-2 15:00:38 | 显示全部楼层
beibm 发表于 2022-4-1 16:51
说的直白点,就是把单元格的内容以图片的方式给到报表引擎系统(因为这个单元格是你自己定义的,系统并不知 ...

你再说什么不是很懂
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-2 15:36:44 | 显示全部楼层
beibm 发表于 2022-4-1 16:51
说的直白点,就是把单元格的内容以图片的方式给到报表引擎系统(因为这个单元格是你自己定义的,系统并不知 ...

能否给点案例看一下
回复 支持 反对

使用道具 举报

发表于 2022-4-2 16:01:40 | 显示全部楼层
zhangweisep 发表于 2022-4-2 15:36
能否给点案例看一下

在下载的压缩包里,有一个“应用开发示例”目录,里面有示例
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-7 14:09:55 | 显示全部楼层
beibm 发表于 2022-4-2 16:01
在下载的压缩包里,有一个“应用开发示例”目录,里面有示例

我使用renderHtml方法生成一段html之后,在页面上也显示了响应的内容,当我进行下载pdf时,会执行getImage方法,这时在getImage方法中怎么知道刚刚生成的html内容
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

QQ|小黑屋|手机版|皕杰软件 ( 京ICP备14050931号 )

GMT+8, 2025-6-14 06:10 , Processed in 1.065604 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表