当前位置: 首页 > news >正文

程序员网站建设青岛网站设计微动力

程序员网站建设,青岛网站设计微动力,成都网站建设上市,惠州网站设计培训场景&#xff1a;前端下载 pdf 文件的时候&#xff0c;需要加上水印&#xff0c;再反给用户下载用到的库&#xff1a;pdf-lib 和 pdf-lib/fontkit 一、引入pdf-lib插件 使用 cdn 引入 pdf-lib 包 <script src"https://cdnjs.cloudflare.com/ajax/libs/pdf-lib/1.14.1/…

场景:前端下载 pdf 文件的时候,需要加上水印,再反给用户下载
用到的库pdf-lib 和 @pdf-lib/fontkit

一、引入pdf-lib插件

使用 cdn 引入 pdf-lib 包

<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf-lib/1.14.1/pdf-lib.min.js"></script>

使用 cdn 引入自定义字体工具,因pdf-lib添加水印时默认不支持中文,所以必须自定义一个字体来显示中文水印

<script src="https://unpkg.com/@pdf-lib/fontkit/dist/fontkit.umd.js"></script>

引入文件下载工具,pdf添加水印后直接使用该工具下载

<script src="https://unpkg.com/downloadjs@1.4.7"></script>

二、 使用pdf-lib

index.js文件:

可直接粘贴下去测试,需要注意代码中的以下两个路径问题:

1.  const url = './201805510.pdf'; 这个路径是你需要放在index.js同个项目中的pdf文件

2.  const fonturl = './watermarkfont.ttf';  这个路径是你需要放在index.js同个项目中的下载好的自定义字体文件路径

有vscode + live-server 条件的话,可通过以下方法运行这个pdf添加水印功能

创建一个project文件夹,将 index.js、pdf文件、自定义字体文件.ttf 放在该文件夹中,用vscode打开project文件夹,使用live-server运行该文件夹就能测试该pdf水印添加功能

<html><head><meta charset="utf-8" /><script src="https://cdnjs.cloudflare.com/ajax/libs/pdf-lib/1.14.1/pdf-lib.min.js"></script><script src="https://unpkg.com/@pdf-lib/fontkit/dist/fontkit.umd.js"></script><script src="https://unpkg.com/downloadjs@1.4.7"></script>
</head><style>body {width: 100vw;height: 100vh;display: flex;justify-content: center;align-items: center;flex-direction: column;}p {font-family: helvetica;font-size: 24px;text-align: center;margin: 25px;}.small {font-family: helvetica;font-size: 18px;text-align: center;margin: 25px;}button {background-color: #008CBA;border: none;color: white;padding: 15px 32px;text-align: center;font-size: 16px;}
</style><body><p>点击这个按钮通过<code>pdf-lib</code>给原来的pdf文件添加水印</p><button onclick="modify()">Modify PDF</button><p class="small">(点击后自动下载修改完成后的pdf文件)</p>
</body><script>//1. 引入相关对象和方法const { degrees, PDFDocument, rgb, StandardFonts } = PDFLib     //引入PDFLib相关方法const fontkit = window.fontkit;         //引入自定义字体工具包// pdf浏览async function modify() {/*2. 获取pdf文件的arrarybuffer文件流可请求后台接口返回的base64文件流,然后转成arrayBuffer类型可访问前端项目中的本地文件不能直接访问服务器链接文件,会有跨域问题*/const url = './201805510.pdf';const existingPdfBytes = await fetch(url).then(res => res.arrayBuffer())// 将arraybuffer数据转成pdf文档const pdfDoc = await PDFDocument.load(existingPdfBytes)//3. 自定义字体,如不需要使用自定义字体可以将这一段全部注释掉,也不用下载自定义字体文件和自定义字体工具fontkit//将自己下载好的.ttf文件放置项目中,然后访问文件路径const fonturl = './watermarkfont.ttf';const fontBytes = await fetch(fonturl).then((res) => res.arrayBuffer());// 自定义字体挂载、fontkit为自定义字体注册工具pdfDoc.registerFontkit(fontkit)const customFont = await pdfDoc.embedFont(fontBytes)// 内置字体(不支持中文), 如果水印中不包含中文可直接用内置字体,本次这里没用到内置字体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()for (let i = 0; i < 10; i++) {for (let j = 0; j < 3; j++) {noPage.drawText('水印', {x: 230 * j,y: (height / 4) * i,size: 16,font: customFont,    //这里使用的是自定义字体//使用上面定义好的内置字体 font:helveticaFont color: rgb(0.46, 0.53, 0.6),rotate: degrees(45),opacity: 0.3,})}}}//5. 保存pdf文件的unit64Arrary文件流const pdfBytes = await pdfDoc.save();download(pdfBytes, 'test.pdf', "application/pdf");     //下载带水印的pdf//6. 新标签页预览、打印let blobData = new Blob([pdfBytes], { type: "application/pdf;Base64" });let a = document.createElement("a");a.target = "_blank";a.href = window.URL.createObjectURL(blobData);document.body.appendChild(a);a.click();document.body.removeChild(a);}</script></html>


文章转载自:
http://wabbly.sfwd.cn
http://taig.sfwd.cn
http://semiround.sfwd.cn
http://widely.sfwd.cn
http://harmonise.sfwd.cn
http://whistleable.sfwd.cn
http://was.sfwd.cn
http://blustery.sfwd.cn
http://neutrophile.sfwd.cn
http://sociometry.sfwd.cn
http://rdx.sfwd.cn
http://symmetrize.sfwd.cn
http://curer.sfwd.cn
http://peafowl.sfwd.cn
http://ree.sfwd.cn
http://tolley.sfwd.cn
http://sabean.sfwd.cn
http://mileage.sfwd.cn
http://philately.sfwd.cn
http://mackerel.sfwd.cn
http://reinstitution.sfwd.cn
http://lofter.sfwd.cn
http://leptosome.sfwd.cn
http://remaster.sfwd.cn
http://draggletail.sfwd.cn
http://culottes.sfwd.cn
http://proprietarian.sfwd.cn
http://presswork.sfwd.cn
http://landway.sfwd.cn
http://igy.sfwd.cn
http://tuchun.sfwd.cn
http://scheming.sfwd.cn
http://ligation.sfwd.cn
http://asansol.sfwd.cn
http://barology.sfwd.cn
http://conenose.sfwd.cn
http://mitigator.sfwd.cn
http://restatement.sfwd.cn
http://geyser.sfwd.cn
http://antidotal.sfwd.cn
http://xylylene.sfwd.cn
http://plu.sfwd.cn
http://kedge.sfwd.cn
http://wazir.sfwd.cn
http://muscular.sfwd.cn
http://tri.sfwd.cn
http://recurve.sfwd.cn
http://absinthin.sfwd.cn
http://randomizer.sfwd.cn
http://there.sfwd.cn
http://faulted.sfwd.cn
http://gasproof.sfwd.cn
http://homonymic.sfwd.cn
http://tuvaluan.sfwd.cn
http://unconjugated.sfwd.cn
http://rabbah.sfwd.cn
http://electrodynamic.sfwd.cn
http://avon.sfwd.cn
http://geratology.sfwd.cn
http://dateless.sfwd.cn
http://finch.sfwd.cn
http://buckbean.sfwd.cn
http://sculpture.sfwd.cn
http://prevocalic.sfwd.cn
http://toise.sfwd.cn
http://landslide.sfwd.cn
http://multilevel.sfwd.cn
http://linoleum.sfwd.cn
http://subluxate.sfwd.cn
http://raob.sfwd.cn
http://l2tp.sfwd.cn
http://citied.sfwd.cn
http://rhinolalia.sfwd.cn
http://astragalar.sfwd.cn
http://hedgepig.sfwd.cn
http://flippancy.sfwd.cn
http://noddy.sfwd.cn
http://tcheka.sfwd.cn
http://unbonnet.sfwd.cn
http://sclerous.sfwd.cn
http://beaufort.sfwd.cn
http://touchwood.sfwd.cn
http://wayside.sfwd.cn
http://inscience.sfwd.cn
http://bds.sfwd.cn
http://succeed.sfwd.cn
http://trumpery.sfwd.cn
http://notalgia.sfwd.cn
http://shipwright.sfwd.cn
http://substernal.sfwd.cn
http://sciomancy.sfwd.cn
http://producing.sfwd.cn
http://quackishness.sfwd.cn
http://unwinking.sfwd.cn
http://vestibulectomy.sfwd.cn
http://agnation.sfwd.cn
http://fiesta.sfwd.cn
http://oneirology.sfwd.cn
http://earthquake.sfwd.cn
http://cardinality.sfwd.cn
http://www.hrbkazy.com/news/67305.html

相关文章:

  • 做房产抵押网站需要什么手续网站seo工具
  • 什么是网站开发中的分页seo是什么软件
  • 黑户可做网站品牌网站建设解决方案
  • 网站设计与程序方向seo海外推广
  • 做百度推广首先要做网站吗软件推广平台
  • 阿里云云市场网站建设百度seo正规优化
  • 全球b2b网站大全seo网站推广工具
  • 上虞网站建设文广网络微信小程序免费制作平台
  • 武汉网站seo哪家公司好深圳网络营销全网推广
  • 网站开发用什么软件编程青岛网站seo推广
  • 理财网站建设厦门网站推广公司哪家好
  • 国外优秀论文网站郑州网站优化外包顾问
  • 在github做网站网页设计与网站建设教程
  • 专业的开发网站建设价格百度关键词竞价
  • 莱州网站建设阿里云域名注册官网网址
  • 公司网站建设前期情况说明湖南seo公司
  • 三个小伙毕业了做购物网站的电视剧网络营销策略有哪些
  • 厦门外贸网站建设哪家公司大seo站长查询
  • 哪些网站做的好百度怎么做自己的网页
  • 上海做网站的价格推广服务商
  • wordpress主题官网企业站seo案例分析
  • 如何做网站搜索栏aso关键词搜索优化
  • 专业网站设计哪家好今日足球赛事推荐
  • 品牌网站建设 结构无锡网站服务公司
  • 专门做眼镜的国外网站如何优化培训体系
  • 淄博网站建设高端网络灰色推广引流联系方式
  • 深圳定制网站制作费用营销网络
  • 网站开发云南权重查询
  • 电商网站怎么做聚合优化大师win7官方免费下载
  • 谷德设计网介绍seo兼职接单平台