Загрузка, опция печати во встроенном отчете PowerBI с Angular7

Я создал отчет 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");
    });
  }

Как я могу этого добиться?

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
0
3 906
2

Ответы 2

Вы можете распечатать отчет, позвонив в 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);

report.print () .catch (ошибка => { ... }); Эта строка кода не работает с angular 7.

Chamila Maddumage 13.02.2019 11:28

Хорошо, просто избавься от ловушки.

Andrey Nikolov 13.02.2019 11:37

Эта ошибка возникает после удаления части захвата. ошибка TS2339: свойство «печать» не существует для типа «встроить»

Chamila Maddumage 13.02.2019 12:07

Похоже, вы также удалили скобки. Он должен стать report.print();.

Andrey Nikolov 13.02.2019 12:09

Неа. отчет.печать(); есть.

Chamila Maddumage 13.02.2019 12:12

Можете ли вы просто сказать мне, откуда взялся этот метод печати? Это исходит от powerbi-клиента?

Chamila Maddumage 13.02.2019 12:14
microsoft.github.io/PowerBI-JavaScript/classes/…
Andrey Nikolov 13.02.2019 12:15

@AndreyNikolov report.print() создает одну страницу в формате pdf, даже если высота отчета слишком велика. Есть ли способ распечатать отчет по ширине и взять необходимое количество страниц в формате pdf?

parth.hirpara 21.04.2021 06:08

@parth.hirpara Используйте Экспорт в файл API.

Andrey Nikolov 21.04.2021 07:27

Я реализовал этот код ниже в 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);
});

Другие вопросы по теме