找回密码
 立即注册

QQ登录

只需一步,快速开始

水晶数码

金牌服务用户

5

主题

19

帖子

58

积分

金牌服务用户

积分
58
最新发帖

[已处理] 批量生成PDF问题

水晶数码
金牌服务用户   /  发表于:2024-8-1 14:34  /   查看:860  /  回复:16
1金币
本帖最后由 水晶数码 于 2024-8-2 16:23 编辑

1,列表有复选框,选中进行批量打印

需要静默生成PDF(现在是预览才能生成PDF),现在的模板是根据数据源生成的数据集进行绑定的。生成的PDF中的数据要和列表中勾选的数据对应起来(目前提供的例子是单个的,并且数据是写死的)

2,目前单条数据,预览生成的PDF是乱码

最好能提供Demo


附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

那这样,您方便发一下您的报表Demo吗,我们测试一下吧。您的导出方法应该就是循环调用pageReport.Load() 然后导出的吧。这个我们用您的报表测试一下吧,不确定是不是设置问题还是bug

16 个回复

倒序浏览
最佳答案
最佳答案
Felix.LiWyn认证
超级版主   /  发表于:2024-8-1 14:34:40
来自 13#
那这样,您方便发一下您的报表Demo吗,我们测试一下吧。您的导出方法应该就是循环调用pageReport.Load() 然后导出的吧。这个我们用您的报表测试一下吧,不确定是不是设置问题还是bug
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2024-8-1 16:39:41
2#
您好,我看了一下,全部用报表去做其实比较麻烦,包括报表控制数据集,打印不同的。
而且因为浏览器的限制,其实是没有办法完全实现静默打印的,因为浏览器只要打印,就会弹出浏览器的弹出框,这个因为本身就是前端组件的限制,所以如果想做静默打印,必须要借助服务端的打印程序。
其次,关于您说的这个,最好的实现其实是这样的,您做一批报表,然后还是通过传递数据不同,去打开不同报表。然后咱们自己在组件外面写一个复选框。复选框就是控制给报表传不同数据,加载不同报表,然后加载的话,报表是可以实现不预览加载的:
报表静默加载和打印可以参考这个帖子:
https://gcdn.grapecity.com.cn/showtopic-157785-1-1.html


2.乱码应该就是咱们没有注册字体文件,咱们按照我们文档注册一下字体就可以:
https://demo.grapecity.com.cn/ac ... nent/Register-Fonts

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
水晶数码
金牌服务用户   /  发表于:2024-8-2 16:23:15
3#
Felix.Li 发表于 2024-8-1 16:39
您好,我看了一下,全部用报表去做其实比较麻烦,包括报表控制数据集,打印不同的。
而且因为浏览器的限制 ...

乱码已经看过了,但是还是不行。
无法正常请求字体文件,json文件正常:
正常字体:
目前请求的字体:为项目的index.html(相对绝对路径引入都试过)
回复 使用道具 举报
水晶数码
金牌服务用户   /  发表于:2024-8-2 16:45:52
4#
Felix.Li 发表于 2024-8-1 16:39
您好,我看了一下,全部用报表去做其实比较麻烦,包括报表控制数据集,打印不同的。
而且因为浏览器的限制 ...

复选框就是控制给报表传不同数据,加载不同报表

能具体说说怎么传参吗
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2024-8-2 18:13:40
5#

我这里有个Demo项目,里面有注册字体的:


至于复选框传参,您不需要给我们传参,我的意思是这样。
咱们自己写一个复选框,然后复选框里面比如你选 report1,report2。
然后这两个对应两个不同报表。然后我们代码利用这个教程:
https://gcdn.grapecity.com.cn/showtopic-157785-1-1.html
循坏调用,进行report.load  然后循环加载报表,循环导出PDF给静默打印程序

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
水晶数码
金牌服务用户   /  发表于:2024-8-5 10:28:33
6#
Felix.Li 发表于 2024-8-2 18:13
我这里有个Demo项目,里面有注册字体的:

乱码问题已经解决

现在是批量打印传参问题,复选框选中之后,同一个模板也是要传不同的参数过去的,现在是不知道怎么把动态的数据传给模板
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2024-8-5 12:26:40
7#
现在不太确定您说的动态数据是报表参数还是数据源。

都说一下,如果您要动态传数据源的话,可以参考这个:
https://demo.grapecity.com.cn/ac ... data-binding/purejs

同样,其实我们知道报表参数的情况下,其实也可以改load的json对象,去添加参数。
或者参数您可以参考这个:
  1. pageReport
  2.       .load("report/11.rdlx-json")
  3.       .then(function () {
  4.         let par = Object.keys(pageReport._parameters);
  5.         for (let i = 0; i < par.length; i++) {
  6.           pageReport._parameters[par[i]].values = pageReport._parameters[par[i]].descriptor.defaultValue
  7.         }

  8.         return pageReport.run();
  9.       })
复制代码
pageReport._parameters[par].values
就是给参数赋值,par是参数的名称,我们根据不同参数名称,给参数赋值即可.传递时一个数组,类似:
  1. pageReport._parameters[par[i]].values = ["222"]
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
水晶数码
金牌服务用户   /  发表于:2024-8-5 17:24:20
8#
Felix.Li 发表于 2024-8-5 12:26
现在不太确定您说的动态数据是报表参数还是数据源。

都说一下,如果您要动态传数据源的话,可以参考这个 ...

你好,是把这个data传给后端吗

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2024-8-5 17:41:00
9#
这个看情况是一个PDF流,应该是pageReport导出后的PDF流。这个咱们可以自己处理的。
无论是直接调用对象的download ,会直接下载。
还是data pdf流给别的地方,在别的地方处理也是可以的
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部