Я слежу за это, чтобы просмотреть свой pdf-файл на моем веб-сайте, по какой-то причине он не загружается, и я не уверен, что делаю не так.
Вот мой код,
import React, { Component } from 'react';
import {Document, Page} from 'react-pdf';
class Resume extends Component {
constructor(props){
super(props);
this.state = {
numPages: null,
pageNumber: 1
}
}
onDocumentLoad = ( {numPages}) => {
this.setState({numPages});
}
render() {
const {pageNumber, numPages} = this.state;
return (
<div>
<Document
file = '../files/resume.pdf'
onLoadSuccess = {this.onDocumentLoad}
>
<Page pageNumber = {pageNumber} />
</Document>
<p> Page {pageNumber} of {numPages}</p>
</div>
);
}
}
export default Resume;
Вот мой каталог и файлы вместе с ним!

попробовал, результат тот же :(
Попробуйте перезапустить сервер после того, как вы добавили файл в каталог public.
еще ничего. я получаю предупреждения о компиляции, в которых говорится что-то вроде:
Функция require используется таким образом, что зависимости не могут быть извлечены статически ... (для ... build / pdf.jf)






У меня проблема, когда компонент просто говорит, что загружает PDF-файл, но никогда не загружается - никаких сообщений об ошибках, ничего. Но для справки, вот важные части моего компонента. Обратите внимание, что я выполнил их инструкции, React 16.6+, и это для доступа к PDF через URL:
import { Document } from 'react-pdf/dist/entry.webpack';
import { pdfjs } from 'react-pdf';
pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;
render () {
return (<Document
// noData = {console.info("No Data was found")}
onLoadError = {(error) => alert('Error while loading document! ' + error.message)}
file = {{ url: 'http://localhost:3000/resume.pdf' }}
/>)
}
У вас настроен загрузчик файлов в конфигурации вашего веб-пакета?
{
test: /\.pdf$/,
use: 'file-loader?name=[path][name].[ext]',
},
Я использую загрузчик файлов 3.0.1, и я могу нормально загружать PDF-файлы из своей файловой системы.
Вам также, конечно, нужно будет импортировать его вверху, например:
import resume from '../files/resume.pdf';
Я столкнулся с этой проблемой и нашел решение здесь 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`;
}
import React, { Component } from 'react'
import { Document, Page, pdfjs } from 'react-pdf';
pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;
Добавьте последнюю строку в оператор импорта. Хорошо сработало для меня.
Я не уверен, но не думаю, что ему нужен путь к файлу, а нужен URL-адрес для отправки запроса. Попробуйте поместить
resume.pdfв каталогpublicи вместо этого записатьfile='/resume.pdf'.