أنا أستخدم رد فعل pdf في بيئة معينة (إلكترون) لذلك لا يمكنني تحميل الملف عبر http / https ولكن من fs.
يبدو أنه لم يتم تشغيل onLoadSuccess ، هل هذا طبيعي؟
أحتاج إلى الحصول على عدد الصفحات قبل عرض الصفحة الأولى.
بالتأكيد ليس طبيعيا! هل يتم تحميل الملف بشكل مثالي بخلاف ذلك؟ هل يمكنك مشاركة تطبيقك لـ React-PDF هنا؟
نعم ، تم تحميل الملف بشكل مثالي.
حاولت إصدار مستقر و 3 alpha.
هل فاتني شيء؟
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
لقد اكتشفت اختراقًا ، أحتاج فقط إلى معرفة عدد الصفحات بعد تحميل الصفحة الأولى ، لذلك أنتظر نجاح عرض الصفحة الأولى للحصول على عدد الصفحات في حالة المستند. أنا مشغول قليلاً في مشروعي لذا لم أحصل على الوقت لتصحيح هذا الأمر. لست متأكدًا من ذلك لأنني أعمل على الإلكترون أو لأنني أقوم بتحميل ملف محلي. على أي حال ، سأبقيك على اطلاع عندما أحصل على الوقت لتصحيح هذا.