找回密码
 立即注册

QQ登录

只需一步,快速开始

zyp860527

注册会员

4

主题

8

帖子

60

积分

注册会员

积分
60
最新发帖
zyp860527
注册会员   /  发表于:2021-4-2 15:33  /   查看:2485  /  回复:5
本帖最后由 Crystal.Li 于 2021-4-2 16:30 编辑

使用arjs导出为html的时候,设置了multiPage: false,但是导出的html 始终是分页的(就是表头是重复的,一个大表断开成好几个小表显示出来),我们现在需要表头就一个,不需要断开显示,请问该如何设置参数?
导出的代码如下:
pageReport.load(dataJson)
    .then(function () { return pageReport.run() })
    .then(function (pageDocument) {
      return HTML.exportDocument(pageDocument, { multiPage: false })
    })
    .then(function (result) {
      window.outputHtml(result);
    });

下面是红色的区域时 断开的孔隙,然后表头又重复出现了


本帖子中包含更多资源

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

x

5 个回复

倒序浏览
Crystal.Li讲师达人认证 悬赏达人认证
论坛元老   /  发表于:2021-4-2 16:31:01
沙发
您这个应该是在连续模式下导出的,应该设置画廊模式就ok。
https://demo.grapecity.com.cn/ac ... s/api/Galley/purejs

本帖子中包含更多资源

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

x
回复 使用道具 举报
zyp860527
注册会员   /  发表于:2021-4-8 16:25:03
板凳
您好,我们的需求是,我们是现在项目系统中做了60多张报表,因为客户要求,我们是所有报表浏览都是用的画廊模式,这个在浏览器端渲染显示没有问题,但是由于客户说性能上要提升,我们的想法是我们会用Nodejs +无头浏览器 在服务器端每天晚上轮询自动生成html(用的是HTML.exportDocument(param)方法),然后客户端就每次渲染这个html就行,但是现在我们把arjs导出为html的时候,报表还是有多个表头,就类似于分页显示了(在原始帖子的截图中有显示),不是我们想要的画廊模式,请问该如何设置?谢谢啊,比较着急
回复 使用道具 举报
Crystal.Li讲师达人认证 悬赏达人认证
论坛元老   /  发表于:2021-4-8 18:09:20
地板
您现在是不是不想要我截图中的这个表格间隙和表头:

如果是这样的话,就是预览时使用画廊模式导出就可以:



本帖子中包含更多资源

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

x
回复 使用道具 举报
zyp860527
注册会员   /  发表于:2021-4-9 08:57:50
5#
Crystal.Li 发表于 2021-4-8 18:09
您现在是不是不想要我截图中的这个表格间隙和表头:

如果是这样的话,就是预览时使用画廊模式导出就可以 ...

你好,我们如果是实时的加载rdlx-json文件,把viewer.renderMode='Galley',这个打开是画廊模式,这个是没有问题的,现在因为因为我们用画廊模式后,渲染会很慢,所以 我们是 用node.js +Headless 无头浏览器 每天晚上 把我们的60多张报表提前在服务器端生成好保存为60多个html页面,然后客户端直接渲染静态页面html,这个性能上解决了,问题是 我们用 node.js +Headless 无头浏览器  导出生成的html 中报表样式 出现了多个表头,多个表头之间有间隙,不是按照我们设置的画廊模式,代码如下(async () => {
    const browser = await puppeteer.launch({headless: true});
    const page = await browser.newPage();
    await page.goto(`http://localhost:9999/host.html`);
    //await page.goto(`${__dirname}/resources/host.html`);
    const pdfString =await page.evaluate(({reportUrl, fonts}) =>        
        new Promise(async (resolve, reject) => {
            // await GC.ActiveReports.Core.FontStore.registerFonts(fonts);
            const report = new GC.ActiveReports.Core.PageReport();
            await report.load(reportUrl);
            const doc = await report.run();
            const result = await GC.ActiveReports.HtmlExport.exportDocument(doc, {fonts: fonts, info: {author: 'GrapeCity'}});
            const reader = new FileReader();
            reader.readAsBinaryString(result.data);
            reader.onload = () => resolve(reader.result);
            reader.onerror = () => reject('Error occurred while reading binary string');
        }), {reportUrl: 'aaa.rdlx-json', fonts: fonts});  aaa.rdlx-json 这个是我们报表模板

    const pdfData = Buffer.from(pdfString, 'binary');
    fs.writeFileSync(`${__dirname}/out116.html`, pdfData);
    console.log('done');   
    process.exit(0);
})();

回复 使用道具 举报
Crystal.Li讲师达人认证 悬赏达人认证
论坛元老   /  发表于:2021-4-9 12:26:58
6#
这样的话,其实有一种办法:您可以尝试写一个脚本,计算每个报表在一页展示完全时所需的纸张高度,然后赋给报表的纸张高度,这样所有的内容都展示在一个报表里了~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部