Я использую библиотеку ng2-pdfjs-viewer для отображения pdf в моем приложении angular 7.Проблема в том, что если флаг печати имеет значение false, кнопка для печати не видна, что работает должным образом, но пользователь может щелкнуть правой кнопкой мыши или использовать клавиши CTRL + P или CTRL + S и распечатать или загрузить файл PDF.Я хочу ограничить использование этих ключей пользователем.Я пытался использовать методы JavaScript в моем DOM, но они не работают, так как компонент PDFJS перекрывается. В конце концов я попытался изменить файл viewer.js в папке node_modules, которая работала для меня на моем компьютере, но мы используем инструмент сборки Jenkins, который использует файлы изSVN и я не могу зафиксировать node_modules в SVN.Дженкинс использует библиотеки с сервера на основе package.json, так что моя модификация в этом случае использует меньше. Я также пробовал событие onBeforePrint, которое не вызывается, не знаю почему.Пожалуйста, помогите мне в этом, как мы можем сделать это в качестве альтернативы.Ваша помощь будет оценена.
Спасибо.
записываю код, который я пытался изменить viewer.js
Код в моем компоненте
<mat-dialog-content class="my-2 d-flex justify-content-center px-2">
<div class="w-100 h-100">
<ng2-pdfjs-viewer [download]="isPrintable" (onBeforePrint)="beforePrint()" [print]="isPrintable" *ngIf="pdfContent" [pdfSrc]="pdfContent"></ng2-pdfjs-viewer>
</div>
</mat-dialog-content>
viewer.js модификации
//To disable right click print added by KK on 29/08/2019
window.oncontextmenu = function () {
return false;
}
var hasAttachEvent = !!document.attachEvent;
window.addEventListener('keydown', function (event) {
//code to prevent download and print using CTRL+S and CTRL+P added by KK on 29/08/2019
if ((event.keyCode === 80 || event.keyCode === 83) && (event.ctrlKey || event.metaKey) && !event.altKey && (!event.shiftKey || window.chrome || window.opera)) {
//window.print();
if (hasAttachEvent) {
return;
}
event.preventDefault();
if (event.stopImmediatePropagation) {
event.stopImmediatePropagation();
} else {
event.stopPropagation();
}
return;
}
}, false);
// CTRL + P key combinations you want to disable
@HostListener('document:keydown', ['$event']) onKeydownHandler(event: KeyboardEvent) {
if (event.ctrlKey && event.keyCode === 80) {
return false;
}
}