angular项目在线预览PDF

1 安装 ng2-pdf-viewer

yarn add ng2-pdf-viewer

2 在项目中添加

import { NgModule } from '@angular/core';
import { PdfViewerModule } from 'ng2-pdf-viewer';
import { DemoComponent } from './pages/demo/demo.component';

@NgModule({
imports: [
PdfViewerModule,
],
declarations: [
DemoComponent,
],
providers: [],
})
export class PortalModule { }

3 在组件中添加

html代码

<pdf-viewer [src]="pdfSrc" [c-maps-url]="cMapsUrl" [render-text]="true" style="display: block;"
(after-load-complete)="fileLoadCompeleted()" (error)="onError()"></pdf-viewer>

ts代码

import { Component, Input, OnInit } from '@angular/core';

@Component({
selector: 'app-demo',
templateUrl: './demo.component.html',
styleUrls: ['./demo.component.less']
})
export class DemoComponent implements OnInit { @Input() file;
@Input() pdfSrc: string = '';
cMapsUrl = '/assets/plugins/pdfjs/cmaps/';

constructor(private message: MessageService, private authService: AuthService) {
(<any>window).pdfWorkerSrc = '/assets/plugins/pdfjs/pdf.worker.min.js?v=2.5.207'; // 引用pdfjs-dist下的文件
}
private loader: any; ngOnInit() {
this.loader = this.message.loading(`文件正在加载中,请稍候...`, { nzDuration: 0 }).data.messageId;
const token = this.authService.getAuthorizationUrl(); if (!Util.isUndefinedOrNull(token) && !Util.isUndefinedOrNull(this.file)) {
this.pdfSrc = `/api/Attachment/File/Preview?id=${this.file.Id}&modCode=${this.file.ModCode}&${token}`;
} else {
this.onError();
}
} onError() {
this.message.error('文件加载失败');
setTimeout(() => {
this.message.remove(this.loader);
}, 1000);
} fileLoadCompeleted() {
this.message.remove(this.loader);
} }

4 注意事项

安装ng2-pdf-viewer插件的时候,会自动安装pdfjs‑dist插件

查看官方文档 https://www.npmjs.com/package/ng2-pdf-viewer

查看源码发现

(<any>window).pdfWorkerSrc = '/assets/plugins/pdfjs/pdf.worker.min.js?v=2.5.207'; 
相当于使用的是本地的pdf.worker.min.js,而不是cdn外联的

想兼容ie11,就使用es5文件夹下的pdf.worker.js

5 使用 pdf.js 查看发票时,显示不了台头和印章的解决办法

在 pdf.worker.js 文件中,有这么一个判断:

if (data.fieldType === 'Sig') {
     this.setFlags(AnnotationFlag.HIDDEN);
}

把这三行代码注释掉就好了。

一些资料网站

https://pdfjs.express

最新文章

  1. Git(1)
  2. Android事件总线
  3. [转]iOS开发中@property的属性weak nonatomic strong readonly等介绍
  4. cuda fft 计算
  5. Unity3D中定时器的使用
  6. linux设备驱动归纳总结(三):5.阻塞型IO实现【转】
  7. Zookeeper注册节点的掉线自动重新注册及测试方法
  8. Relevance Between Variable Declaration and Definition in C++
  9. 对css中的浮动属性float刨根解牛
  10. Java——有关日期的方法
  11. Thinking In Java读书笔记--对象导论
  12. 配置Apacheserver
  13. UVA 1400 线段树
  14. 解决网络通信中外网和内网之间的通信问题(NAT转换)
  15. 求sum=1+111+1111+........+1....111 .
  16. wiringPi库的pwm配置及使用说明
  17. selenium自动化实例: 多层框架中关于iframe的定位,以及select下拉框选择
  18. Java垃圾回收概览
  19. u盘中毒,启动显示找不到指定模块
  20. 网页布局要注意的事项,以及CSS3需要特别注意的地方。

热门文章

  1. thymeleaf checkbox的回显
  2. 函数:3ds max 给选择对象设置轴心点
  3. go 下的查询数据库的框架 ORM框架:访问mysql数据库
  4. 070_GET https://login.salesforce.com/17181/logo180.png 404 (Not Found)
  5. pytorch学习笔记(9)--神经网络模型的保存与读取
  6. [iOS]遇到了一个问题:“XXXX”中无法使用Apple Pay ,检查此应用的设置并确定其设计可使用Apple Pay”
  7. web.py 中的分页设计
  8. Java程序(数组扩容的尝试)
  9. Django安装与启动
  10. Axure的认识与使用