摘要:背景项目中有用到做中间层,期间有个为文件添加水印的需求,网上搜了不少帖子,发现有以下几点存在的问题。有相关方案,可以实现,有想过用去执行脚本去为加水印,考虑到开发人员都是前端如果以后需要维护,扩展可能就不是那么友好了。
背景
项目中有用到node做中间层,期间有个为PDF文件添加水印的需求,网上搜了不少帖子,发现有以下几点存在的问题。
1、单页PDF的话,可以用PNG图片加到PDF上,但是实际使用情况就没那么理想,必须满足多页PDF每页都加上水印的效果方可。
2、中间想过,把PDF转成图片,图片加上水印后再转回PDF,但是感觉中间步骤太麻烦,而且会面临清晰度下降的可能。
3、Python、Java有相关方案,可以实现,有想过用node去执行Python脚本去为PDF加水印,考虑到开发人员都是前端、如果以后需要维护,扩展可能就不是那么友好了。
逛了Github和NPM,发现node-pdftk可以满足需求,不过得依赖PDFTK这个软件,进一步了解,发现PDFTK支持linux,好,直接用这个开搞。
环境项目部署是用了docker,那就用docker来吧,比较贴合情况也省事点;如果平时在自己电脑上开发,但需要linux环境的话练手或者模拟服务器环境的话,大家也可以用一个linux镜像运行一个dokcer容器,这里就不赘述了。
实现 1、app.jsAPI相对较为简单,input方法中我们输入源文件,stamp方法中我们输入水印文件,out方法中指定保存的路径,这里的话我们起了一个服务,当访问3100端口的时候就去生成我们带水印的PDF。
"use strict"; const express = require("express"); const pdftk = require("node-pdftk"); const path = require("path"); const app = express(); app.get("/", (req, res) => { pdftk .input(path.resolve(__dirname + "/../files/javascript.pdf")) .stamp(path.resolve(__dirname + "/../files/watermark.pdf")) .output(path.resolve(__dirname + "/../files/javascript_watermark.pdf")) .then(buffer => { return res.send("successful"); }) .catch(err => { console.error(err); return res.send("failed"); }); }); app.listen(3100);2、dockerfile
FROM node:7.6.0 # 创建工作目录 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY ./node_modules /usr/src/app/node_modules # 下载安装PDFTK RUN apt-get update RUN apt-get install -y pdftk # 使用PM2启动应用 CMD ["./node_modules/pm2/bin/pm2-docker", "process.yml"]3、效果
源文件
水印文件
添加水印后
Github仓库地址
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/99737.html
摘要:基于实现的文档转换项目,无框架依赖,即插即用项目源代码技术栈功能使用安装配置获取依赖编辑配置文件执行转换按照文件路径转换按照输入输出流转换按照文件转换图片处理按照文件路径处理按照文件处理添加水印按照文件路径添加水印按照流添加水印按照添加水 基于libreoffice实现的文档转换项目,无框架依赖,即插即用 项目源代码:github/workable-converter 1. 技术栈 ...
摘要:文章目录隐藏第一迅捷转换器的版本介绍第二迅捷转换器的功能体验第一迅捷转换器的版本介绍老蒋有看到,迅捷转换器的版本有多个版本。而且老蒋有在体验这款迅捷转换软件的时候,速度确实提高不少,那种在线转换的时候速度特别慢。由于工作的需要,我们很多网友朋友可能会希望将PDF文件格式转换成Word、PPT、TXT 或者 Excel等格式。我们一般是用什么软件操作的呢?比如老蒋每次遇到这样的需求,就会找网上...
小编写这篇文章的主要目的,主要是给大家介绍一下关于python代码实现pdf编辑免费pdf工具相关知识的解答。 PDF是在日常生活中使用范围还是比较的广泛的,很多的文档都是PDF格式。格式稳定是他的一个优势,使得我们在打印、分享、传输过程中能够最优的保持原有色彩和格式。 PDF各种各样的的版本是比较的多的,它在格式的稳定性方面虽然具有很大优势。但是,在可编辑性方面却为使用者引入了另外一个困...
摘要:概述是一个使用和构建跨平台桌面应用程序的框架。它设置了许可证密钥,因此应用程序在运行时不会显示水印。最后一步是创建控件并将它们绑定到数据源。现在,请下载,享用控件的应用程序吧。灵活高效的前端开发工具包,可快速搭建企业应用程序 概述 What is Electron?Electron是一个使用JavaScript、HTML和CSS构建跨平台桌面应用程序的框架。 您可以将Electron与...
阅读 1812·2021-09-22 15:55
阅读 3505·2021-09-07 10:26
阅读 604·2019-08-30 15:54
阅读 656·2019-08-29 16:34
阅读 825·2019-08-26 14:04
阅读 3231·2019-08-26 11:47
阅读 2115·2019-08-26 11:33
阅读 2277·2019-08-23 15:17