Я занимаюсь разработкой приложения Angular -Electron, в котором я использую функцию printToPDF электрона, которая работает для разработки. Я использую IP C для печати в PDF.
main.ts
const electron = require('electron')
const fs = require('fs');
const ipc = electron.ipcMain;
const shell = electron.shell;
ipc.handle('print-to-pdf', async (event)=> {
console.log('called Print to PDF');
let date = new Date().toISOString();
var filePDFName = 'pdf_export' + date + '.pdf';
var DonwloadsPath = path.resolve(app.getPath("downloads"), (filePDFName));
const pdfPath = path.join(DonwloadsPath, '');
const win = BrowserWindow.fromWebContents(event.sender);
console.log('window contents received');
win.webContents.printToPDF({}).then(data => {
fs.writeFile(pdfPath, data, err => {
if (err) return console.log(err.message);
shell.openExternal('file://' + pdfPath);
event.sender.send('write-pdf-complete', pdfPath);
console.log('PDF written');
})
}).catch(error => {
console.log(error)
})
})
home.component.ts
const ipc = require('electron').ipcRenderer;
@NgModule({
imports: [],
exports: [HomeComponent],
declarations: [HomeComponent],
providers: [],
})
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss']
})
export class HomeComponent implements OnInit {
saveToPDF() {
console.log('button clickied')
ipc.on('write-pdf-complete', (event, path) => {
console.log('pdf writing complete');
})
}
}
ngOnInit(){
var printPDFButton = document.getElementById('print-pdf');
printPDFButton.addEventListener('click', event => {
console.log('click event triggered');
ipc.invoke('print-to-pdf');
});
}
home.component.html
<button id='print-pdf' (click)="saveToPDF()">Save to PDF</button>
Это отлично работает в разработке, когда я готовлю PDF-файл для сохранения. Но когда я создаю exe, используя электронный упаковщик и в exe, когда я нажимаю на кнопку, ipcMain.handle вообще не вызывается. Просто чтобы быть уверенным, я также пытался использовать ipcMain.on , но возникает та же проблема. Вызывается ли main.ts
по-другому для exe электрона? Пожалуйста, предложите что-нибудь.