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的运用的更多相关文章

  1. java原装代码完成pdf在线预览和pdf打印及下载

    这是我在工作中,遇到这样需求,完成需求后,总结的成果,就当做是工作笔记,以免日后忘记,当然,能帮助到别人是最好的啦! 下面进入正题: 前提准备: 1. 项目中至少需要引入的jar包,注意版本: a)  ...

  2. 实战动态PDF在线预览及带签名的PDF文件转换

    开篇语: 最近工作需要做一个借款合同,公司以前的合同都是通过app端下载,然后通过本地打开pdf文件,而喜欢创新的我,心想着为什么不能在线H5预览,正是这个想法,说干就干,实践过程总是艰难的,折腾了3 ...

  3. Office在线预览及PDF在线预览的实现方式史上最全大集合

    Office在线预览及PDF在线预览的实现方式大集合 一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office2007以上版本的一个PDF插件SaveAsPD ...

  4. 动态PDF在线预览

    实战动态PDF在线预览及带签名的PDF文件转换 开篇语: 最近工作需要做一个借款合同,公司以前的合同都是通过app端下载,然后通过本地打开pdf文件,而喜欢创新的我,心想着为什么不能在线H5预览,正是 ...

  5. Aspose office (Excel,Word,PPT),PDF 在线预览

    前文: 做个备份,拿的是试用版的 Aspose,功能见标题 代码: /// <summary> /// Aspose office (Excel,Word,PPT),PDF 在线预览 // ...

  6. python爬虫处理在线预览的pdf文档

    引言 最近在爬一个网站,然后爬到详情页的时候发现,目标内容是用pdf在线预览的 比如如下网站: https://camelot-py.readthedocs.io/en/master/_static/ ...

  7. Office在线预览及PDF在线预览的实现方式大集合

    一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office2007以上版本的一个PDF插件SaveAsPDFandXPS.exe可以导出PDF文件,然后再利用免 ...

  8. java实现word转pdf在线预览(前端使用PDF.js;后端使用openoffice、aspose)

    背景 之前一直是用户点击下载word文件到本地,然后使用office或者wps打开.需求优化,要实现可以直接在线预览,无需下载到本地然后再打开. 随后开始上网找资料,网上资料一大堆,方案也各有不同,大 ...

  9. Office在线预览及PDF在线预览的实现方式

    原文链接:http://www.officeweb365.com/officetoview.html 一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office ...

  10. [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!

    引言 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询. 方案一 直接在浏览器中打开Office文档在页面上的链接.会弹出如下窗口: 优点:主流浏览器都支持. 缺点: ...

随机推荐

  1. HTML初步了解

    W3C:万维网联盟,是国际化最著名的标准化组织. HTML:(Hyper Text Markup Language )超文本标记语言,网页编程语言,用于定义文档的内容和结构. CSS:(Cascadi ...

  2. Windows 下安装 Bun:像 Node 或 Deno 一样的现代 JavaScript 运行时

    背景 最近前端工具链又火了一个项目 Bun,可以说内卷非常严重.Bun 是一个新的 JavaScript 运行时,内置了打包器.转译器.任务运行器和 npm 客户端. Bun 是像 Node 或 De ...

  3. Python-网络编程和多进程多线程开发

    网络编程 osi7层模型 以通过访问网站发送请求数据为例,每一层会做如下的事情 应用层:规定数据的格式. "GET /s?wd=你好 HTTP/1.1\r\nHost:www.baidu.c ...

  4. go项目,出现too many open files

    刚开始碰到这种异常,以为是代码写的有问题,准备抽时间去改,等有时间正式此问题的时候,发现这种问题一般只会在linux系统上出现,原因如下:linux系统限制了文件打开的最大文件句柄数,系统默认一般是1 ...

  5. 【面试题】面试突击71:GET 和 POST 有什么区别?

    携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情 GET 和 POST 是 HTTP 请求中最常用的两种请求方法,在日常开发的 RESTful 接口中,都能 ...

  6. go环境 依赖管理 基本命令

    Go安装 Go官网下载地址:https://golang.org/dl/ Go官方镜像站(推荐):https://golang.google.cn/dl/ Windows 选择Windows版本下载安 ...

  7. 富文本编辑器第一次正常显示,第二次渲染失败 -----在使用laravel-admin 时

    第二次显示 解决方法: 在每次获取富文本编辑器实例的时候,先删除一下,避免之前已经实例化造成的渲染失败

  8. docker tar包下载地址

    https://download.docker.com/linux/static/stable/x86_64/

  9. 以EEPROM为例的硬件IIC的使用

    目录 参考调试MPU6050与EEPROM的经验,整合了目标内存/寄存器地址是否为16位的情况,合并了单字节与多字节间的操作,添加了返回值与读写超时功能:硬件IIC的7位从机地址查询方式读写参考代码 ...

  10. java实现读取json文件指定字段值

    使用场景 现有一个大数据的json文件,每条数据有多层数据信息.现在想把其中某个字段提取并叠加计算. json文件格式 1 { 2 "MsgID":"111", ...