1

我已经安装了 react-native-pdf 和 rn-fetch-blob 包来显示 pdf 文件。它在模拟器上工作得很好,但由于某种原因我得到“错误:打开失败:ENOENT(没有这样的文件或目录)”。

下面是我的代码:

import React, { Component } from 'react';
import {
  StyleSheet,
  Dimensions,
  View
} from 'react-native';

import Pdf from 'react-native-pdf';


// Screen that shows the contents of a PDF
export default class OpenPdf extends Component {

  static navigationOptions = {
    title: 'Product Variants'
  };

  render() {
    const source = require('../assets/Product_Variants_Electric_Connections.pdf');

    return (
        <View style={{width: '100%', height: '100%'}}>
          <Pdf style={styles.pdf}
          source={source}

          onLoadComplete={(numberOfPages, filePath) => {
              alert(`number of pages: ${numberOfPages}`);
          }}
          onPageChanged={(page, numberOfPages) => {
              alert(`current page: ${page}`);
          }}
          onError={(error) => {
              alert(`error`+error);
          }}
      />
      </View>
  );
  }
}

const styles = StyleSheet.create({
  container: {
      flex: 1,
      justifyContent: 'center',
      alignItems: 'center'
  },
  pdf: {
      flex: 1,
      width: Dimensions.get('window').width
  }
});

我已经浏览了很多链接,没有一个问题与我的相似。请建议我错过了什么。

4

1 回答 1

0

正如上面@Hardik Virani 在评论中所建议的那样,我已经删除了本地网址并做了如下操作:

render() {
    const source = {uri:'bundle-assets://Product_Variants_Electric_Connections.pdf', cache: true};

    return (
        <View style={{width: '100%', height: '100%'}}>
          <Pdf style={styles.pdf}
          source={source}

      />
      </View>
  );

请记住,只需将您的实际 pdf 文件放在项目的 android/app/src/main/assets/pdf 文件夹中即可。

于 2019-04-23T07:49:27.093 回答