React-Native,Pdf 在 android 模拟器上显示,但在实际的 android 设备上出现错误

Posted

技术标签:

【中文标题】React-Native,Pdf 在 android 模拟器上显示,但在实际的 android 设备上出现错误【英文标题】:React-Native, Pdf showing on android simulator but getting error on actual android device 【发布时间】:2019-04-23 07:07:04 【问题描述】:

我已经安装了 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
  
);

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

【问题讨论】:

显然因为你分配了本地 url 【参考方案1】:

正如上面@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 文件夹中即可。

【讨论】:

以上是关于React-Native,Pdf 在 android 模拟器上显示,但在实际的 android 设备上出现错误的主要内容,如果未能解决你的问题,请参考以下文章

我已经按照 react-native 文档开始使用,但是在运行 npx react-native run-android 后我一直无法启动默认应用程序本身

tesseract v3.03 使用可搜索文本示例呈现 PDF

React Native PDF 签名

我应该怎么做才能在反应原生中合并多个pdf文件?

带有 React Native 的 Expo PDF 查看器

react-native-pdf iOS 和 Android 构建错误