angular - 在 Angular.io 项目中加载 worker pdf.woker.js 的正确方法,
问题描述
我正在尝试使用 Angular.io 创建一个 pdf-viewer 组件但我不断收到警告:设置假工人。在 Angular.io 中设置工作线程的正确方法是什么。两个库似乎都已加载,但 pdfjs lib 无法启动工作线程。使用最新的 Angular cli 创建项目和组件。最新的 pdfjs-dist 库。
Angular.json
"assets": [
"src/favicon.ico",
"src/assets",
"src/assets/helloworld.pdf"
],
"styles": [
"src/styles.css"
],
"scripts": [
"node_modules/pdfjs-dist/build/pdf.js",
"node_modules/pdfjs-dist/build/pdf.worker.js"
]
pdf-viewer-component.ts
@Component({
selector: 'app-pdf-viewer',
templateUrl: './pdf-viewer.component.html',
styleUrls: ['./pdf-viewer.component.css']
})
export class PdfViewerComponent implements OnInit {
url = '/assets/helloworld.pdf';
pdfjsLib = window['pdfjs-dist/build/pdf'];
constructor() { }
ngOnInit() {
this.loadPdf();
}
loadPdf() {
this.pdfjsLib.GlobalWorkerOptions.workerSrc = 'node_modules/pdfjs-dist/build/pdf.worker.js';
// Asynchronous download of PDF
const loadingTask = this.pdfjsLib.getDocument(this.url);
loadingTask.promise.then(function (pdf) {
console.log('PDF loaded');
// Fetch the first page
const pageNumber = 1;
pdf.getPage(pageNumber).then(function (page) {
console.log('Page loaded');
const scale = 1.5;
const viewport = page.getViewport(scale);
// Prepare canvas using PDF page dimensions
const canvas: HTMLCanvasElement = <HTMLCanvasElement>document.getElementById('the-canvas');
const context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
// Render PDF page into canvas context
const renderContext = {
canvasContext: context,
viewport: viewport
};
const renderTask = page.render(renderContext);
renderTask.then(function () {
console.log('Page rendered');
});
});
}, function (reason) {
// PDF loading error
console.error(reason);
});
}
}
解决方案
推荐阅读
- r - 分层ggplot
- python - 有人可以告诉我一个更有效/更短的方法来编写这个 python random # 程序吗?
- postgresql - Postgres ALL 运算符有什么替代品吗?
- python - 非泛型类型的不同运行时行为
- javascript - 一旦变量在服务器端发生变化而不刷新就更新ejs页面变量
- spring-boot - EhCache springboot如何获取CacheStatistics
- java - RSS 提要 - 数据解析
- matlab - 如何在 MATLAB 上绘制相邻数据点
- macos - 在 MAC OS 上使用带有 .NET 的 SQLITE ODBC
- python - 模块 'fontforge' 没有属性 'open'