在前一篇文章中介绍了《如何使用PDF.js在渲染PDF文档时添加水印》。但是仅仅有水印还不够,如果是展示一些比较敏感的信息,还需要对指定内容进行脱敏处理,如姓名、手机号、家庭住址和银行卡号
等等。PDF.js
也支持对渲染的文本内容进行自定义。
在H5页面中渲染文档类内容时,总会遇到这样一个需求:可以不可以给文档加上水印用以声明版权、追踪文档或真伪鉴别?本文将介绍如何在渲染时给PDF文档加上水印。
工作中经常会遇到一个需求是在H5页面中渲染PDF文档,虽然现在许多浏览器都支持直接打开预览,但是不同的浏览器中体验并不完全一致,且有些浏览器点击PDF文档链接后是下载行为,这样的用户体验并不好。有时我们甚至需要开发一些自定义需求来显示PDF,这时Mozilla
开源的PDF.js
库就可以满足我们的需求。
日常开发中我们经常会遇到这样一种情况:有两个实体图书Book
和文件File
是多对多的关系,但是一般我们只关心与图书关联了多少文件而不关心文件关联了多少图书。所以通常我们在Book
中用一个属性file_ids
以逗号分割
的方式存储多个File
的id。
但是File
的id是一个Long
类型的自增主键
,我们将Book
对象查询出来后还要再对file_ids
属性进行分割处理,处理完保存时又要进行逗号拼接,非常麻烦。有没有一个办法可以将这个繁琐的操作简化呢?JPA
有一个注解@javax.persistence.Convert
可以帮我们做这件事。
CSV文件以纯文本形式存储表格数据。不同于Excel文件复杂的内容格式,纯文本文件可以非常方便地使用Shell命令处理。
在最近的工作中遇到一个问题:客户导出的用户数据有60w条之多,全部保存在一个CSV文件中。要导入系统中遇到了几个问题:
- 由于考虑不周,在导入用户的脚本中没有按行读取CSV文件,而是一次性全部加载到内存中循环处理。在这样的情况下就必须要考虑大数据量导入时内存溢出的问题。
- 每导入一个用户系统都要做触发相关事件等额外操作。这就导致如果是一个文件从头到尾导入,速度会非常慢,时间过长无法接受。期望可以使用多个文件并行导入。
- 期望在导入过程中某一条数据出错导致脚本崩溃时,可以尽可能小范围排查数据,也要尽可能减少重试时检查已导入的数据。
综合考虑,我们需要把这个巨大的CSV拆分为小文件,每个文件2w行且第一行保留表头。