Я создал отчет PowerBI, и он был встроен в мое клиентское приложение angular7 путем регистрации приложения в Azure Active Directory (AAD). Отлично встраивается. Я хочу, чтобы этот встроенный отчет загружался и распечатывался пользователем моего клиентского приложения. Ниже приведен мой код Angulr7 для встраивания отчета PowerBI.
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.info("Loaded");
});
}
Как я могу этого добиться?





Вы можете распечатать отчет, позвонив в report.print():
var element = document.getElementById('#myReport');
var report = powerbi.get(element);
report.print()
.catch(error => { ... });
См. также Распечатать отчет в официальных документах. Это покажет диалоговое окно «Печать», но результат не очень приятный. Обычно с помощью печати вы также можете создать файл PDF, потому что нет возможности экспортировать отчет в виде файла (PDF, PowerPoint) с помощью API. Сохранить как позволит вам сделать копию отчета в сервисе, а не в виде файла на локальном диске.
// 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);
Хорошо, просто избавься от ловушки.
Эта ошибка возникает после удаления части захвата. ошибка TS2339: свойство «печать» не существует для типа «встроить»
Похоже, вы также удалили скобки. Он должен стать report.print();.
Неа. отчет.печать(); есть.
Можете ли вы просто сказать мне, откуда взялся этот метод печати? Это исходит от powerbi-клиента?
@AndreyNikolov report.print() создает одну страницу в формате pdf, даже если высота отчета слишком велика. Есть ли способ распечатать отчет по ширине и взять необходимое количество страниц в формате pdf?
@parth.hirpara Используйте Экспорт в файл API.
Я реализовал этот код ниже в angular 6
// Импорт powerbi-клиента
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.info(error);
});
report.print () .catch (ошибка => { ... }); Эта строка кода не работает с angular 7.