angular2之pdf文件操作大全
最近的项目中需要显示pdf内容、下载pdf、甚至是前端生成pdf
适用于angular2、4或者更高版本
情景1.需要将页面的某个部分转成pdf文件并下载(即将页面的部分html内容转成pdf文件)
方案:
1.首先借助 html-to-image 将所需html内容转成图片,即
domtoimage.toJpeg(dom,params)
2.借助jspdf将图片转换成pdf,即pdf.addImage()这个方法,
然而这里有个坑!!!前端这里显示图片的单位是px,但是生成的pdf是按mm来计算的,像A4纸尺寸是210mm×297mm,所以这里需要做像素与毫米的转换 ,否则生成的pdf里的图片不清晰
转换还需要知道另一个参数:DPI(每英寸多少点),一般来说300DPI足够
一般来说 300DPI就足够了
象素数 / DPI = 英寸数
英寸数 * 25.4 = 毫米数,所以这里就需要你根据实际情况 计算出你这个图片的长宽 包括里面的字的大小
3.将pdf下载到用户本地,即 pdf.save(name),可指定文件名
实际代码如下:
let hideNode = document.getElementById(id).cloneNode(true);document.getElementById(id).parentElement.appendChild(hideNode);this.render.addClass(hideNode,'consulting-report-download');domtoimage.toJpeg(hideNode, {quality: 1.0,bgcolor:'#fff',style: {'opacity':'1','top':'0','left': '0'}}).then(function (dataUrl) {let img = new Image();img.src = dataUrl;img.onload = function() {let pdf = new jsPDF();pdf.addImage(dataUrl, 'JPEG', 14, 10, img.width/12, img.height/12 );//300DPI 1mm=12px pdf.save(`${name}.pdf`);}}).then(()=>{this.downReport = false;});
情景2.需要将pdf文件的内容显示在网页上
方案:
这里又分两种情况 ,
一种是后端直接给你一个pdf文件的链接,如
<pdf-viewer [src]="pdfSrc"[page]="page"[original-size]="true"style="display: block;"></pdf-viewer>
src就是后端给你的链接,page就是页数,还需要配置别的可以去github看看,这个pad-viewer是按将pdf竖向顺序显示,刚好符合产品的需求,所以这里我没有深入
还有一种情况是 用户直接上传pdf,然后需要将用户上传的pdf的内容显示在网页上
这里就需要用到HTML5 里面的 FileReader获取pdfSrc,
然后还是用到上面的<pdf-viewer>
let $img: any = document.querySelector('#file');if (typeof (FileReader) !== 'undefined') {let reader = new FileReader();reader.onload = (e: any) => {this.pdfSrc = e.target.result;};reader.readAsArrayBuffer($img.files[0]);}
情景3.直接下载pdf文件
方案:
1.window.open(url)
2.location.href = url
说实话,感觉有点low,如果您有更好的方案,希望可以互相交流
关于angular2及以上操作pdf的3种需求及解决方案,如果还有别的需求和更好的方案,欢迎交流~
转载于:https://www.cnblogs.com/BillyQin/p/7760596.html
angular2之pdf文件操作大全相关推荐
- 读取Java文件到byte数组的三种方式及Java文件操作大全(包括文件加密,String加密)
读取Java文件到byte数组的三种方式 package zs;import java.io.BufferedInputStream; import java.io.ByteArrayOutputSt ...
- java中文件,java中文件操作大全
java中文件操作大全 一.获得控制台用户输入的信息 view plaincopy to clipboardprint? / //获得控制台用户输入的信息 return throws ioexcept ...
- C++Builder文件操作大全
C++Builder文件操作大全 在编程的过程中,文件的操作是一个经常用到的问题,在C++Builder中,可以使用多种方法对文件操作,下面我就按以下几个部分对此作详细介绍,就是: 1.基于C的文件操 ...
- python对PDF文件操作
python对PDF文件操作 下载模块PyPDF2,以页为基本单位对PDF文件进行读写操作,无法直接操作每一页内容. PDF文件读操作 导入函数 from PyPDF2 import PdfFileR ...
- pypdf2 存储pdf_PyPDF2:用于PDF文件操作的Python库
pypdf2 存储pdf PyPDF2 is a pure-python library to work with PDF files. We can use the PyPDF2 module to ...
- 在线转换pdf和虚拟打印机生成pdf文件操作攻略
由于PDF具有稳定的格式和良好的视图,使得PDF格式文件越来越受工作族的欢迎.但大多人仍习惯Word编辑,所以就有了Word文档转换PDF的需求,那么有什么好的转换Word的方法呢? 小编就来介绍两种 ...
- Python 办公自动化:全网最强最详细 PDF 文件操作手册!
PDF(Portable Document Format)是一种便携文档格式,便于跨操作系统传播文档.PDF文档遵循标准格式,因此存在很多可以操作PDF文档的工具,Python自然也不例外. 而Pyt ...
- Java文件操作大全(包括文件加密,String加密)
1.创建文件夹 //import java.io.*; File myFolderPath = new File(%%1); try { if (!myFolderPath.exists()) myF ...
- MATLAB下pdf文件操作读取示例
这里写目录标题 摘要 原文件 预处理为txt 代码实现 摘要 当遇到一些需要大量数据的项目,数据的读取与储存显得尤为重要.怎样把数据从其他格式的文件中读取,并运用到程序中是很多时候我们要解决的问题.对 ...
最新文章
- ulimit -n 修改
- View及ViewGroup的事件分发及传递(二)
- 论文解读 | 基于正则化图神经网络的脑电情绪识别
- linux的Ubuntu
- swift之Generics
- mysql数据库电脑配置_教你怎样正确配置MySQL数据库SQL Mail -电脑资料
- Linux监控工具Spotlight on Unix
- 终极算法---读书笔记
- 前端利用jQuery设置日期选择框
- python + Selenium 实现自动化查询问财数据及下载Excel数据并存入到mysql
- 常见的防御DDoS攻击的方式有哪些?
- python画国旗和八卦图
- C# WinForm 文件夹选择控件 folderBrowserDialog 的应用实例
- 如何使用CubeMX创建STM32F105的程序
- 在创业公司做运营,我总结了这些经验
- 杰理ac18芯片_杰理科技推出:「梧桐」系列双模音视频 AIoT 芯片
- python:实现计算电阻Calculate resistance(附完整源码)
- 手机java应用运行卡顿_解决手机运行慢,困顿的小妙招
- 前端学习案例1-brower路由
- java 控制台 移动光标_如何使控制台中光标移动到指定位置?
热门文章
- 教你辨别Access用户级安全的两个密码
- 2000条你应知的WPF小姿势 基础篇69-73 WPF Freeze机制和Template
- [论文泛读] Dynamic placement of virtual machines for managing sla violations (IM, 2007)
- Active Directory系列之五:Active Directory的主要还原
- 如何找到 AWS 环境下应用程序中易于得手的漏洞?
- 微软结束 SolarWinds 事件调查:部分源代码被盗,1000人参与
- @白帽子,你有一封来自2020“补天杯”破解大赛的邀请函
- MHA 节点程序介绍
- LINUX命令之stat及显示的三个时间戳
- java replaceAll() 方法要用 4 个反斜杠,表示一个反斜杠,该怎么解决