pdf在线预览 ng2-pdf-viewer的运用
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
pdf在线预览 ng2-pdf-viewer的运用的更多相关文章
- java原装代码完成pdf在线预览和pdf打印及下载
这是我在工作中,遇到这样需求,完成需求后,总结的成果,就当做是工作笔记,以免日后忘记,当然,能帮助到别人是最好的啦! 下面进入正题: 前提准备: 1. 项目中至少需要引入的jar包,注意版本: a) ...
- 实战动态PDF在线预览及带签名的PDF文件转换
开篇语: 最近工作需要做一个借款合同,公司以前的合同都是通过app端下载,然后通过本地打开pdf文件,而喜欢创新的我,心想着为什么不能在线H5预览,正是这个想法,说干就干,实践过程总是艰难的,折腾了3 ...
- Office在线预览及PDF在线预览的实现方式史上最全大集合
Office在线预览及PDF在线预览的实现方式大集合 一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office2007以上版本的一个PDF插件SaveAsPD ...
- 动态PDF在线预览
实战动态PDF在线预览及带签名的PDF文件转换 开篇语: 最近工作需要做一个借款合同,公司以前的合同都是通过app端下载,然后通过本地打开pdf文件,而喜欢创新的我,心想着为什么不能在线H5预览,正是 ...
- Aspose office (Excel,Word,PPT),PDF 在线预览
前文: 做个备份,拿的是试用版的 Aspose,功能见标题 代码: /// <summary> /// Aspose office (Excel,Word,PPT),PDF 在线预览 // ...
- python爬虫处理在线预览的pdf文档
引言 最近在爬一个网站,然后爬到详情页的时候发现,目标内容是用pdf在线预览的 比如如下网站: https://camelot-py.readthedocs.io/en/master/_static/ ...
- Office在线预览及PDF在线预览的实现方式大集合
一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office2007以上版本的一个PDF插件SaveAsPDFandXPS.exe可以导出PDF文件,然后再利用免 ...
- java实现word转pdf在线预览(前端使用PDF.js;后端使用openoffice、aspose)
背景 之前一直是用户点击下载word文件到本地,然后使用office或者wps打开.需求优化,要实现可以直接在线预览,无需下载到本地然后再打开. 随后开始上网找资料,网上资料一大堆,方案也各有不同,大 ...
- Office在线预览及PDF在线预览的实现方式
原文链接:http://www.officeweb365.com/officetoview.html 一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office ...
- [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!
引言 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询. 方案一 直接在浏览器中打开Office文档在页面上的链接.会弹出如下窗口: 优点:主流浏览器都支持. 缺点: ...
随机推荐
- Unix时间戳转化成普通日期
var time = 1630634462000; //13位数 var unixTimestamp = new Date(time); var commonTime = unixTimestamp. ...
- replace 常用积累
1.替换有,或者.为: obj.keyword.replace(/,|./g,';') 2.替换元素标签类似于<em>文字</em>这种 let name=item.name. ...
- Fast Report 分栏分页
Layout 设置布局 AcrossThenDown是水平分栏 DownThenAcross是垂直分栏
- python日志logging配置
python日志logging配置 为了方便ELK收集日志,将日志打印成json格式 开发过程中,使用json格式不方便排查问题 本文章使用python的logging模块,一步步增加配置,来说明每个 ...
- CentOS 7--Nginx安装
1.安装依赖 yum install -y gcc-c++pcre pcre-develzlib zlib-developenssl openssl-devel 2.下载Nginx wget http ...
- feign返回值解决反序列化对象嵌套List失败的问题
文摘 问题描述 当用feign client远程调用时,返回的复杂对象反序列化报错. 错误信息: Caused by: com.fasterxml.jackson.databind.exc.Misma ...
- getClassLoader
类加载器(class loader)用来加载 Java 类到 Java 虚拟机中.一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编 ...
- HCIP-进阶实验05-Eth-Trunk配置部署
HCIP-进阶实验06-Eth-Trunk配置部署 1 实验需求 1.1 实验拓扑 1.2 实验环境说明 无 1.3 实验需求 本实验共采用3台三层交换机.1台路由器.认真分析实验需求,明确每步考查的 ...
- (0319) uvmgen的使用,产生的UVM环境介绍
qq https://blog.csdn.net/hh199203/article/details/118210541
- Java基础——IO模型详解