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