3 Star 2 Fork 0

Eui.cc / pdf_watermark

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
waterMark.js 2.77 KB
一键复制 编辑 原始数据 按行查看 历史
const { degrees, PDFDocument, rgb } = require('pdf-lib')
const fontkit = require('@pdf-lib/fontkit')
const path = require('node:path')
const fs = require('node:fs')
const FontPath = path.join(process.env.windir, 'fonts')
module.exports.add_mark = async function( arg ){
const pdfDoc = await PDFDocument.load( fs.readFileSync(arg.file))
//3. 自定义字体,如不需要使用自定义字体可以将这一段全部注释掉,也不用下载自定义字体文件和自定义字体工具fontkit
//将自己下载好的.ttf文件放置项目中,然后访问文件路径
const fonturl = path.join(FontPath, arg.font)
const fontBytes = fs.readFileSync(fonturl)
// 自定义字体挂载、fontkit为自定义字体注册工具
pdfDoc.registerFontkit(fontkit)
const customFont = await pdfDoc.embedFont(fontBytes,{subset:true})
// 内置字体(不支持中文), 如果水印中不包含中文可直接用内置字体,本次这里没用到内置字体
// const helveticaFont = await pdfDoc.embedFont(StandardFonts.Helvetica)
//4. 添加水印
//为每页pdf添加文字水印
const pages = pdfDoc.getPages()
for (let i = 0; i < pages.length; i++) {
const noPage = pages[i]
const { width, height } = noPage.getSize()
if( arg.style ){ //居中
noPage.drawText(arg.txt, {
x: width / 2,
y: height / 2,
size: arg.size * 1,
font: customFont, //这里使用的是自定义字体
//使用上面定义好的内置字体 font:helveticaFont
color: rgb(arg.color_ar[0]/255, arg.color_ar[1]/255, arg.color_ar[2]/255),
rotate: degrees(arg.dg * 1),
opacity: arg.color_ar[3] * 1,
})
}else {
for (let i = 0; i < arg.h * 1; i++) {
for (let j = 0; j < arg.l * 1; j++) {
noPage.drawText(arg.txt, {
x: arg.x * 1 + (width / arg.l) * j,
y: arg.y * 1 + (height / arg.h) * i,
size: arg.size * 1,
font: customFont, //这里使用的是自定义字体
//使用上面定义好的内置字体 font:helveticaFont
color: rgb(arg.color_ar[0]/255, arg.color_ar[1]/255, arg.color_ar[2]/255),
rotate: degrees(arg.dg * 1),
opacity: arg.color_ar[3] * 1,
})
}
}
}
}
//5. 保存pdf文件的unit64Arrary文件流
const pdfBytes = await pdfDoc.save();
try {
fs.accessSync(arg.sfile)
return -1
} catch (error) {
fs.writeFileSync(arg.sfile, pdfBytes)
return 1
}
}
JavaScript
1
https://gitee.com/cadcamzy/pdf_watermark.git
git@gitee.com:cadcamzy/pdf_watermark.git
cadcamzy
pdf_watermark
pdf_watermark
master

搜索帮助