当前位置:首页 > 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
分享给朋友:

相关文章

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现二叉树

js实现二叉树

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