国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

node.js實現(xiàn)為PDF添加水印的示例代碼

2019-11-19 12:24:26
字體:
供稿:網(wǎng)友

背景

項目中有用到node做中間層,期間有個為PDF文件添加水印的需求,網(wǎng)上搜了不少帖子,發(fā)現(xiàn)有以下幾點存在的問題。

1、單頁PDF的話,可以用PNG圖片加到PDF上,但是實際使用情況就沒那么理想,必須滿足多頁PDF每頁都加上水印的效果方可。

2、中間想過,把PDF轉(zhuǎn)成圖片,圖片加上水印后再轉(zhuǎn)回PDF,但是感覺中間步驟太麻煩,而且會面臨清晰度下降的可能。

3、Python、Java有相關方案,可以實現(xiàn),有想過用node去執(zhí)行Python腳本去為PDF加水印,考慮到開發(fā)人員都是前端、如果以后需要維護,擴展可能就不是那么友好了。

解決方案

逛了Github和NPM,發(fā)現(xiàn)node-pdftk可以滿足需求,不過得依賴PDFTK這個軟件,進一步了解,發(fā)現(xiàn)PDFTK支持linux,好,直接用這個開搞。

環(huán)境

項目部署是用了docker,那就用docker來吧,比較貼合情況也省事點;如果平時在自己電腦上開發(fā),但需要linux環(huán)境的話練手或者模擬服務器環(huán)境的話,大家也可以用一個linux鏡像運行一個dokcer容器,這里就不贅述了。

實現(xiàn)

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# 創(chuàng)建工作目錄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、效果

源文件


水印文件


添加水印后

4、地址

Github倉庫地址

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 睢宁县| 五莲县| 石棉县| 阿瓦提县| 闻喜县| 囊谦县| 新闻| 策勒县| 通辽市| 汽车| 紫阳县| 汶川县| 玛纳斯县| 霍林郭勒市| 彭泽县| 达州市| 新疆| 三亚市| 阳信县| 临沧市| 航空| 离岛区| 长兴县| 海南省| 滨州市| 虎林市| 曲沃县| 静海县| 客服| 台北市| 柳江县| 孟州市| 马尔康县| 汝南县| 麦盖提县| 太原市| 太仆寺旗| 天长市| 钦州市| 卢湾区| 仙居县|