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

h5网站开发培训机构优化外包顾问

h5网站开发培训机构,优化外包顾问,wordpress常用模板,wordpress页面没有最近出差开了好多发票&#xff0c;写了一个pdf合并网站&#xff0c;用于把多张发票pdf合并成一张&#xff0c;方便打印 使用pdf-lib这个库实现的pdf合并功能&#xff0c;预览使用的是浏览器自身查看pdf功能 源码 网页地址 https://zqy233.github.io/PDF-merge/ <!DOCTYPE h…

最近出差开了好多发票,写了一个pdf合并网站,用于把多张发票pdf合并成一张,方便打印

使用pdf-lib这个库实现的pdf合并功能,预览使用的是浏览器自身查看pdf功能
源码

网页地址 https://zqy233.github.io/PDF-merge/

<!DOCTYPE html>
<html><head><title>PDF合并</title><script src="https://cdn.jsdelivr.net/npm/pdf-lib@1.17.1/dist/pdf-lib.min.js"></script></head><body><input type="file" id="fileInput" multiple /><button onclick="previewMergePDF()">预览合并的PDF</button><button onclick="downloadMergePDF()">下载合并的PDF</button><script>async function previewMergePDF() {const fileInput = document.getElementById("fileInput");const files = fileInput.files;if (files.length < 2) {alert("请至少选择两个PDF文件进行合并!");return;}// 创建一个新的PDF文档const mergedPdf = await PDFLib.PDFDocument.create();// 遍历选择的每个文件for (let i = 0; i < files.length; i++) {const file = files[i];const reader = new FileReader();// 读取文件内容const fileContents = await new Promise((resolve, reject) => {reader.onload = function (event) {resolve(event.target.result);};reader.onerror = function (event) {reject(new Error("文件读取错误。"));};reader.readAsArrayBuffer(file);});// 将PDF文件添加到合并的PDF文档中const pdf = await PDFLib.PDFDocument.load(fileContents);const copiedPages = await mergedPdf.copyPages(pdf,pdf.getPageIndices());copiedPages.forEach((page) => {mergedPdf.addPage(page);});}// 使用浏览器自带预览功能,预览合并后的PDFconst mergedPdfBytes = await mergedPdf.save();const mergedPdfBlob = new Blob([mergedPdfBytes], {type: "application/pdf",});const fileURL = URL.createObjectURL(mergedPdfBlob);window.open(fileURL);}async function downloadMergePDF() {const fileInput = document.getElementById("fileInput");const files = fileInput.files;if (files.length < 2) {alert("请至少选择两个PDF文件进行合并!");return;}const mergedPdf = await PDFLib.PDFDocument.create();for (let i = 0; i < files.length; i++) {const file = files[i];const reader = new FileReader();const fileContents = await new Promise((resolve, reject) => {reader.onload = function (event) {resolve(event.target.result);};reader.onerror = function (event) {reject(new Error("文件读取错误。"));};reader.readAsArrayBuffer(file);});const pdf = await PDFLib.PDFDocument.load(fileContents);const copiedPages = await mergedPdf.copyPages(pdf,pdf.getPageIndices());copiedPages.forEach((page) => {mergedPdf.addPage(page);});}const mergedPdfFile = await mergedPdf.saveAsBase64();const downloadLink = document.createElement("a");downloadLink.href = "data:application/pdf;base64," + mergedPdfFile;downloadLink.download = "merged.pdf";downloadLink.click();}</script></body>
</html>
http://www.yayakq.cn/news/607033/

相关文章:

  • 网站建设企业宣传册昆明系统开发
  • 高端网站设计哪里比较好章丘网站建设公司
  • 刘涛做的网站微博推广有用吗
  • 网站开发管理方案惠州网站制作推广
  • 网站建设系统改版西安公司注册核名
  • 湖南众诚建设网站中山市安全平台教育
  • 厦门住房建设局网站首页小说网站系统怎么做
  • 洛阳网站建站新乡网站建设加盟电话
  • 自己的网站怎么能让百度搜出来网站主页样式
  • 做外贸网站功能有哪些官网做得比较好
  • 网站接入网方式网站构建工具
  • 梦幻西游源码论坛一个网站做两个优化可以做吗
  • 做电影网站程序好用wordpress主题 搜索引擎
  • 企业网站备案要多少钱电商公司官网
  • 怎么给网站做外链邵连虎绍兴建设企业网站
  • 高校网站建设说明书建行网点
  • dede网站不能够生成vx小程序怎么制作
  • 网站建设专业书入门中企动力是干嘛的
  • 建网站点击率WordPress cosy 主题
  • 网站怎样做才会被百度收录淮南吧
  • 企业网站制作优化长沙创求网络科技有限公司
  • 一流的购物网站建设厦门网站设计品牌企业
  • 建设网站微商城移动网站建设价格便宜
  • 做购物平台网站需要注意什么网站手机版制作
  • 上海网站企业洛阳网络科技有限公司排名
  • 怒江州建设局网站企业备案网站购买的网站平台建设服务计入
  • 个人网站和企业网站和平区网站制作
  • 购买idc网站服务器开发商是不是建设单位
  • 网站被封怎么开软件外包公司赚钱吗
  • 做ic哪些网站好做黑龙江省建设厅网站