React-pdf: onLoadSuccess tidak diaktifkan dengan data Uint8Array

Dibuat pada 21 Feb 2018  ·  4Komentar  ·  Sumber: wojtekmaj/react-pdf

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.

question

Semua 4 komentar

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.

  1. Saya percaya apa pun yang Anda dapatkan dari formulir fs.readFile juga akan diterima.
  2. 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


    1. Ya itu bekerja tanpa Uint8Array


    1. Tidak, saya mengalami kesalahan saat mencoba memuat file secara langsung tanpa melewati objek.

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.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

wojtekmaj picture wojtekmaj  ·  4Komentar

Solitaryo picture Solitaryo  ·  5Komentar

wangzhidavid picture wangzhidavid  ·  4Komentar

mapoulos picture mapoulos  ·  4Komentar

herneli picture herneli  ·  3Komentar