如何使用nodejs在pdf中添加水印?

q43xntqr  于 2023-02-12  发布在  Node.js
关注(0)|答案(3)|浏览(429)

我通过nodejs生成的pdf文件。我想添加水印到这个生成的pdf文件。我用动态html-pdf插件在我的代码。如果有任何选项添加水印在动态html-pdf文件。在这里我显示我的样本代码在这里。

var path=require('path');
var pdf = require('dynamic-html-pdf');
var html='<!DOCTYPE html><html><head><style>';
html=html+'</style>';
html=html+'</head>';
html=html+'<body>';
html=html+'<div class="divstyle1" id="content">A computer is a device that can be instructed to carry out sequences of arithmetic or logical operations automatically via computer programming. </div>';
html=html+'</body></html>';
var options = {
    format: "A4",
    orientation: "portrait",
    border: "10mm",
    base: 'file://' + path.resolve('./public/graph') + '/'
};
var document = {
    type: 'file', 
    template: html,
    context: {
        img:'./public/graph/logo.jpg'
    },
    path: "./public/graph/mypdf.pdf"    
};
pdf.create(document, options)
.then(res => {
    res.status(200).json({
        message: 'pdf created'
    });  
})
.catch(error => {
    res.status(200).json({
        message: 'error'
    });

});
j8ag8udp

j8ag8udp1#

保存pdf文档后,使用image-watermark模块在生成的pdf中添加水印。

var watermark = require('image-watermark'); 
watermark.embedWatermark('/path/to/your/generated/pdf', {'text' : 'sample watermark'});
wh6knrhe

wh6knrhe2#

创建pdf后,使用此包为pdf文件添加水印。pdf-watermark

const PDFWatermark = require('pdf-watermark');

      await PDFWatermark({
        pdf_path: "./newsletter.pdf",
        text: "Gentech",  //optional
        image_path: "./everest.png",
      });
js5cn81o

js5cn81o3#

另一个在PDF文档中添加文本水印的解决方案是Aspose.PDF Cloud SDK for Node.js,它是一个商业产品,但每月提供150次免费API调用。
目前支持云存储的PDF文件处理:Assume内部存储,Amazon S3,DropBox,Google Drive存储,Google云存储,Windows Azure存储和FTP存储。但是,我们计划添加对处理来自请求主体(流)的PDF文档的支持。
附言:我是Aspose的开发人员传道者。

const { PdfApi } = require("asposepdfcloud");
const { TextStamp }= require("asposepdfcloud/src/models/textStamp");
const { TextState }= require("asposepdfcloud/src/models/textState");
const { HorizontalAlignment }= require("asposepdfcloud/src/models/horizontalAlignment");
const { VerticalAlignment }= require("asposepdfcloud/src/models/verticalAlignment");
const { Rotation }= require("asposepdfcloud/src/models/rotation");

// Get Client Id and Client Secret from https://dashboard.aspose.cloud/
pdfApi = new PdfApi("xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxx");
var fs = require('fs');

const name = "Test.pdf";
const pageNumber = 1;
const remoteTempFolder = "Temp";
const localTestDataFolder = "C:\\Temp";
const path = remoteTempFolder + "\\" + name;
var data = fs.readFileSync(localTestDataFolder + "\\" + name);

// Upload File
pdfApi.uploadFile(path, data).then((result) => {  
                     console.log("Uploaded File");    
                    }).catch(function(err) {
    // Deal with an error
    console.log(err);
});

// Add Text Stamp
const textState = new TextState();
textState.fontSize = 14;
textState.font = 'Arial';

const stamp = new TextStamp();
stamp.background = true;
stamp.leftMargin = 1;
stamp.rightMargin = 2;
stamp.topMargin = 3;
stamp.bottomMargin = 4;
stamp.horizontalAlignment = HorizontalAlignment.Center;
stamp.verticalAlignment = VerticalAlignment.Center;
stamp.opacity = 1;
stamp.rotate = Rotation.None;
stamp.rotateAngle = 0;
stamp.xIndent = 0;
stamp.yIndent = 0;
stamp.zoom = 1;
stamp.textAlignment = HorizontalAlignment.Center;
stamp.value = "Aspose.PDF Cloud";
stamp.textState = textState;

pdfApi.postPageTextStamps(name, pageNumber,[stamp], null, remoteTempFolder).then((result) => {    
    console.log(result.body.code);                  
}).catch(function(err) {
    // Deal with an error
    console.log(err);
});
//Download file
const localPath = "C:/Temp/textstamp.pdf";

pdfApi.downloadFile(path).then((result) => {    
    console.log(result.response.statusCode);    
    console.log(result.body.byteLength);    
    fs.writeFileSync(localPath, result.body);
    console.log("File Downloaded");    
}).catch(function(err) {
    // Deal with an error
    console.log(err);
});

相关问题