угловая сборка приложения в электронном формате печать div показывает пустое окно - PullRequest
0 голосов
/ 14 февраля 2019

Я разработал угловое приложение, затем строю это приложение в электроне.Приложение работает нормально, но когда я нажимаю кнопку, чтобы напечатать определенный div, оно открывает пустое окно электрона.Я использую библиотеку ngx-print.он отлично работает с угловой подачей, но возникла проблема со сборкой электронов.

<button class="btn btn-raised mr-1 shadow-z-2 btn-success"  
printSectionId="print-section" ngxPrint>
   print
</button>

<div id="print-section"> Print This</div>

1 Ответ

0 голосов
/ 05 марта 2019

в коде ngx-print у нас есть эта часть, чтобы сделать это:

printContents = document.getElementById(this.printSectionId).innerHTML;
popupWin = window.open('_blank', '', 'top=0,left=0,height=100%,width=auto');
popupWin.document.open();
popupWin.document.write("\n      <html>\n        <head>\n          <title>" + (this.printTitle ? this.printTitle : '') + "</title>\n          <style>\n            " + this.returnStyleValues() + "\n          </style>\n        </head>\n    <body onload=\"window.print();window.close()\">" + printContents + "</body>\n      </html>");
popupWin.document.close();

, когда электрон пытается открыть новое окно, он открывает BrowserWindowProxy, поэтому после этого, если он пытается получить доступ к popupWin.document, онget не определен и показывает ошибку.мы можем сказать электрону, чтобы он открыл собственное окно, чтобы открыть его и открыть документ, поэтому в вашем main.js или main.ts вы можете попробовать:

win = new BrowserWindow({
    x: 0,
    y: 0,
    width: size.width,
    height: size.height,
    webPreferences: {
      nativeWindowOpen: true, // add this
      nodeIntegration: false
    }
 });

тогда электрон создаст новоеродное окно.тогда в коде ngx-print

popupWin = window.open('', '_blank', 'top=0,left=0,height=100%,width=auto'); 

должно быть:

popupWin = window.open('_blank', '', 'top=0,left=0,height=100%,width=auto');

, чтобы открыть новую пустую страницу.Вы можете прочитать больше о webPreferences в https://electronjs.org/docs/api/browser-window.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...