Angular 与 PDF之五 实现方式的选择与扩展

 在纯web的前提下(不考虑移动端native),PDF的功能基本包括:

  • 客户端PDF:最简单的场景,实现方式也很多,基本不需要有什么顾虑的地方,简单的实现可以参考系列第一篇文章。
  • 客户端PDF预览:需要考虑html模板、css样式在正常页面与预览页面的共用问题,一样的东西写两套,那么维护起来工作量也会更大,更容易产生顾此失彼的问题,导致bug。可以参考系列第二篇文章。
  • 服务端PDF:优点在于数据量大的时候不需要考虑网络传输的问题,也可以屏蔽掉系统不同带来的PDF渲染差异问题。同理,需要考虑是不是需要支持预览,html模板,css样式、数据源逻辑与绑定,需要考虑在正常页面、预览页面和服务端渲染页面之间共享。可以参考系列第三、第四篇文章。
  • 定时PDF任务:这个需求由于比较小众,在前面的系列文章没有提及,它和服务端生成PDF其实没有本质区别,唯一需要考虑的就是权限问题。当用户从客户端发起PDF生成任务时,发送到服务端生成PDF,这时是带有当前登录用户的用户信息的。但是,当这个任务是定时任务时,是没有用户信息的。需要一个特殊的定时任务用户来负责生成PDF文件。

当然,需求是不断变化的,当PDF的需求从简单变复杂的这个过程,也是一个很好的代码重构和反思的过程,家家有本难念的经,在代码实现也是同理。希望这个系列可以帮助大家更好的设计功能,少走弯路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/167.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ 2023面试5题(四)

一、RabbitMQ有哪些作用 RabbitMQ是一个消息队列中间件,它的作用是利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行的分布式系统的集成,主要作用有以下方面: 实现应用程序之间的异步和解耦&#xff1a…

Nginx Rewrite的应用

目录 一、Nginx Rewrite 二、Rewrite的功能 1.Rewrite 跳转场景 2.Rewrite 跳转实现 3.Rewrite 实际场景 4.Rewrite 正则表达式 5.Rewrite 命令/语法格式 6.location 分类 7.location 优先级 8.Rewrite和location比较 9.根据以上了解,小案例来操…

vtk绘制折线

vtk绘制折线 引言示例一开发环境项目结构示例代码运行结果 示例二概况示例代码运行结果 引言 本文通过两种方式来绘制折线。示例一中通过vtkPolyLine来绘制折线;示例二中通过vtkLineSource来绘制折线,只不过示例二中折线是由一段一段的直线绘制,最后构成…

Prometheus+Grafana普罗米修斯搭建+监控MySQL

PrometheusGrafana普罗米修斯搭建监控MySQL 一,Prometheus 1.什么是Prometheus? ​ Prometheus 是 Cloud Native Computing Foundation 的一个监控系统项目, 集采集、监控、报警等特点于一体。 ​ Prometheus主要受启发于Google的Brogmon监控系统&…

h5手写签名示例

前言 业务中需要用户进行签字&#xff0c;如何让用户在手机端进行签字&#xff1f; 示例如下 代码已分享至Gitee: https://gitee.com/lengcz/qianming 原示例&#xff1a; https://www.jq22.com/jquery-info13488 H5实现手写签字 创建一个html页面 <!DOCTYPE html> …

计算机网络--网络编程(1)

简单认识一下传输层中的UDP和TCP&#xff1a; TCP&#xff1a;有链接&#xff0c;可靠传输&#xff0c;面向字节流&#xff0c;全双工 UDP&#xff1a;无连接&#xff0c;不可靠传输&#xff0c;面向数据报&#xff0c;全双工 有链接类似于打电话&#xff0c;通了就是有链接。…

在Linux上顺理成章在Windows上令人费解的事情你都知道吗?

&#x1f4a2;分享一些在Linux上顺理成章但在Windows上令人费解的事情有哪些你都知道吗? 权限管理&#xff1a;在Linux上&#xff0c;权限管理非常直观&#xff0c;并且可以通过命令行轻松地进行。而在Windows上&#xff0c;权限管理更加复杂&#xff0c;需要使用安全主体和权…

【Linux】ubuntu20.04上使用xrdp协议时使用不同的桌面环境,在xfce和gnome上转换

一、问题背景 笔者在按照网上一篇文章配置xrdp远程桌面服务后&#xff0c;发现得到的桌面是xfce&#xff0c;而不是笔者熟悉的原生gnome桌面。 因为感觉到别扭&#xff0c;所以我还是决定换一下。 二、解决办法 2.1 编辑主目录的.xsessionrc文件 创建或编辑名为 .xsessionr…

基于深度学习的高精度人脸口罩检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度人脸口罩检测识别系统可用于日常生活中或野外来检测与定位人脸口罩目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的人脸口罩目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5…

Python:通过飞书API接口发送通知消息

通过飞书发送应用消息&#xff0c;及时收到线上异常消息 总的来说&#xff0c;飞书消息发送的前戏&#xff0c;要比企业微信和钉钉稍复杂 相关连接 官网 https://www.feishu.cn/管理后台 https://www.feishu.cn/admin开放平台 https://open.feishu.cn/ 参数准备 首先&…

关于jetBrains的插件translation的使用

文章目录 前言国内使用问题关于无法翻译问题关于无法语音解析问题关于百度翻译Api获取关于百度引擎的invalid account(未解决)关于阿里翻译Api获取关于阿里翻译引擎Wrong request parameter(未解决)有道翻译Api关于有道Ip Address错误(未解决) 前言 translation是一个非常好用…

二.《UE4奥丁》解密哈希ID

哈希表概念 1.相信大家经常在UE4或者UE5游戏逆向中遇到下面的代码段 $ > > 41:8B42 0C > mov eax,dword ptr ds:[r10C] > $4 > 3B05 AE589B04 > cmp eax,dword ptr ds:[7FF7B68B74F4] …