Saya menggunakan react-pdf di lingkungan tertentu ( electron ) jadi saya tidak dapat memuat file melalui http/https tetapi dari fs.
Tampaknya onLoadSuccess tidak diaktifkan, apakah itu normal?
Saya perlu mendapatkan jumlah halaman sebelum merender halaman pertama.
Jelas tidak biasa! Apakah file dimuat dengan sempurna jika tidak? Bisakah Anda membagikan implementasi React-PDF Anda di sini?
Ya, file dimuat dengan sempurna.
Mencoba pada rilis stabil dan 3 alpha.
Apakah saya melewatkan sesuatu?
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>
);
}
}
Itu terlihat baik-baik saja! Bertanya-tanya apakah Anda mendapatkan setidaknya panggilan balik padaSourceSuccess...!
Omong-omong, saya pikir Anda tidak perlu melakukan banyak pekerjaan.
fs.readFile
juga akan diterima.file={this.file}
juga harus baik-baik saja.Juga petunjuk, componentWillMount akan segera ditinggalkan, coba muat dokumen di componentDidMount :)
terima kasih atas petunjuknya, saya telah mengubah ke componentDidMount
Uint8Array
Saya telah menemukan peretasan, saya hanya perlu mengetahui jumlah halaman setelah saya memuat halaman pertama, jadi saya menunggu renderSuccess halaman pertama untuk mendapatkan jumlah halaman dalam status dokumen. Saya agak sibuk dengan proyek saya jadi saya tidak punya waktu untuk men-debug ini. Saya tidak yakin itu karena saya menggunakan elektron atau karena saya memuat file lokal. Bagaimanapun, saya akan terus memperbarui Anda ketika saya mendapatkan waktu untuk men-debug ini.