Felix.Li 发表于 2024-7-8 12:11:38

ActiveReportsJS V5.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 等)和任何无头浏览器一起使用。
请注意,服务器端渲染确实需要额外的单域许可证或无限域许可证。
无论是使用什么做模拟,其实最根本的还是以下代码:

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



页: [1]
查看完整版本: ActiveReportsJS V5.0 新特性-服务端模拟导出