React-pdf: لم يتم تشغيل onLoadSuccess مع بيانات Uint8Array

تم إنشاؤها على ٢١ فبراير ٢٠١٨  ·  4تعليقات  ·  مصدر: wojtekmaj/react-pdf

أنا أستخدم رد فعل pdf في بيئة معينة (إلكترون) لذلك لا يمكنني تحميل الملف عبر http / https ولكن من fs.
يبدو أنه لم يتم تشغيل onLoadSuccess ، هل هذا طبيعي؟
أحتاج إلى الحصول على عدد الصفحات قبل عرض الصفحة الأولى.

question

ال 4 كومينتر

بالتأكيد ليس طبيعيا! هل يتم تحميل الملف بشكل مثالي بخلاف ذلك؟ هل يمكنك مشاركة تطبيقك لـ 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 على الأقل ...!
بالمناسبة ، أعتقد أنك لست بحاجة إلى القيام بهذا العمل الشاق.

  1. أعتقد أنه سيتم أيضًا قبول كل ما تحصل عليه من fs.readFile .
  2. يجب أيضًا أن يكون file={this.file} على ما يرام.

تلميح أيضًا ، يتم إهمال componentWillMount قريبًا ، حاول تحميل مستند على componentDidMount :)

شكرًا على التلميح ، لقد تغيرت إلى componentDidMount


    1. نعم ، إنها تعمل بدون Uint8Array


    1. لا ، لدي خطأ عندما أحاول تحميل الملف مباشرة دون تمرير الكائن.

لقد اكتشفت اختراقًا ، أحتاج فقط إلى معرفة عدد الصفحات بعد تحميل الصفحة الأولى ، لذلك أنتظر نجاح عرض الصفحة الأولى للحصول على عدد الصفحات في حالة المستند. أنا مشغول قليلاً في مشروعي لذا لم أحصل على الوقت لتصحيح هذا الأمر. لست متأكدًا من ذلك لأنني أعمل على الإلكترون أو لأنني أقوم بتحميل ملف محلي. على أي حال ، سأبقيك على اطلاع عندما أحصل على الوقت لتصحيح هذا.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات