Я пытаюсь обернуть PDFJS внутри компонента Angular 7. У меня есть следующий код, но PDFJS не определена. Я создаю приложение, используя Angular / CLI.
import { Component, OnInit, ElementRef, ViewChild, Input } from '@angular/core';
declare let PDFJS: any;
@Component({
selector: 'app-dsgpdf',
templateUrl: './dsgpdf.component.html',
styleUrls: ['./dsgpdf.component.scss']
})
export class DsgpdfComponent implements OnInit {
@ViewChild('theCanvas', { read: ElementRef }) theCanvas;
constructor() {
}
ngOnInit() {
debugger;
//
// If absolute URL from the remote server is provided, configure the CORS
// header on that server.
//
var url = '/assets/fdcc0545-a0d7-4c30-89ef-5a908a1e2a47.pdf';
//
// The workerSrc property shall be specified.
//
let pdfWorkerSrc: string = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.0.943/pdf.worker.min.js';
PDFJS.GlobalWorkerOptions.workerSrc = pdfWorkerSrc;
//
// Asynchronous download PDF
//
var loadingTask = PDFJS.getDocument(url);
loadingTask.then(pdf => {
//
// Fetch the first page
//
pdf.getPage(2).then(page => {
var scale = 1.5;
var viewport = page.getViewport(scale);
//
// Prepare canvas using PDF page dimensions
//
var canvas = this.theCanvas.nativeElement;
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
//
// Render PDF page into canvas context
//
var renderContext = {
canvasContext: context,
viewport: viewport,
};
page.render(renderContext).then(() => {
debugger;
});
});
});
}
}
Я также пытался добавить эту строку кода:
let PDFJS: any = require('pdfjs-dist/build/pdf');
Но он не компилируется:
error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node`.
Я явно импортирую это неправильно. Может кто-нибудь направить меня в правильном направлении.
Вторичный вопрос: я не хочу загружать работника из cdn. Какой правильный способ сделать это при использовании Angular / CLI?