pdf在线预览 ng2-pdf-viewer的运用
2024-10-21 17:21:10
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
最新文章
- Git(1)
- Android事件总线
- [转]iOS开发中@property的属性weak nonatomic strong readonly等介绍
- cuda fft 计算
- Unity3D中定时器的使用
- linux设备驱动归纳总结(三):5.阻塞型IO实现【转】
- Zookeeper注册节点的掉线自动重新注册及测试方法
- Relevance Between Variable Declaration and Definition in C++
- 对css中的浮动属性float刨根解牛
- Java——有关日期的方法
- Thinking In Java读书笔记--对象导论
- 配置Apacheserver
- UVA 1400 线段树
- 解决网络通信中外网和内网之间的通信问题(NAT转换)
- 求sum=1+111+1111+........+1....111 .
- wiringPi库的pwm配置及使用说明
- selenium自动化实例: 多层框架中关于iframe的定位,以及select下拉框选择
- Java垃圾回收概览
- u盘中毒,启动显示找不到指定模块
- 网页布局要注意的事项,以及CSS3需要特别注意的地方。
热门文章
- thymeleaf checkbox的回显
- 函数:3ds max 给选择对象设置轴心点
- go 下的查询数据库的框架 ORM框架:访问mysql数据库
- 070_GET https://login.salesforce.com/17181/logo180.png 404 (Not Found)
- pytorch学习笔记(9)--神经网络模型的保存与读取
- [iOS]遇到了一个问题:“XXXX”中无法使用Apple Pay ,检查此应用的设置并确定其设计可使用Apple Pay”
- web.py 中的分页设计
- Java程序(数组扩容的尝试)
- Django安装与启动
- Axure的认识与使用