如何在node.js為PDF添加水印-創(chuàng)新互聯(lián)

如何在node.js為PDF添加水???很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)專業(yè)提供服務(wù)器托管服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購(gòu)買服務(wù)器托管服務(wù),并享受7*24小時(shí)金牌售后服務(wù)。

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

1、單頁(yè)P(yáng)DF的話,可以用PNG圖片加到PDF上,但是實(shí)際使用情況就沒(méi)那么理想,必須滿足多頁(yè)P(yáng)DF每頁(yè)都加上水印的效果方可。
2、中間想過(guò),把PDF轉(zhuǎn)成圖片,圖片加上水印后再轉(zhuǎn)回PDF,但是感覺(jué)中間步驟太麻煩,而且會(huì)面臨清晰度下降的可能。
3、Python、Java有相關(guān)方案,可以實(shí)現(xiàn),有想過(guò)用node去執(zhí)行Python腳本去為PDF加水印,考慮到開(kāi)發(fā)人員都是前端、如果以后需要維護(hù),擴(kuò)展可能就不是那么友好了。

解決方案

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

環(huán)境

項(xiàng)目部署是用了docker,那就用docker來(lái)吧,比較貼合情況也省事點(diǎn);如果平時(shí)在自己電腦上開(kāi)發(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);
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、效果

源文件

如何在node.js為PDF添加水印

水印文件

如何在node.js為PDF添加水印

添加水印后

如何在node.js為PDF添加水印

看完上述內(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://muchs.cn/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)站立場(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)

成都定制網(wǎng)站建設(shè)