问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么用javascript对网页视频、图片和文档加水印?不是用软件实现的_百度...

发布网友 发布时间:2022-05-02 22:26

我来回答

5个回答

懂视网 时间:2022-04-22 16:55

本篇文章给大家带来的内容是关于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/app
WORKDIR /usr/src/app

COPY ./node_modules /usr/src/app/node_modules

RUN npm set registry https://registry.npm.taobao.org/

# 下载安装PDFTK
RUN apt-get update
RUN 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

热心网友 时间:2022-04-22 14:03

javascript 没有这个功能·······必须在服务器端来解决····

热心网友 时间:2022-04-22 15:21

javascript没有这个功能,除非是node.js

热心网友 时间:2022-04-22 16:56

加水印的功能一般用 php来实现。

热心网友 时间:2022-04-22 18:47

如果你只想表面上有水印的话,可以把一个水印的层放在视频上。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 黑龙江债权转让合同纠纷该怎样取证 安徽债权转让合同纠纷应该怎么样取证 房产官司律师费多少 窗帘顶装和侧装哪种好 js给用零宽字符加水印 手机刷机还要密码。 为什麽手机刷机时要密码? 猪饲料为什么不能饲喂反刍动物? 猪的生活习性主要是什么 罗马杆安装多高最合适? 谁知道牛有几个胃,猪有几个胃,牛胃的名字分别叫什么?猪胃的别的名字叫什么? 猪是不是反刍动物 天花板装窗帘杆跟侧装窗帘杆,咋装?有啥区别? 猪反刍是什么病 为什么我的手机刷机还要锁屏密码? ∴猪的生活习性 新华字典中为什么标注猪为反刍动物? 反刍动物是指什么意思啊? sybase 数据库查询工具 反刍动物的特点是什么 “反刍”是什么意思?有哪些动物是反刍动物? 运行空间不足请重新开启小程序 信用卡刚还款马上刷出来有关系吗 如何用node.js批量给图片加水印 为什么刷机之后还是要密码? JavaScript高手请进~ 打孔窗帘侧装和吊装有什么区别 会JS 的老师 帮我看下 网页中有随机采集的图片, 怎么样才能在图片上面显... 窗帘安装罗马杆好还是轨道杆好 ckeditor .net 版 加图片水印功能。谁有现成代码 IE10中 pointeEvents:none;(让水印遮挡页面的点击事件)不兼容。可以... 有什么好方法防止自己网页的内容被采集 客厅没做吊顶 房顶可以顶装双杆罗马杆吗 容易掉下来吗? 罗马杆什么情况下侧装 如何为fckeditor 上传图片添加水印功能 时政热点:正视当代大学生的心理问题? 2006年影响大学生的十大事件 最近有关大学生的热点问题有哪些?求回答,急用…… 最近大学生关注的热点问题是什么? 2011年两会关于大学生就业关注度? 大学校园新闻深度报道都可以涉及哪些方面? 单买小牛电动车不要电瓶是多少钱? 问连接sybase数据库的客户端工具,都有哪些