你好,我们如果是实时的加载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);
})();
|