【发布时间】:2020-10-27 20:18:12
【问题描述】:
我正在尝试将 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 时,正确的做法是什么?
【问题讨论】: