找回密码
 立即注册

QQ登录

只需一步,快速开始

Felix.Li Wyn认证

超级版主

101

主题

2855

帖子

5390

积分

超级版主

Rank: 8Rank: 8

积分
5390

Wyn高级认证Wyn认证

Felix.Li Wyn认证
超级版主   /  发表于:2024-7-8 12:11  /   查看:573  /  回复:0
本帖最后由 KarenGao 于 2024-7-16 14:05 编辑

ActiveReportsJS 是一款希望在客户端运行的报表解决方案。它在浏览器环境中运行,可以直接从浏览器生成、打印和导出报表。ActiveReportsJS 利用文档对象模型 (DOM) 来构建报表输出。
值得注意的是,由于对 DOM 的依赖,ActiveReportsJS 代码无法在 Node.js 环境中执行,因为它缺少必要的 DOM API。
但是,在某些情况下,您可能需要在服务器端执行和导出报表。例如,您可能需要按计划生成报告或通过电子邮件分发报告输出。
为了适应这些情况,您可以创建一个能够使用无头浏览器在服务器端运行 ActiveReportsJS 报告的应用程序。此应用程序将包含两个主要组件:
客户端 JavaScript 代码:此组件负责运行和导出报表。
服务器端代码:该组件初始化无头浏览器的新实例,加载托管客户端代码的 HTML 页面,捕获输出,并将其写入文件或其他形式的存储中。
您可以在 ActiveReportsJS GitHub 存储库中找到此操作的全面代码示例:
对于Node.js 示例
对于C# 示例
该方法可以与任何服务器端语言(例如 GoLang、Python 等)和任何无头浏览器一起使用。
请注意,服务器端渲染确实需要额外的单域许可证或无限域许可证。

无论是使用什么做模拟,其实最根本的还是以下代码:

  1. const report = new MESCIUS.ActiveReportsJS.Core.PageReport();
  2. await report.load(reportUrl, {
  3.   reportParameters: [
  4.     {
  5.       Name: "DisplayedCategories",
  6.       Value: categories
  7.     }
  8.   ]
  9. });
  10. const doc = await report.run();
  11. const result = await MESCIUS.ActiveReportsJS.PdfExport.exportDocument(doc, {
  12.   info: { author: "MESCIUS" },
  13. });
复制代码
这个利用的就是ARJS的无预览导出方法,直接利用封装好的对象最导出,而最后的result.data就是我们需要的PDF流,这个PDF流就是用于我们最终在服务端使用的,用于自定义导出等。



0 个回复

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