找回密码
 立即注册

QQ登录

只需一步,快速开始

shiguang

注册会员

7

主题

18

帖子

57

积分

注册会员

积分
57
shiguang
注册会员   /  发表于:2020-10-23 16:49  /   查看:5356  /  回复:11
本帖最后由 shiguang 于 2020-10-23 16:56 编辑

在打印时,由于表格很长,不能打印在一页上,导致有的列被截成两半,分别打印到两页上,虽然有的时候能通过缩放调整,但是有API可以操作么,如下图: CleanShot 2020-10-23 at 16.43.15@2x.png


想要通过api实现在打印的时候,当前页包含的不完整的列放到下一页去打印,或者有没有设置把打印线不要放到列的中间,放到两列中间。

打印预览效果如下:
CleanShot 2020-10-23 at 16.51.45@2x.png
CleanShot 2020-10-23 at 16.52.07@2x.png

11 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-10-23 16:55:37
沙发
您好,您可以参考这篇文章用bestFitColumns是自适应到一页
https://gcdn.grapecity.com.cn/fo ... hlight=%B4%F2%D3%A1
回复 使用道具 举报
shiguang
注册会员   /  发表于:2020-10-23 17:05:23
板凳
DerrickJiao 发表于 2020-10-23 16:55
您好,您可以参考这篇文章用bestFitColumns是自适应到一页
https://gcdn.grapecity.com.cn/forum.php?mod= ...

用了这个方法不行,设置后,分出来很多页,不是我想要的效果呢。
请看下面的图:
CleanShot 2020-10-23 at 17.04.00@2x.png


而且有的列还是被分割了。
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-10-23 17:10:14
地板
shiguang 发表于 2020-10-23 17:05
用了这个方法不行,设置后,分出来很多页,不是我想要的效果呢。
请看下面的图:

麻烦您把表单上传,我们这边看下是否还有别的方案
回复 使用道具 举报
shiguang
注册会员   /  发表于:2020-10-23 17:29:30
5#
DerrickJiao 发表于 2020-10-23 17:10
麻烦您把表单上传,我们这边看下是否还有别的方案

你好,多谢回复!

表单的json文件及相关代码已经上传。
teplateJson及问题代码文件.zip (7.45 KB, 下载次数: 430)
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-10-23 17:53:52
6#
shiguang 发表于 2020-10-23 17:29
你好,多谢回复!

表单的json文件及相关代码已经上传。

您可以用fitPageWide将所有列调整到一页上,参考以下代码
  1. sheet.printInfo().fitPagesWide(1);
复制代码
image.png252243041.png



或者您可以参考下面的代码在合适的位置分段
  1. sheet.printInfo().margin({ top: 0, bottom: 0, left: 0, right: 0, header: 0, footer: 0 });
  2.             sheet.printInfo().columnEnd(110);
复制代码


columnEnd用于设置在打印单元格区域时要打印的最后一列。


image.png564306945.png
image.png433003844.png
回复 使用道具 举报
shiguang
注册会员   /  发表于:2020-10-26 08:54:26
7#
DerrickJiao 发表于 2020-10-23 17:53
您可以用fitPageWide将所有列调整到一页上,参考以下代码

你好,你的意思是把所有的打印内容放到一页上么?有的表单特别长(横向),不可能放到一页上的,就是要分页打印的。然后columnend那个方法是设置整个打印区域的结束列,还是每一页打印数据的结束列?现在需求时在分页打印时,正确的打印出每一列数据,不是跨页打印。
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-10-26 10:34:51
8#
shiguang 发表于 2020-10-26 08:54
你好,你的意思是把所有的打印内容放到一页上么?有的表单特别长(横向),不可能放到一页上的,就是要分 ...

抱歉,这边给您描述错误。columnEnd这个方法用于设置在打印单元格区域时要打印的最后一列,也就是截取打印的区域,后面的部分就不再打印。
这边建议您用缩放或者用margin调整打印的位置(这样打印分页就不会从中间断开),您可以参考附件的demo。

效果如下:
image.png763104552.png
image.png778029479.png

导入导出测试.zip

2 MB, 下载次数: 450

回复 使用道具 举报
shiguang
注册会员   /  发表于:2020-10-26 13:32:18
9#
本帖最后由 shiguang 于 2020-10-26 13:34 编辑
DerrickJiao 发表于 2020-10-26 10:34
抱歉,这边给您描述错误。columnEnd这个方法用于设置在打印单元格区域时要打印的最后一列,也就是截取打 ...

你好,感谢你的回复。

打印缩放及margin已经加了,提供给用户用于调整设置,但是这还是不能100%解决上面遇到的问题,因为缩放是对整个打印区域的缩放,每一页的打印内容不会正好通过缩放打印出正确的列,比如,我通过缩放调整可能将第一页的内容调整的比较合适,但是后面几页的的内容可能还是会遇到上面的问题。
最好是有什么事件没有,比如在计算打印区域时,有个回调事件,在事件中去获得打印内容,然后判断调整之类的。或者是用什么办法去判断页面上列的宽度之和,对应纸张大小的关系等呢。
CleanShot 2020-10-26 at 13.33.53@2x.png
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-10-26 13:57:42
10#
shiguang 发表于 2020-10-26 13:32
你好,感谢你的回复。

打印缩放及margin已经加了,提供给用户用于调整设置,但是这还是不能100%解决上 ...

暂时没有相应的事件能满足您的需求。

目前可能没有更好的方法了,建议您用缩放或margin去设置打印信息。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部