找回密码
 立即注册

QQ登录

只需一步,快速开始

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-5-4 23:13  /   查看:2288  /  回复:0
本帖最后由 Clark.Pan 于 2022-5-4 23:15 编辑

本帖用于总结常见的打印相关问题:

1.打印时出现空白页:
一般情况下,造成该问题的原因有两种:
其中一种是边距超出纸张大小导致打印一页显示不全。由于设置的边距和纸张空白颜色一样,经常不好分辨判断。
SpreadJS的printInfo有着一个默认margin边距大小。可以通过printInfo.margin()来获取:
image.png125079039.png
由于最终打印是的内容是要加上边距的大小,所以可能导致实际内容超出一张纸的大小。导致出现空白页。
另一种情况可能是浏览器的打印设置中设置了默认的边距,如下图所示:
image.png991419677.png
浏览器中默认是有边距大小的。由于SpreadJS的打印原理是先将内容设置在逻辑纸张中,再将逻辑纸张传给浏览器的打印功能打印。而浏览器的边距会在传入逻辑纸张之后去叠加设置。所以经常会导致SpreadJS中刚刚一页能打下的内容,结果实际打印时多了一页(由于边距导致的撑出纸张,所以常为空白页)。这里由于是浏览器的默认设置,故无法通过SpreadJS的api功能去进行设置,需要用户手动在浏览器设置中将其设置成无
image.png545182494.png

2.如果将页面内容动态缩放到一张纸中打印:

用户经常有将内容放到一张纸中打印的需求,由于SpreadJS和Excel的打印原理类似,都是按照列宽行高的实际大小在纸上打印的。所以经常会出现分页打印的情况。

解决办法是设置fitPagesTallfitPagesWide这两个方法。
fitPagesTall:获取或设置打印是需要需要缩放的垂直纸张数量
简单来说就是方法中传入想要将内容高度缩放成的纸张数,比如高度缩放到1也打印就设置,如果什么都不传那么就会获取当前fitPagesTall设置的数量。
  1. printInfo.fitPagesTall(1);
复制代码
fitPagesWide:获取或设置打印是需要需要缩放的水平纸张数量
fitPagesWide同理为水平方向的设置纸张数,比如设置成1就是水平宽度缩放到1页纸去打印。
另外,还有一种方案是在表单设计时候通过 isPrintLineVisible 方法将打印线开启,从设计上避免超出打印纸张范围的现象
  1. sheet.isPrintLineVisible(true);
复制代码
该方法常用于一些固定大小表格的设计。
可根据实际情况采取上述的方案。


0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部