Я использую response-pdf в определенной среде (электронном), поэтому я не могу загрузить файл через http / https, но из fs.
Вроде не запускается onLoadSuccess, это нормально?
Мне нужно получить количество страниц до рендеринга первой страницы.
Определенно ненормально! В противном случае файл загружается идеально? Можете ли вы поделиться здесь своей реализацией React-PDF?
Да, файл отлично загружается.
Пробовал на стабильном выпуске и на 3 альфе.
Я что-то пропустил?
export default class PDFPlayer extends PureComponent {
state = {
fileLoaded: 0,
numPages: null,
pageNumber: 1,
}
componentWillMount() {
const { filePath } = this.props;
if (fs.existsSync(filePath)) {
fs.readFile(filePath, (err, file) => {
if (err) { console.log(err); }
this.file = new Uint8Array(file);
this.setState({ fileLoaded: 1 });
});
}
}
onLoadSuccess = (pdf) => {
console.log('onDocumentLoad', pdf);
this.setState({ numPages: pdf.numPages });
}
onRenderSuccess = (page) => {
console.log(page.originalHeight);
}
render() {
const { fileLoaded } = this.state;
if (!fileLoaded) return null;
return (
<div style={{ ...styles.container, height: document.body.offsetHeight }}>
<Document
ref={(doc) => { this.document = doc; }}
file={{ data: this.file }}
onLoadSuccess={this.onLoadSuccess}
>
<Page onRenderSuccess={this.onRenderSuccess} pageNumber={1} />
</Document>
</div>
);
}
}
Выглядит прекрасно! Интересно, получите ли вы хотя бы обратный вызов onSourceSuccess ...!
Между прочим, я думаю, что вам не нужно проделывать такую большую работу.
fs.readFile
, также будет принято.file={this.file}
тоже должно быть в порядке.Также подсказка, что componentWillMount скоро устареет, попробуйте загрузить документ на componentDidMount :)
спасибо за подсказку, я перешел на componentDidMount
Uint8Array
Я нашел взлом, мне просто нужно знать количество страниц после того, как я загрузил первую страницу, поэтому я жду, пока renderSuccess первой страницы не получит количество страниц в состоянии документа. Я немного занят своим проектом, поэтому у меня не было времени отладить его. Я не уверен, что это потому, что я использую электрон или загружаю локальный файл. В любом случае, я буду держать вас в курсе, когда у меня будет время отладить это.