当前位置:首页 > JavaScript

js实现pdf下载文件

2026-03-01 11:23:04JavaScript

使用原生JavaScript实现PDF下载

在浏览器中下载PDF文件可以通过创建<a>标签并设置download属性来实现。以下是一个简单的示例:

function downloadPDF(url, fileName) {
  const a = document.createElement('a');
  a.href = url;
  a.download = fileName || 'document.pdf';
  document.body.appendChild(a);
  a.click();
  document.body.removeChild(a);
}

使用Blob对象下载动态生成的PDF

如果需要下载动态生成的PDF内容,可以使用Blob对象:

js实现pdf下载文件

function downloadPDFFromBlob(pdfBlob, fileName) {
  const url = URL.createObjectURL(pdfBlob);
  const a = document.createElement('a');
  a.href = url;
  a.download = fileName || 'document.pdf';
  document.body.appendChild(a);
  a.click();
  setTimeout(() => {
    document.body.removeChild(a);
    URL.revokeObjectURL(url);
  }, 100);
}

使用fetch API下载远程PDF

从服务器获取PDF文件并下载:

js实现pdf下载文件

async function downloadRemotePDF(pdfUrl, fileName) {
  try {
    const response = await fetch(pdfUrl);
    const blob = await response.blob();
    downloadPDFFromBlob(blob, fileName);
  } catch (error) {
    console.error('Error downloading PDF:', error);
  }
}

使用PDF库生成并下载PDF

使用jsPDF库动态生成PDF并下载:

// 首先引入jsPDF库: <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>

function generateAndDownloadPDF() {
  const { jsPDF } = window.jspdf;
  const doc = new jsPDF();

  doc.text('Hello World!', 10, 10);
  doc.save('example.pdf');
}

处理跨域问题

如果PDF资源位于不同域,可能需要服务器设置CORS头部:

// 服务器应设置响应头
// Access-Control-Allow-Origin: *
// 或指定允许的域名

注意事项

  • 某些浏览器可能会阻止自动下载,需要用户交互触发
  • 移动设备上的下载行为可能有所不同
  • 大文件下载应考虑使用进度指示器
  • 确保服务器正确设置PDF文件的Content-Type为application/pdf

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

相关文章

js实现图片上传

js实现图片上传

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

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…