使用 Angular7 在 PowerBI 嵌入式报表中下载、打印选项



我已经创建了PowerBI报告,并且通过向Azure Active Directory(AAD)注册应用程序,它已嵌入到我的angular7客户端应用程序中。它完美嵌入。我希望允许客户端应用程序的用户下载和打印该嵌入报表。以下是我嵌入 PowerBI 报表的 Angulr7 代码。

      showReport() {
    // Report's Secured Token
    let accessToken = 'myAccessToken';
    // Embed URL
    let embedUrl = 'embedUrl';
    // Report ID
    let embedReportId = 'embedReportId';
    let config = {
      type: 'report',
      accessToken: accessToken,
      embedUrl: embedUrl,
      id: embedReportId,
      settings: {
        localeSettings: {
          language: "en",
          formatLocale: "es"
        }
      }
    };
    // Grab the reference to the div HTML element that will host the report.
    let reportContainer = <HTMLElement>document.getElementById('reportContainer');
    // Embed the report and display it within the div container.
    let powerbi = new pbi.service.Service(pbi.factories.hpmFactory, pbi.factories.wpmpFactory, pbi.factories.routerFactory);
    let report = powerbi.embed(reportContainer, config);
    var rep = powerbi.get(reportContainer);
    // Report.off removes a given event handler if it exists.
    report.off("loaded");
    // Report.on will add an event handler which prints to Log window.
    report.on("loaded", function () {
      console.log("Loaded");
    });
  }

我怎样才能做到这一点?

您可以通过调用 report.print() 来打印报告:

var element = document.getElementById('#myReport');
var report = powerbi.get(element);
report.print()
  .catch(error => { ... });

另请参阅在官方文档中打印报告。这将显示"打印"对话框,但结果并不好。通常通过打印,您也可以创建PDF文件,因为无法使用API将报告导出为文件(PDF,PowerPoint)。SaveAs 将允许您在服务中制作报表的副本,而不是作为本地磁盘上的文件。

// Get a reference to the embedded report HTML element
var embedContainer = $('#embedContainer')[0];
// Get a reference to the embedded report.
report = powerbi.get(embedContainer);
var saveAsParameters = {
    name: "newReport"
};
// SaveAs report
report.saveAs(saveAsParameters);

我已经在 angular 6 中实现了下面的代码

导入电源比客户端

import * as pbi from 'powerbi-client';

变量声明

let reportPrint;

打印功能内部

let reportContainer = <HTMLElement>document.getElementById('reportContainer');
let powerbi = new 
pbi.service.Service(pbi.factories.hpmFactory,pbi.factories.wpmpFactory, 
pbi.factories.routerFactory);
this.reportPrint = powerbi.get(reportContainer);
this.reportPrint.print().catch(error => {  
    console.log(error);
});

最新更新