디자이너 컴포넌트 - 보고서 출력 미리 보기

이 샘플은 Angular, React, Vue 및 순수 JavaScript 응용 프로그램 내에서 ActiveReportsJS Designer 컴포넌트의 보고서 출력을 미리 보는 방법을 보여 줍니다. 디자이너 도구 모음에서 "미리 보기" 버튼을 클릭하면 현재 보고서가 표시된 뷰어가 열립니다. "PDF 미리 보기" 버튼을 클릭하면 보고서를 PDF로 내보내고 브라우저 설정에 따라 보고서가 자동으로 열리거나 다운로드됩니다. "디자이너 열기" 버튼을 클릭하면 디자이너 컴포넌트가 표시됩니다. 자세한 내용은 보고서 미리 보기 페이지를 방문하십시오. 코드를 보려면 아래로 스크롤하십시오.

<template> <div> <div id="designer-toolbar" class="container-fluid"> <div class="row mt-3 mb-3"> <button type="button" class="btn btn-outline-primary btn-sm col-sm-2 ml-1" @click="onPdfPreview" :style="{ display: designerHidden ? 'none' : 'block' }" > PDF Preview </button> <button type="button" class="btn btn-outline-primary btn-sm col-sm-2 ml-1" @click="onDesignerOpen" :style="{ display: designerHidden ? 'block' : 'none' }" > Open Designer </button> </div> </div> <div id="designer-host" :style="{ display: designerHidden ? 'none' : 'block' }" > <ReportDesigner ref="reportDesigner" :report="{ id: 'reports/company-template.rdlx-json' }" :onRender="onReportPreview" /> </div> <div id="viewer-host" :style="{ display: designerHidden ? 'block' : 'none' }" > <ReportViewer ref="reportViewer" /> </div> </div> </template> <script> import { Viewer, Designer } from "@mescius/activereportsjs-vue"; import Core from "@mescius/activereportsjs/core"; import { exportDocument as pdfExport } from "@mescius/activereportsjs/pdfexport"; export default { components: { ReportViewer: Viewer, ReportDesigner: Designer, }, data() { return { designerHidden: false, }; }, methods: { async onPdfPreview() { const reportInfo = await this.$refs.reportDesigner.getReport(); const report = new Core.PageReport(); await report.load(reportInfo.definition); const doc = await report.run(); const result = await pdfExport(doc); result.download("exportedreport"); }, onDesignerOpen() { this.designerHidden = false; }, async onReportPreview(report) { this.designerHidden = true; this.$refs.reportViewer.Viewer().open(report.definition); }, }, }; Core.FontStore.registerFonts("/activereportsjs/demos/resource/fontsConfig.json"); </script> <style> @import url("/activereportsjs/demos/arjs/styles/ar-js-ui.css"); @import url("/activereportsjs/demos/arjs/styles/ar-js-designer.css"); @import url("/activereportsjs/demos/arjs/styles/ar-js-viewer.css"); #designer-host, #viewer-host { width: 100%; height: 500px; } </style>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <title>ActiveReportsJS Report Designer Report Preview Sample</title> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <!-- SystemJS --> <script src="node_modules/systemjs/dist/system.src.js"></script> <script src="systemjs.config.js"></script> <script src="./compiler.js" type="module"></script> <link href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&display=swap" rel="stylesheet" /> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous" /> <script> System.import("./app.js"); </script> </head> <body style="margin: 0"> <div id="app"></div> <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous" ></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous" ></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous" ></script> </body> </html>
(function (global) { SystemJS.config({ transpiler: "systemjs-plugin-babel", typescriptOptions: { target: "es2022", module: "system", }, baseURL: "./node_modules/", packageConfigPaths: [ "./node_modules/*/package.json", "./node_modules/@mescius/*/package.json", "./node_modules/@babel/*/package.json", "./node_modules/@vue/*/package.json", ], map: { vue: "./node_modules/vue/dist/vue.esm-browser.js", "systemjs-babel-build": "systemjs-plugin-babel/systemjs-babel-browser.js", "@mescius/activereportsjs/pdfexport": "@mescius/activereportsjs/dist/ar-js-pdf.js", "@mescius/activereportsjs/tabulardataexport": "@mescius/activereportsjs/dist/ar-js-tabular-data.js", "@mescius/activereportsjs/htmlexport": "@mescius/activereportsjs/dist/ar-js-html.js", "@mescius/activereportsjs/xlsxexport": "@mescius/activereportsjs/dist/ar-js-xlsx.js", "@mescius/activereportsjs-vue": "@mescius/activereportsjs-vue/lib/index.js", "@mescius/activereportsjs/reportviewer": "./reportviewer.js", "@mescius/activereportsjs/viewer": "./reportviewer.js", "@mescius/activereportsjs/reportdesigner": "./reportdesigner.js", "@mescius/activereportsjs/core": "@mescius/activereportsjs/dist/ar-js-core.js", "@mescius/activereportsjs/styles": "@mescius/activereportsjs/styles", "@mescius/activereportsjs-i18n": "@mescius/activereportsjs-i18n/dist/ar-js-locales.js", "@mescius/ar-js-pagereport": "@mescius/activereportsjs/dist/ar-js-core.js", "@mescius/activereportsjs-i18n-ja": "@mescius/activereportsjs-i18n/dist/designer/ja-locale.js", "@mescius/activereportsjs-i18n-zh": "@mescius/activereportsjs-i18n/dist/designer/zh-locale.js", }, meta: { "*.css": { loader: "systemjs-plugin-css" }, "./src/*.vue": { loader: "../plugin-vue/index.js" }, "*.vue": { loader: "./plugin-vue/index.js" }, }, packages: { "vue-demi": { defaultExtension: "mjs", main: "lib/index.mjs", }, }, }); })(this);