摘要:背景項(xiàng)目中有用到做中間層,期間有個(gè)為文件添加水印的需求,網(wǎng)上搜了不少帖子,發(fā)現(xiàn)有以下幾點(diǎn)存在的問(wèn)題。有相關(guān)方案,可以實(shí)現(xiàn),有想過(guò)用去執(zhí)行腳本去為加水印,考慮到開(kāi)發(fā)人員都是前端如果以后需要維護(hù),擴(kuò)展可能就不是那么友好了。
背景
項(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.jsAPI相對(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 # 下載安裝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、效果
源文件
水印文件
添加水印后
Github倉(cāng)庫(kù)地址
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/99737.html
摘要:基于實(shí)現(xiàn)的文檔轉(zhuǎn)換項(xiàng)目,無(wú)框架依賴,即插即用項(xiàng)目源代碼技術(shù)棧功能使用安裝配置獲取依賴編輯配置文件執(zhí)行轉(zhuǎn)換按照文件路徑轉(zhuǎn)換按照輸入輸出流轉(zhuǎn)換按照文件轉(zhuǎn)換圖片處理按照文件路徑處理按照文件處理添加水印按照文件路徑添加水印按照流添加水印按照添加水 基于libreoffice實(shí)現(xiàn)的文檔轉(zhuǎn)換項(xiàng)目,無(wú)框架依賴,即插即用 項(xiàng)目源代碼:github/workable-converter 1. 技術(shù)棧 ...
摘要:文章目錄隱藏第一迅捷轉(zhuǎn)換器的版本介紹第二迅捷轉(zhuǎn)換器的功能體驗(yàn)第一迅捷轉(zhuǎn)換器的版本介紹老蔣有看到,迅捷轉(zhuǎn)換器的版本有多個(gè)版本。而且老蔣有在體驗(yàn)這款迅捷轉(zhuǎn)換軟件的時(shí)候,速度確實(shí)提高不少,那種在線轉(zhuǎn)換的時(shí)候速度特別慢。由于工作的需要,我們很多網(wǎng)友朋友可能會(huì)希望將PDF文件格式轉(zhuǎn)換成Word、PPT、TXT 或者 Excel等格式。我們一般是用什么軟件操作的呢?比如老蔣每次遇到這樣的需求,就會(huì)找網(wǎng)上...
小編寫(xiě)這篇文章的主要目的,主要是給大家介紹一下關(guān)于python代碼實(shí)現(xiàn)pdf編輯免費(fèi)pdf工具相關(guān)知識(shí)的解答?! DF是在日常生活中使用范圍還是比較的廣泛的,很多的文檔都是PDF格式。格式穩(wěn)定是他的一個(gè)優(yōu)勢(shì),使得我們?cè)诖蛴?、分享、傳輸過(guò)程中能夠最優(yōu)的保持原有色彩和格式。 PDF各種各樣的的版本是比較的多的,它在格式的穩(wěn)定性方面雖然具有很大優(yōu)勢(shì)。但是,在可編輯性方面卻為使用者引入了另外一個(gè)困...
摘要:概述是一個(gè)使用和構(gòu)建跨平臺(tái)桌面應(yīng)用程序的框架。它設(shè)置了許可證密鑰,因此應(yīng)用程序在運(yùn)行時(shí)不會(huì)顯示水印。最后一步是創(chuàng)建控件并將它們綁定到數(shù)據(jù)源?,F(xiàn)在,請(qǐng)下載,享用控件的應(yīng)用程序吧。靈活高效的前端開(kāi)發(fā)工具包,可快速搭建企業(yè)應(yīng)用程序 概述 What is Electron?Electron是一個(gè)使用JavaScript、HTML和CSS構(gòu)建跨平臺(tái)桌面應(yīng)用程序的框架。 您可以將Electron與...
閱讀 1940·2021-09-22 15:55
閱讀 3581·2021-09-07 10:26
閱讀 702·2019-08-30 15:54
閱讀 740·2019-08-29 16:34
閱讀 899·2019-08-26 14:04
閱讀 3334·2019-08-26 11:47
閱讀 2184·2019-08-26 11:33
閱讀 2345·2019-08-23 15:17