最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年12月05日 09:04:29   作者:wy丶  
這篇文章主要介紹了node.js實現(xiàn)為PDF添加水印的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

背景

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

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

2、中間想過,把PDF轉成圖片,圖片加上水印后再轉回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/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啟動應用
CMD ["./node_modules/pm2/bin/pm2-docker", "process.yml"]

3、效果

源文件


水印文件


添加水印后

4、地址

Github倉庫地址

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 詳解Node.js項目APM監(jiān)控之New Relic

    詳解Node.js項目APM監(jiān)控之New Relic

    本篇文章主要介紹了Node.js項目APM監(jiān)控之New Relic,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • nodejs進階(6)—連接MySQL數(shù)據(jù)庫示例

    nodejs進階(6)—連接MySQL數(shù)據(jù)庫示例

    本篇文章主要介紹了nodejs進階(6)—連接MySQL數(shù)據(jù)庫示例,詳細的介紹了NodeJS操作MySQL數(shù)據(jù)庫,作為應用最為廣泛的開源數(shù)據(jù)庫則成為我們的首選,有興趣的可以了解一下。
    2017-01-01
  • 利用Mongoose讓JSON數(shù)據(jù)直接插入或更新到MongoDB

    利用Mongoose讓JSON數(shù)據(jù)直接插入或更新到MongoDB

    這篇文章主要給大家介紹了利用Mongoose讓JSON數(shù)據(jù)直接插入或更新到MongoDB數(shù)據(jù)庫的相關資料,文中詳細介紹了配置Mongoose、創(chuàng)建目錄及文件、插入數(shù)據(jù),POST提交JSON增加一條記錄以及詢數(shù)據(jù),取出剛增加的記錄等內容,需要的朋友可以參考下。
    2017-05-05
  • nodejs版本管理工具nvm的安裝與使用小結

    nodejs版本管理工具nvm的安裝與使用小結

    在項目開發(fā)過程中,使用到vue框架技術,需要安裝node下載項目依賴,本文主要介紹了nodejs版本管理工具nvm的安裝與使用小結,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • node.js中的fs.symlink方法使用說明

    node.js中的fs.symlink方法使用說明

    這篇文章主要介紹了node.js中的fs.symlink方法使用說明,本文介紹了fs.symlink的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 詳解離線安裝npm包的幾種方法

    詳解離線安裝npm包的幾種方法

    這篇文章主要介紹了詳解離線安裝npm包的幾種方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • NodeJS實現(xiàn)同步的方法

    NodeJS實現(xiàn)同步的方法

    今天小編就為大家分享一篇關于NodeJS實現(xiàn)同步的方法,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 如何讓node運行es6模塊文件及其原理詳解

    如何讓node運行es6模塊文件及其原理詳解

    這篇文章主要介紹了如何讓node運行es6模塊文件及其原理詳解,詳細的介紹了2種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Node.js 中判斷一個文件是否存在

    Node.js 中判斷一個文件是否存在

    這篇文章主要記錄一些 Node.js 應用中的小知識點,如果你 Google/Baidu “Node.js 如何判斷文件是否存在” 發(fā)現(xiàn)給出的很多答案還是使用的 fs.exists,這里不推薦使用 fs.exists 你可以選擇 fs.stat 或 fs.access。
    2020-08-08
  • Node.js在圖片模板上生成二維碼圖片并附帶底部文字說明實現(xiàn)詳解

    Node.js在圖片模板上生成二維碼圖片并附帶底部文字說明實現(xiàn)詳解

    這篇文章主要介紹了Node.js在圖片模板上生成二維碼圖片并附帶底部文字說明實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08

最新評論

方正县| 太仓市| 罗田县| 九龙城区| 广宁县| 鹤庆县| 冀州市| 崇仁县| 青龙| 昌黎县| 乡宁县| 象州县| 茂名市| 长沙市| 高唐县| 神农架林区| 宜宾县| 辽中县| 叶城县| 故城县| 行唐县| 汕头市| 五大连池市| 石景山区| 紫金县| 西城区| 古田县| 永胜县| 旬邑县| 岳普湖县| 老河口市| 乌恰县| 中超| 岑溪市| 望江县| 交城县| 佛教| 洮南市| 来凤县| 福安市| 宁陕县|