node . js怎么实现为PDF添加水印

  介绍

这篇文章将为大家详细讲解有关节点。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,效果

源文件

节点。js怎么实现为PDF添加水印

水印文件

节点。js怎么实现为PDF添加水印

添加水印后

节点。js怎么实现为PDF添加水印

关于“node . js怎么实现为PDF添加水印”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看的到。

node . js怎么实现为PDF添加水印