当前位置:首页 > JavaScript

js实现pdf下载文件

2026-01-30 20:18:03JavaScript

使用原生JavaScript实现PDF下载

在浏览器环境中,可以通过创建Blob对象和URL来实现PDF文件的下载。以下是几种常见方法:

方法一:使用fetch API获取PDF并下载

js实现pdf下载文件

fetch('your-pdf-url.pdf')
  .then(response => response.blob())
  .then(blob => {
    const url = window.URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = 'filename.pdf';
    document.body.appendChild(a);
    a.click();
    window.URL.revokeObjectURL(url);
    document.body.removeChild(a);
  });

方法二:直接通过已知的PDF数据创建Blob

const pdfData = ...; // 获取PDF二进制数据
const blob = new Blob([pdfData], { type: 'application/pdf' });
const url = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = 'document.pdf';
link.click();

使用第三方库实现PDF生成与下载

对于需要动态生成PDF的场景,可以使用jsPDF库:

js实现pdf下载文件

// 引入jsPDF库后
const doc = new jsPDF();
doc.text('Hello world!', 10, 10);
doc.save('example.pdf');

处理大文件下载的进度显示

对于大文件下载,可以添加进度提示:

const xhr = new XMLHttpRequest();
xhr.open('GET', 'large-file.pdf', true);
xhr.responseType = 'blob';

xhr.onprogress = function(event) {
  if (event.lengthComputable) {
    const percentComplete = (event.loaded / event.total) * 100;
    console.log(percentComplete + '% downloaded');
  }
};

xhr.onload = function() {
  if (this.status === 200) {
    const blob = new Blob([this.response]);
    const url = URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = 'large-file.pdf';
    a.click();
  }
};
xhr.send();

跨浏览器兼容性注意事项

不同浏览器对下载行为的处理可能不同:

  • Chrome和Firefox通常支持直接下载
  • Safari可能需要用户显式交互(如点击事件)
  • 移动端浏览器可能有额外限制

确保下载操作由用户触发的事件(如click)发起,以避免被浏览器拦截。

标签: 文件js
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 jQ…

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Conte…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…