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

云南网站建设优选平台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/817883/

相关文章:

  • 自适应网站建设企业管理培训课程目录
  • 泰安网站建设定制公司注册城乡规划师难考吗
  • 苏中建设集团网站网址推广图片模版
  • 腾讯云做网站选哪个深圳网站搜索优化
  • 做家电选招标采购哪一个网站好wordpress批量提交
  • 怎样做音视频宣传网站试述网站建设的流程.
  • 威胁网站检测平台建设中标海门市城乡建设局网站
  • 网站可以给pdf做笔记外贸php网站源码
  • 建站公司是什么意思青岛市最大的网络公司是哪里
  • 微信小说网站开发个人如何注册网站
  • 固原市住房和城乡建设厅网站哪个公司做网站专业
  • 事业单位门户网站建设中国形象设计网
  • 网站如何规范的排版编辑flash网站整站源码免费下载
  • 用python做购物网站公司广告片拍摄公司
  • c程序设计教学网站怎么做单位网站开发合同范本
  • 巴中城乡建设官方网站wordpress博客dux主题
  • 什么是企业营销型网站?wordpress插件提交
  • 媒体网站开发专业上海网站建设
  • 网站开发什么语言安全wordpress图片无法加载
  • 网站建设与维护作业网站建设公司领导致辞
  • 网站备案全国合作拍照点海南营销网站建设
  • 领秀网站建设手机阅读网站开发原因
  • 一个wordpress模版几个网站西安百度关键词优化排名
  • 潍坊高端网站建设价格网址大全2345下载安装
  • 昌平网站制作开发公司商城网站欣赏
  • asp.net 网站设计为什么网站显示在建设中
  • 盐山县招聘网站建设百度一下你就知道啦
  • 网站开发技术及软件介绍国内免费注册二级域名的网站
  • 龙华做网站网站的锚点链接怎么做
  • 外贸公司网站大全高端企业网站定制公司