You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React项目使用react-pdf加载PDF文件失败求助

使用react-pdf加载PDF文件失败的问题

我尝试通过npm安装的react-pdf包展示PDF文件,编写代码如下:

import { Document, Page, pdfjs } from "react-pdf";
import { useState } from "react";
import React from "react";

function PDFLayout(props){
  pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;
  const [numPages, setNumPages] = useState(null);
  const [pageNumber, setPageNumber] = useState(1);

  function onDocumentLoadSuccess({ numPages }) {
    setNumPages(numPages);
  }

  return (
    <div>
      {/* 文件地址为临时测试用 */}
      <Document file="https://www.orimi.com/pdf-test.pdf" onLoadSuccess={onDocumentLoadSuccess}>
        <Page pageNumber={pageNumber} />
      </Document>
      <p>
        Page {pageNumber} of {numPages}
      </p>
    </div>
  );
}
export default PDFLayout;

但路由到该React组件时出现错误:

Failed to load pdf file

我已查阅Stack Overflow(SO)和GitHub(GH)上的相关问题,但现有解决方案均无效,恳请提供帮助。


可行的排查与解决方法

  • 解决跨域问题:目标PDF地址大概率存在CORS限制,浏览器会拦截跨域资源请求。建议将PDF文件下载到本地项目的public目录下,使用相对路径引入,例如:file="/pdf-test.pdf"。
  • 指定workerSrc的完整协议:当前代码中workerSrc使用的是//协议相对路径,部分环境下可能无法自动适配,改为完整的https://协议路径:
    pdfjs.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;
    
  • 更新react-pdf版本:版本兼容性问题可能导致加载失败,执行命令更新到最新稳定版:
    npm update react-pdf
    
  • 添加错误日志定位问题:给Document组件添加onLoadError回调,打印具体错误信息,便于精准排查:
    <Document 
      file="https://www.orimi.com/pdf-test.pdf" 
      onLoadSuccess={onDocumentLoadSuccess}
      onLoadError={(error) => console.error("PDF加载失败详情:", error)}
    >
    
  • 验证目标PDF的可访问性:直接在浏览器地址栏打开https://www.orimi.com/pdf-test.pdf,确认文件能正常下载和打开,排除网络或文件本身的问题。

内容的提问来源于stack exchange,提问作者Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 01:36:01