这篇文章将为大家详细讲解有关节点。js怎么实现为PDF添加水印,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
js是什么
js是JavaScript的简称,它是一种直译式的脚本语言,其解释器被称为JavaScript引擎,是浏览器的一部分,主要用于web的开发,可以给网站添加各种各样的动态效果,让网页更加美观。
<强>背景强>
项目中有用到节点做中间层,期间有个为PDF文件添加水印的需求,网上搜了不少帖子,发现有以下几点存在的问题。
1,单页PDF的话,可以用PNG图片加到PDF上,但是实际使用情况就没那么理想,必须满足多页PDF每页都加上水印的效果方可。
2,中间想过,把PDF转成图片,图片加上水印后再转回,但是感觉中间步骤太麻烦,而且会面临清晰度下降的可能。
3, Python, Java有相关方案,可以实现,有想过用节点去执行Python脚本去为PDF加水印,考虑到开发人员都是前端,如果以后需要维护,扩展可能就不是那么友好了。
<>强解决方案强>
逛了Github和NPM,发现node-pdftk可以满足需求,不过得依赖PDFTK这个软件,进一步了解,发现PDFTK支持linux,好,直接用这个开搞。
<强>环境强>
项目部署是用了码头工人,那就用码头工人来吧,比较贴合情况也省事点,如果平时在自己电脑上开发,但需要linux环境的话练手或者模拟服务器环境的话,大家也可以用一个linux镜像运行一个dokcer容器,这里就不赘述了。
<>强实现强>
1,应用。js
API相对较为简单,输入方法中我们输入源文件,印章方法中我们输入水印文件,从方法中指定保存的路径,这里的话我们起了一个服务,当访问3100端口的时候就去生成我们带水印的PDF。
& # 39; use 严格# 39;; const express =,要求(& # 39;表达# 39;); const pdftk =,要求(& # 39;node-pdftk& # 39;); const path =,要求(& # 39;path & # 39;); const app =,表达(); app.get(& # 39;/& # 39;,,(要求,res),=祝辞,{ pdftk才能 ,,,.input (path.resolve(时间+ __dirname & # 39;/. ./文件/javascript.pdf& # 39;)) ,,,.stamp (path.resolve(时间+ __dirname & # 39;/. ./文件/watermark.pdf& # 39;)) ,,,.output (path.resolve(时间+ __dirname & # 39;/. ./文件/javascript_watermark.pdf& # 39;)) ,,,不要犹豫(buffer =祝辞,{ ,,,,,return res.send(& # 39;成功# 39;); ,,,}) ,,,.catch (err =祝辞,{ ,,,,,console.error(错); ,,,,,return res.send(& # 39;失败# 39;); ,,,}); }); app.listen (3100),
2, dockerfile
得到节点:7.6.0 #,创建工作目录 RUN mkdir  -p /usr/src/应用程序 WORKDIR /usr/src/应用程序 COPY 。/node_modules /usr/src/app/node_modules RUN npm  set registry https://registry.npm.taobao.org/#,下载安装PDFTK RUN apt-get 更新 RUN apt-get  install -y  pdftk #,使用PM2启动应用 CMD [“。/node_modules pm2/bin/pm2-docker",,“process.yml"]
3,效果
源文件
水印文件
添加水印后
关于“node . js怎么实现为PDF添加水印”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看的到。