国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端使用pdf-lib庫實(shí)現(xiàn)pdf合并,window.open預(yù)覽合并后的pdf

這篇具有很好參考價(jià)值的文章主要介紹了前端使用pdf-lib庫實(shí)現(xiàn)pdf合并,window.open預(yù)覽合并后的pdf。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

最近出差開了好多發(fā)票,寫了一個(gè)pdf合并網(wǎng)站,用于把多張發(fā)票pdf合并成一張,方便打印

使用pdf-lib這個(gè)庫實(shí)現(xiàn)的pdf合并功能,預(yù)覽使用的是瀏覽器自身查看pdf功能
源碼

網(wǎng)頁地址 https://zqy233.github.io/PDF-merge/文章來源地址http://www.zghlxwxcb.cn/news/detail-515080.html

<!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()">預(yù)覽合并的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("請(qǐng)至少選擇兩個(gè)PDF文件進(jìn)行合并!");
          return;
        }
        // 創(chuàng)建一個(gè)新的PDF文檔
        const mergedPdf = await PDFLib.PDFDocument.create();
        // 遍歷選擇的每個(gè)文件
        for (let i = 0; i < files.length; i++) {
          const file = files[i];
          const reader = new FileReader();
          // 讀取文件內(nèi)容
          const fileContents = await new Promise((resolve, reject) => {
            reader.onload = function (event) {
              resolve(event.target.result);
            };
            reader.onerror = function (event) {
              reject(new Error("文件讀取錯(cuò)誤。"));
            };
            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);
          });
        }
        // 使用瀏覽器自帶預(yù)覽功能,預(yù)覽合并后的PDF
        const 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("請(qǐng)至少選擇兩個(gè)PDF文件進(jìn)行合并!");
          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("文件讀取錯(cuò)誤。"));
            };
            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>

到了這里,關(guān)于前端使用pdf-lib庫實(shí)現(xiàn)pdf合并,window.open預(yù)覽合并后的pdf的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 前端實(shí)現(xiàn)pdf預(yù)覽

    前言:項(xiàng)目中之前pdf預(yù)覽是客戶端andrio實(shí)現(xiàn)的,現(xiàn)在需要前端H5自己實(shí)現(xiàn)預(yù)覽功能,項(xiàng)目是基于vue的H5項(xiàng)目,記錄一下pdf預(yù)覽功能實(shí)現(xiàn)的過程和問題 一、利用iframe實(shí)現(xiàn)pdf預(yù)覽 1、實(shí)現(xiàn)過程 將pdf路徑設(shè)置給iframe的src屬性 2、遇到的問題 電腦上測(cè)試正常,但是安卓端會(huì)出現(xiàn)空白頁

    2024年02月13日
    瀏覽(26)
  • 前端實(shí)現(xiàn)PDF預(yù)覽【vue】

    前言:項(xiàng)目中提出這樣一個(gè)需求,在移動(dòng)端H5頁面預(yù)覽pdf功能。pdf文件由后端返回的一個(gè)地址,前端實(shí)現(xiàn)展示預(yù)覽pdf文件 在此僅提供兩種方法: 一、使用iframe標(biāo)簽通過src屬性直接展示pdf文件 ? ? ? ? 坑點(diǎn):兼容比較差,PC端能正常展示,移動(dòng)端會(huì)出現(xiàn)空白的問題 二、使用第

    2024年01月16日
    瀏覽(21)
  • 前端實(shí)現(xiàn) PDF 預(yù)覽的常見方案

    由于在搭建個(gè)人博客時(shí),想實(shí)現(xiàn)在線預(yù)覽 pdf 格式的個(gè)人簡歷,經(jīng)過查閱大致有三大類實(shí)現(xiàn)方案;本文共涉及以下 5 種實(shí)現(xiàn)方案,如下所示: 使用 HTML 標(biāo)簽 iframe 標(biāo)簽 embed 標(biāo)簽 object 標(biāo)簽 使用第三方插件 PDF.js PDFObject PDF 文件轉(zhuǎn)化成圖片進(jìn)行展示 第一類方案: 使用 HTML 標(biāo)簽

    2024年01月20日
    瀏覽(25)
  • 前端實(shí)現(xiàn)pdf,圖片,word文件預(yù)覽

    前端實(shí)現(xiàn)pdf,圖片,word文件預(yù)覽

    需求:實(shí)現(xiàn)一個(gè)在線預(yù)覽pdf、excel、word、圖片等文件的功能。 介紹:支持pdf、xlsx、docx、jpg、png、jpeg。 以下使用Vue3代碼實(shí)現(xiàn)所有功能,建議以下的預(yù)覽文件標(biāo)簽可以在外層包裹一層彈窗。 iframe標(biāo)簽?zāi)軌驅(qū)⒘硪粋€(gè)HTML頁面嵌入到當(dāng)前頁面中,我們的圖片也能夠使用iframe標(biāo)簽來

    2024年02月11日
    瀏覽(26)
  • 前端pdf預(yù)覽、pdfjs的使用

    前端pdf預(yù)覽、pdfjs的使用

    關(guān)于前端預(yù)覽pdf,最簡單的方式是使用 window.open() 直接在瀏覽器的新窗口打開就好,瀏覽器本身也是提供了非常多的功能 但是因?yàn)榭蛻舻哪承┬枨?,不能使用瀏覽器自身的功能。后來又使用了 https://github.com/gjTool/pdfh5,也挺好用的,操作比較簡單。使用了一段時(shí)間吧,但是還

    2024年02月12日
    瀏覽(27)
  • 前端實(shí)現(xiàn)PDF預(yù)覽:簡單而高效的方法

    PDF是一種常用的文件格式,但在網(wǎng)頁中直接預(yù)覽PDF文件可能會(huì)帶來一些挑戰(zhàn)。本文將介紹一種簡單而高效的前端方法,以實(shí)現(xiàn)PDF文件的預(yù)覽。 最簡單的方法是使用iframe標(biāo)簽來嵌入PDF文件。代碼如下所示: 上述代碼通過設(shè)置iframe的src屬性為PDF文件的路徑,將PDF文件嵌入到網(wǎng)頁

    2024年02月05日
    瀏覽(25)
  • 前端實(shí)現(xiàn)文件預(yù)覽(pdf、excel、word、圖片)

    前端實(shí)現(xiàn)文件預(yù)覽(pdf、excel、word、圖片)

    需求:實(shí)現(xiàn)一個(gè)在線預(yù)覽pdf、excel、word、圖片等文件的功能。 介紹:支持pdf、xlsx、docx、jpg、png、jpeg。 以下使用Vue3代碼實(shí)現(xiàn)所有功能,建議以下的預(yù)覽文件標(biāo)簽可以在外層包裹一層彈窗。 sandbox 這個(gè)屬性如果是單純預(yù)覽圖片可以不使用,該屬性對(duì)呈現(xiàn)在 iframe 框架中的內(nèi)容

    2024年02月10日
    瀏覽(49)
  • vue 純前端預(yù)覽pdf,純前端實(shí)現(xiàn)pdf加水印下載文件也帶水印,防止pdf下載

    vue 純前端預(yù)覽pdf,純前端實(shí)現(xiàn)pdf加水印下載文件也帶水印,防止pdf下載

    ? 原理:主要是利用pdfh5這個(gè)插件來完成的 ? 使用方法: ? 1.頁面需要有一個(gè)容器例子:div id=\\\"demo\\\"/div ? 2.下載pdfh5插件 npm install pdfh5 ? (注意:webpack5之后不會(huì)下載polyfill 需要手動(dòng)下載 所以引入pdfh5的時(shí)候會(huì)報(bào)錯(cuò)) ? 解決方案:下載 node-polyfill-webpack-plugin npm install node-polyfill-

    2024年04月15日
    瀏覽(129)
  • 記錄--前端實(shí)現(xiàn)文件預(yù)覽(pdf、excel、word、圖片)

    記錄--前端實(shí)現(xiàn)文件預(yù)覽(pdf、excel、word、圖片)

    需求:實(shí)現(xiàn)一個(gè)在線預(yù)覽pdf、excel、word、圖片等文件的功能。 介紹:支持pdf、xlsx、docx、jpg、png、jpeg。 以下使用Vue3代碼實(shí)現(xiàn)所有功能,建議以下的預(yù)覽文件標(biāo)簽可以在外層包裹一層彈窗。 iframe標(biāo)簽?zāi)軌驅(qū)⒘硪粋€(gè)HTML頁面嵌入到當(dāng)前頁面中,我們的圖片也能夠使用iframe標(biāo)簽來

    2024年02月09日
    瀏覽(42)
  • vue中前端實(shí)現(xiàn)pdf預(yù)覽(含vue-pdf插件用法)

    vue中前端實(shí)現(xiàn)pdf預(yù)覽(含vue-pdf插件用法)

    ? 場景:前端需要根據(jù)后端返回的線上pdf的地址,實(shí)現(xiàn)pdf的預(yù)覽功能。 情況一:后端返回的pdf地址,粘貼到瀏覽器的url框中,是可以在瀏覽器中直接進(jìn)行預(yù)覽的。 方法(1)可以直接使用window.open(\\\'獲取到的pdf地址\\\')重新打開一個(gè)瀏覽器頁簽,通過瀏覽器頁簽直接實(shí)現(xiàn)預(yù)覽功

    2024年02月04日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包