如何在node.js為PDF添加水印?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)專業(yè)提供服務(wù)器托管服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買服務(wù)器托管服務(wù),并享受7*24小時(shí)金牌售后服務(wù)。項(xiàng)目中有用到node做中間層,期間有個(gè)為PDF文件添加水印的需求,網(wǎng)上搜了不少帖子,發(fā)現(xiàn)有以下幾點(diǎn)存在的問題。
1、單頁P(yáng)DF的話,可以用PNG圖片加到PDF上,但是實(shí)際使用情況就沒那么理想,必須滿足多頁P(yáng)DF每頁都加上水印的效果方可。
2、中間想過,把PDF轉(zhuǎn)成圖片,圖片加上水印后再轉(zhuǎn)回PDF,但是感覺中間步驟太麻煩,而且會(huì)面臨清晰度下降的可能。
3、Python、Java有相關(guān)方案,可以實(shí)現(xiàn),有想過用node去執(zhí)行Python腳本去為PDF加水印,考慮到開發(fā)人員都是前端、如果以后需要維護(hù),擴(kuò)展可能就不是那么友好了。
解決方案
逛了Github和NPM,發(fā)現(xiàn)node-pdftk可以滿足需求,不過得依賴PDFTK這個(gè)軟件,進(jìn)一步了解,發(fā)現(xiàn)PDFTK支持linux,好,直接用這個(gè)開搞。
環(huán)境
項(xiàng)目部署是用了docker,那就用docker來吧,比較貼合情況也省事點(diǎn);如果平時(shí)在自己電腦上開發(fā),但需要linux環(huán)境的話練手或者模擬服務(wù)器環(huán)境的話,大家也可以用一個(gè)linux鏡像運(yùn)行一個(gè)dokcer容器,這里就不贅述了。
實(shí)現(xiàn)
1、app.js
API相對(duì)較為簡單,input方法中我們輸入源文件,stamp方法中我們輸入水印文件,out方法中指定保存的路徑,這里的話我們起了一個(gè)服務(wù),當(dāng)訪問3100端口的時(shí)候就去生成我們帶水印的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/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啟動(dòng)應(yīng)用 CMD ["./node_modules/pm2/bin/pm2-docker", "process.yml"]3、效果
源文件
水印文件
添加水印后
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)建站的支持。
新聞標(biāo)題:如何在node.js為PDF添加水印-創(chuàng)新互聯(lián)
鏈接分享:http://jinyejixie.com/article26/dpejjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、ChatGPT、移動(dòng)網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站制作、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容