node.js如何为PDF添加水印(代码示例)

本篇文章给大家带来的内容是关于node.js如何为pdf添加水印(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助

项目中有用到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.js

API相对较为简单,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/appWORKDIR /usr/src/appCOPY ./node_modules /usr/src/app/node_modulesRUN npm set registry https://registry.npm.taobao.org/# 下载安装PDFTKRUN apt-get updateRUN apt-get install -y pdftk# 使用PM2启动应用CMD ["./node_modules/pm2/bin/pm2-docker", "process.yml"]

登录后复制

3、效果

源文件

3786661003-5c06942bcf5e7_articlex.png

水印文件

3353677356-5c06945657ca7_articlex.png

添加水印后

3745261474-5c069477df4c7_articlex.png

以上就是node.js如何为PDF添加水印(代码示例)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2635988.html

(0)
上一篇 2025年3月7日 04:56:55
下一篇 2025年2月27日 15:39:24

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • node.js中的env如何使用

    node.js的环境变量存储在名为process.env的对象中,环境变量就像一个包含运行应用程序最基本的设置的框,本篇文章就来给大家介绍关于node.js中的env的使用方法。 node.js与JavaScript源代码是分开管理环境变量…

    2025年3月7日
    200
  • node.js中的Path如何确认

    node_path是node.js的环境变量,环境变量是在os中使用node.js的最基本设置值,由于其重要性,也称为系统变量。 NODE_PATH描述了Node.js的模块安装在哪个目录(文件夹)中,NODE_PATH路径具有目标地址的含…

    2025年3月7日
    200
  • nodejs是做什么的?有哪些功能

    多年来,随着许多流行框架(如bootstrap,angular js等)的推出,现代web应用程序已经走过了漫长的道路,所有这些框架都基于流行的javascript框架。但是,当开发基于服务器的应用程序时,只有一种空白,这就是node.js…

    2025年3月7日
    200
  • JavaScript中异步编程的方法有哪些?JavaScript异步编程的方法介绍

    本篇文章给大家带来的内容是关于javascript中异步编程的方法有哪些?javascript异步编程的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 我们知道Javascript语言的执行环境是”单线…

    2025年3月7日
    200
  • webpack原理的深入介绍(附示例)

    本篇文章给大家带来的内容是关于webpack原理的深入介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 本文抄自《深入浅出webpack》,建议想学习原理的手打一遍,操作一遍,给别人讲一遍,然后就会了 在阅读前…

    2025年3月7日
    200
  • JavaScript运行原理的详细介绍

    本篇文章给大家带来的内容是关于javascript运行原理的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 JavaScript运行原理 知其然,也要知其所以然,这里主要谈一谈对JavaScript运行原理的理解。…

    编程技术 2025年3月7日
    200
  • 如何将Node.js与MySQL连接?

    在本篇文章中,我们假设你已在系统上安装了node.js,npm和mysql。我们将介绍关于在系统上安装node.js mysql驱动程序模块以及使用node.js连接到mysql的示例程序。 Node.js是一种流行的编程语言,如用于Web…

    2025年3月7日
    200
  • JavaScript中Symbol 类型有什么用?

    本篇文章给大家带来的内容是关于JavaScript中Symbol 类型有什么用?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 Symbols 是 ES6 引入了一个新的数据类型 ,它为 JS 带来了一些好处,尤其是对象属性…

    编程技术 2025年3月7日
    200
  • 如何在Node.Js中启用HTTP/2.0?

    node-http2是一个节点模块,为nodejs应用程序提供http/2协议的客户端和服务器实现。此节点api与扩展支持http/2的节点https模块非常相似。 安装Node.Js 如果已经在系统上安装了node.js,则可以跳过此步骤…

    2025年3月7日
    200
  • 如何使用PPA在Ubuntu上安装最新的Node.js和NPM

    node.js是一个基于chrome javascript运行的平台,可轻松构建快速,可扩展的网络应用程序。最新版本node.js ppa由其官方网站维护。我们可以将此ppa添加到您的ubuntu 19.04,18.04 lts,16.04…

    2025年3月7日
    200

发表回复

登录后才能评论