JS合并2个远程pdf

简介: JS合并2个远程pdf

要在HTML和JavaScript中读取远程PDF文件的矢量数据并合并两个PDF文件,您可以使用pdf-lib和Axios库。以下是使用pdf-lib和Axios在HTML和JavaScript中读取和合并远程PDF文件的步骤:

1. 引入

首先,确保您在HTML文件中引入了pdf-lib和Axios库。您可以通过CDN链接或本地文件引入它们。例如:

<script src="https://cdn.jsdelivr.net/npm/pdf-lib@1.17.1/dist/pdf-lib.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/axios@1.5.0/dist/axios.min.js"></script>

或者,您可以将pdf-lib和Axios库下载到本地,然后在HTML中引入它们的本地文件。

2. 添加按钮

在HTML文件中添加一个按钮,用于触发读取和合并PDF文件的操作。例如:

<button onclick="mergePDFs()">合并PDF文件</button>


3. 添加JS

在JavaScript文件中添加以下代码来实现读取和合并PDF文件的功能:

// 合并PDF文件
async function mergePDFs() {
  const pdfUrl1 = 'https://example.com/path/to/first/pdf/file.pdf';
  const pdfUrl2 = 'https://example.com/path/to/second/pdf/file.pdf';
  try {
    // 读取第一个PDF文件
    const pdfBytes1 = await axios.get(pdfUrl1, { responseType: 'arraybuffer' });
    const pdfDoc1 = await PDFLib.PDFDocument.load(pdfBytes1.data);
    // 读取第二个PDF文件
    const pdfBytes2 = await axios.get(pdfUrl2, { responseType: 'arraybuffer' });
    const pdfDoc2 = await PDFLib.PDFDocument.load(pdfBytes2.data);
    // 创建一个新的PDF文档
    const mergedPdfDoc = await PDFLib.PDFDocument.create();
    // 合并两个PDF文档的页面
  const [existingPage] = await mergedPdfDoc.copyPages(pdfDoc1, [0])
    mergedPdfDoc.addPage(existingPage)
    const [existing2Page] = await mergedPdfDoc.copyPages(pdfDoc2, [0])
    mergedPdfDoc.addPage(existing2Page)
    // 将合并后的PDF文档保存为字节数组
    const mergedPdfBytes = await mergedPdfDoc.save();
    // 可根据需要进行后续操作,例如下载合并后的PDF文件或读取矢量数据
    // ...
    console.log('PDF文件合并成功!');
  } catch (error) {
    console.error('无法合并PDF文件:', error);
  }
}


4.预览

添加html

<iframe id="pdf" style="width: 100%; height: 100%;"></iframe>


添加js

    const pdfDataUri = await mergedPdfDoc.saveAsBase64({dataUri: true});
    document.getElementById('pdf').src = pdfDataUri;


5.下载

简单的下载逻辑

        var downloadLink = document.createElement('a');
        downloadLink.href = URL.createObjectURL(new Blob([mergedPdfBytes]));
        downloadLink.download = 'merged_pdf.pdf';
        document.body.appendChild(downloadLink);
        downloadLink.click();
        document.body.removeChild(downloadLink);

上述代码使用pdf-lib库来读取和合并两个远程PDF文件。它使用Axios库来获取远程PDF文件的字节数据,并将其加载到PDFDocument对象中。然后,它遍历每个PDF文件的页面,并将它们添加到合并后的PDF文档中。最后,它将合并后的PDF文档保存为字节数组。


您可以根据需要在mergePDFs函数中添加适当的代码来执行后续操作,例如将合并后的PDF文件下载到本地或读取矢量数据。


请注意,由于安全原因,浏览器可能会阻止从不同域的远程PDF文件加载数据。如果遇到这种情况,请确保您在服务器上设置了适当的CORS(跨域资源共享)配置。


PDF-LIB库包含的功能

创建和修改

从头开始创建PDF文档,或修改现有的PDF文档。绘制文本、图像和矢量图形。嵌入您自己的字体。甚至从其他PDF中嵌入和绘制页面。


纯JavaScript

用TypeScript编写,并编译为纯JavaScript,没有本地依赖项。适用于任何JavaScript运行时,包括浏览器、Node、Deno,甚至React Native。


拆分和合并

添加、插入和删除页面。将单个PDF拆分为单独的PDF。或者将多个PDF合并到一个文档中。


填写表格

创建新表单或填写并读取现有字段。复选框、按钮、单选组、下拉列表、选项列表和文本字段都受支持。

相关文章
|
7月前
|
JavaScript 前端开发
JS将两个数组和合并成数组包对象格式的方法
JS将两个数组和合并成数组包对象格式的方法
104 0
|
7月前
|
JavaScript 前端开发 小程序
js数组合并的4中方法 必看
js数组合并的4中方法 必看
|
2月前
|
数据采集 Web App开发 JavaScript
Puppeteer自动化:使用JavaScript定制PDF下载
在现代Web开发中,自动化工具如Puppeteer可显著提升效率并减少重复工作。Puppeteer是一款强大的Node.js库,能够控制无头Chrome或Chromium浏览器,适用于网页快照生成、数据抓取及自动化测试等任务。本文通过示例展示了如何使用Puppeteer自动化生成定制化的PDF文件,并介绍了如何通过配置代理IP、设置user-agent和cookie等技术增强自动化过程的灵活性与稳定性。具体步骤包括安装Puppeteer、配置代理IP、设置user-agent和cookie等,最终生成符合需求的PDF文件。此技术可应用于报表生成、发票打印等多种场景。
144 6
Puppeteer自动化:使用JavaScript定制PDF下载
|
5月前
|
JavaScript 前端开发 程序员
《JavaScript权威指南第7版》中文PDF+英文PDF+源代码 +JavaScript权威指南(第6版)(附源码)PDF下载阅读分享推荐
JavaScript是Web标准语言,广泛应用于各类浏览器,造就了其最广泛部署的地位。Node.js的兴起扩展了JavaScript的使用场景,使其成为开发者首选语言。无论新手还是经验丰富的程序员,都能受益于学习JavaScript。[《JavaScript权威指南第7版》资源链接](https://zhangfeidezhu.com/?p=224)
329 5
《JavaScript权威指南第7版》中文PDF+英文PDF+源代码 +JavaScript权威指南(第6版)(附源码)PDF下载阅读分享推荐
|
5月前
|
JavaScript
JS 【详解】双指针排序 -- 数组合并后递增排序
JS 【详解】双指针排序 -- 数组合并后递增排序
33 0
|
6月前
|
Java Maven
使用Java合并PDF文档
使用Java合并PDF文档
223 0
|
7月前
|
JSON 前端开发 JavaScript
【2024-04-22 源码】最新PDF批注注释插件库,pdf.js插件库,纯前端离线JavaScript库(PDF高亮、下划线、橡皮擦、文本框、画笔、历史记录)
一款基于 pdf.js 开发的PDF批注插件库,支持纯离线内网部署,功能完善、强大且在不断升级,极易上手,欢迎关注!
202 4
【2024-04-22 源码】最新PDF批注注释插件库,pdf.js插件库,纯前端离线JavaScript库(PDF高亮、下划线、橡皮擦、文本框、画笔、历史记录)
|
7月前
分享:批量多目录图片如何转换PDF,一次性转换多级目录批量的PDF的转换,合并,输出另存等问题,图片转PDF文件,批量图片转PDF文件,多级目录的图片转PDF文件,并且保存到不同的地方,全部搞定
本文介绍了如何高效地将图片转换为PDF,包括单张、多张及多级目录下的图片转换和合并。提供了软件下载链接(百度网盘、腾讯云盘),软件操作简便,支持保存原目录或自定义新目录。转换选项包括单个文件、多个文件夹单独转换以及合并转换。用户可通过双击路径访问源图片和转换结果。该工具特别解决了多级目录图片批量转换的难题,实现保存地址的自由设定,满足不同业务需求。
434 0
|
7月前
|
Python
Python 合并多个 PDF 文件并建立书签目录
Python 合并多个 PDF 文件并建立书签目录
77 1
|
7月前
|
JSON JavaScript 前端开发
vue项目使用Print.js插件实现PDF文件打印
vue项目使用Print.js插件实现PDF文件打印
598 0