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合并到一个文档中。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/93498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL的索引问题

1、关于索引 1.1 首先来看一下的关于对索引的理解 索引是一个单独的、存储在磁盘上的数据库结构&#xff0c;包含着对数据表里所有记录的引用指针。使用索引可以快速找出在某个或多个列中有一特定值的行&#xff0c;所有MySQL列类型都可以被索引&#xff0c;对相关列使用索引…

恼人的TCP套接字部分发送成功场景

源起 以前就知道套接字有可能出现部分发送成功的可能&#xff0c;直到近段时间一个典型的使用场景触发了明确的此问题&#xff0c;才予以重视&#xff0c;比较深入地考虑解决这个问题的方案&#xff01; 分析 因为TCP的流式特征&#xff0c;如果出现部分发送成功&#xff0c…

OpenNebula的配置与应用

学习了OpenNebula的安装之后&#xff0c;接下来就是配置OpenNebula&#xff0c;内容包括配置Sunstone&#xff0c;VDC和集群&#xff0c;设置影像&#xff0c;模板管理&#xff0c;虚拟机管理等。OpenNebula还有大量的工作要做&#xff0c;这些工作主要来自映像、模板和虚拟机管…

Redis主从复制、哨兵、cluster集群

目录 Redis 主从复制 主从复制的作用 主从复制流程 搭建Redis 主从复制 实验环境 所有主机安装redis 修改 Redis 配置文件&#xff08;Master节点操作&#xff09; 修改 Redis 配置文件&#xff08;Slave节点操作&#xff09; 验证主从效果 Redis 哨兵模式 哨兵模式的…

算法通过村第十一关-位运算|黄金笔记|位运算压缩

文章目录 前言用4kb内存寻找重复元素总结 前言 提示&#xff1a;如果谁对你说了地狱般的话&#xff0c;就代表了他的心在地狱。你不需要相信那样的话&#xff0c;就算对方是你的父母也一样。 --高延秀《远看是蔚蓝的春天》 位运算有个很重要的作用就是能用比较小的空间存储比较…

思科:iOS和iOSXe软件存在漏洞

思科警告说,有人试图利用iOS软件和iOSXe软件中的一个安全缺陷,这些缺陷可能会让一个经过认证的远程攻击者在受影响的系统上实现远程代码执行。 中严重程度的脆弱性被追踪为 CVE-2023-20109 ,并以6.6分得分。它会影响启用Gdoi或G-Ikev2协议的软件的所有版本。 国际知名白帽黑客…

AtCoder Beginner Contest 322

A - First ABC 2 AC代码: #include<bits/stdc.h> #define endl \n //#define int long long using namespace std; int n; string s; void solve() {cin>>n>>s;s s;for(int i1;i<n-2;i){if(s[i]A&&s[i1]B&&s[i2]C){cout<<i<&l…

世界前沿技术发展报告2023《世界航天技术发展报告》(二)卫星技术

&#xff08;二&#xff09;卫星技术 1.概述2. 通信卫星2.1 美国太空发展局推进“国防太空体系架构”&#xff0c;持续部署“传输层”卫星2.2 美国军方在近地轨道成功演示验证星间激光通信2.3 DARPA启动“天基自适应通信节点”项目&#xff0c;为增强太空通信在轨互操作能力提供…

程序员的重复劳动陷阱

https://kb.cnblogs.com/page/627035/ 同样是一样的计算机专业毕业&#xff0c;进入职场的职位和工作都差不多&#xff0c;为何有些程序员短短几年就成长为全能选手或领域专家&#xff0c;有些程序员还在做CRUD&#xff1f; 程序员的重复劳动陷阱 不知道大家有没有这样的感觉…

2023年中国医疗传感器行业现状分析:市场国有化率低[图]

传感器是对物理刺激&#xff08;如热、光、声、压力、磁或特定的运动&#xff09;作出反应并传送产生的脉冲&#xff08;如用于测量或操作控制&#xff09;的装置。传感器一般由敏感元件、转换元件和转换电路组成。 医疗传感器分类 资料来源&#xff1a;共研产业咨询&#xff…

【算法基础】基础算法(一)--(快速排序、归并排序、二分)

一、快速排序 详情可参考&#xff1a;【数据结构】排序&#xff08;插入、选择、交换、归并&#xff09; -- 详解_炫酷的伊莉娜的博客-CSDN博客 下面只作模板介绍和注意事项。 1、快速排序算法模板 &#x1f53a;记忆&#xff01; void quick_sort(int q[], int l, int r) {…

管道-有名管道

一、有名管道 有名管道与匿名管道的不同&#xff1a; 有名管道提供了一个路径名&#xff0c;并以FIFO的文件形式存在于文件系统中。与匿名管道不同&#xff0c;有名管道可以被不相关的进程使用&#xff0c;只要它们可以访问该路径&#xff0c;就能够通过有名管道进行通信。 FI…

基于SSM的学生事务处理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

MySQL 索引优化实践(单表)

目录 一、前言二、表数据准备三、常见业务无索引查询耗时测试3.1、通过订单ID / 订单编号 查询指定订单3.2、查询订单列表 四、订单常见业务索引优化实践4.1、通过唯一索引和普通索引优化通过订单编号查询订单信息4.2、通过普通联合索引优化订单列表查询4.2.1、分析查询字段的查…

GROMACS Tutorial 5: Protein-Ligand Complex 中文实战教程

GROMACS Tutorial 5: Protein-Ligand Complex 中文实战教程 前言系统环境特别强调一、预处理阶段1.1 蛋白质配体分离以及除水操作1.2 选择力场识别JZ4配体1.2.1 使用在线力场解析1.2.2 使用官方推荐力场CHARMM36解析 1.3 蛋白的top文件准备1.4 配体的top文件准备1.5 使用CgenFF…

【C++】模板初阶 -- 详解

一、泛型编程 // 实现一个通用的交换函数&#xff1a; void Swap(int& left, int& right) {int temp left;left right;right temp; }void Swap(double& left, double& right) {double temp left;left right;right temp; }void Swap(char& left, ch…

高層建築設計和建造:從避難層到設備間和防風防火防水的設計理念,酒店住宅辦公樓都有什麽房間(精簡)

樓層概覽 標準層居住、辦公、商業等功能的樓層。結構和裝修與其他樓層相同&#xff0c;可供人正常居住、工作和活動避難層專門用於人員避難的樓層&#xff0c;通常會相隔數十個標準層&#xff0c;樓梯通常和標準層是錯開的(非公用)&#xff0c;具有更多的通風口。牆體和樓板具…

【Linux】TCP的服务端 + 客户端

文章目录 &#x1f4d6; 前言1. 服务端基本结构1.1 类成员变量&#xff1a;1.2 头文件1.3 初始化&#xff1a;1.3 - 1 全双工与半双工1.3 - 2 inet_aton1.3 - 3 listen 2. 服务端运行接口2.1 accept&#xff1a;2.2 服务接口&#xff1a; 3. 客户端3.1 connect&#xff1a;3.2 …

代谢组学分析平台(二)

GC/MS分析生物样本为何要衍生化处理&#xff1f;有哪些衍生化的方法&#xff1f; GC的流动相为气体&#xff08;通常为高纯氦&#xff09;&#xff0c;这就要求被分析物必须能够气化&#xff0c;而生物样本中很多内源性代谢物都含有极性基团&#xff0c;具有沸点高、不易气化特…

linux 笔记 安装 anaconda

1 找到anaconda 安装包 Free Download | Anaconda 2 在linux环境中安装对应安装包 3 安装完毕后查看是否安装好 发现不行&#xff0c;需要配置环境变量 4 配置环境变量 vim /etc/profile使用这个&#xff0c;发现对应的文件是只读文件 sudo vim /etc/profile在最下面加一…