我是新手,我正在尝试在浏览器上显示pdf文件。我收到错误,因为无法加载PDF 。我正在尝试运行https://www.npmjs.com/package/react-pdf中给出的示例程序。
App.js
import React, { Component } from 'react';
import { Document, Page } from 'react-pdf';
class MyApp extends Component {
state = {
numPages: null,
pageNumber: 1,
}
onDocumentLoad = ({ numPages }) => {
this.setState({ numPages });
}
render() {
const { pageNumber, numPages } = this.state;
return (
<div>
<Document
file="./1.pdf"
onLoadSuccess={this.onDocumentLoad}
>
<Page pageNumber={pageNumber} />
</Document>
</div>
);
}
}
export default MyApp;
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import registerServiceWorker from './registerServiceWorker';
ReactDOM.render(<App />, document.getElementById('root'));
registerServiceWorker();
错误截图
答案 0 :(得分:2)
问题已经很久了,但希望对您有所帮助。我遇到了这个问题,并在https://github.com/wojtekmaj/react-pdf/issues/321找到了解决方案。
import { Document, Page, pdfjs } from 'react-pdf';
将此添加到您的构造函数中。
constructor(props){
super(props);
pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;
}
答案 1 :(得分:1)
您使用file="./1.pdf"
加载文件我相信这可能是问题所在。
如果您的文件结构如下:
然后您需要将1.pdf
移动到public
文件夹,如下所示:
因为当您从public/bundle.js
执行已编译的javascript代码而bundle.js
不知道如何访问文件系统中的src/components/1.pdf
。
如果您使用webpack
和webpack-dev-server
,生产/开发环境之间可能也存在差异。
查看react-pdf
示例。它具有平面文件结构。这就是它起作用的原因。
答案 2 :(得分:0)
您可以使用 import samplePdf from './1.pdf'
导入 pdf 文件,并且可以像 file={samplePdf}
一样直接在您的文档标签中使用。