首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用react-native- view -pdf显示空白视图

问使用react-native- view -pdf显示空白视图
EN

Stack Overflow用户
提问于 2019-04-22 14:28:27
回答 2查看 4.4K关注 0票数 1

我使用react-native-view-pdf,React原生版本是0.59.5

https://github.com/rumax/react-native-PDFView

我只是按照教程操作,但显示空白屏幕。我想不出来。我不知道为什么他们会显示空屏幕。

Step1:

代码语言:javascript
复制
npm install react-native-view-pdf --save

Step2:

代码语言:javascript
复制
react-native link react-native-view-pdf

使用代码并键入react-native run-ios

App.js:

代码语言:javascript
复制
import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View} from 'react-native';
import PDFView from 'react-native-view-pdf/lib/index';

const instructions = Platform.select({
  ios: 'Press Cmd+R to reload,\n' + 'Cmd+D or shake for dev menu',
  android:
    'Double tap R on your keyboard to reload,\n' +
    'Shake or press menu button for dev menu',
});

const resources = {
  file: Platform.OS === 'ios' ? 'downloadedDocument.pdf' : '/sdcard/Download/downloadedDocument.pdf',
  url: 'https://www.ets.org/Media/Tests/TOEFL/pdf/SampleQuestions.pdf',
  base64: 'JVBERi0xLjMKJcfs...',
};

type Props = {};
export default class App extends Component<Props> {
  render() {
    const resourceType = 'url';

    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>Welcome to React Native!</Text>
        <PDFView
          fadeInDuration={250.0}
          style={{ flex: 1 }}
          resource={'https://www.ets.org/Media/Tests/TOEFL/pdf/SampleQuestions.pdf'}
          resourceType={resourceType}
          onLoad={(event) => console.log(`PDF rendered from ${event}`)}
          onError={(error) => console.log('Cannot render PDF', error)}
        />
        <Text>Bottom text</Text>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
});

显示黑屏:

​

EN

回答 2

Stack Overflow用户

发布于 2019-04-22 15:23:23

你可以尝试下面的库,它将帮助你实现,这是的高级库

see here

Installation

npm library

代码语言:javascript
复制
npm install rn-fetch-blob --save
npm install react-native-pdf --save

react-native link rn-fetch-blob
react-native link react-native-pdf

代码语言:javascript
复制
import React from 'react';
import { StyleSheet, Dimensions, View } from 'react-native';

import Pdf from 'react-native-pdf';

export default class PDFExample extends React.Component {
    render() {
        const source = {uri:'http://samples.leanpub.com/thereactnativebook-sample.pdf',cache:true};
        //const source = require('./test.pdf');  // ios only
        //const source = {uri:'bundle-assets://test.pdf'};

        //const source = {uri:'file:///sdcard/test.pdf'};
        //const source = {uri:"data:application/pdf;base64,..."};

        return (
            <View style={styles.container}>
                <Pdf
                    source={source}
                    onLoadComplete={(numberOfPages,filePath)=>{
                        console.log(`number of pages: ${numberOfPages}`);
                    }}
                    onPageChanged={(page,numberOfPages)=>{
                        console.log(`current page: ${page}`);
                    }}
                    onError={(error)=>{
                        console.log(error);
                    }}
                    style={styles.pdf}/>
            </View>
        )
  }
}

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

我最近用过这个库,不出所料,它非常不错。

票数 1
EN

Stack Overflow用户

发布于 2019-10-02 10:26:50

试试这个:

代码语言:javascript
复制
import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View} from 'react-native';
import PDFView from 'react-native-view-pdf/lib/index';

const instructions = Platform.select({
  ios: 'Press Cmd+R to reload,\n' + 'Cmd+D or shake for dev menu',
  android:
    'Double tap R on your keyboard to reload,\n' +
    'Shake or press menu button for dev menu',
});

const resources = {
  file: Platform.OS === 'ios' ? 'downloadedDocument.pdf' : '/sdcard/Download/downloadedDocument.pdf',
  url: 'https://www.ets.org/Media/Tests/TOEFL/pdf/SampleQuestions.pdf',
  base64: 'JVBERi0xLjMKJcfs...',
};

type Props = {};
export default class App extends Component<Props> {
  render() {
    const resourceType = 'url';

    return (
      <View style={{flex: 1, witdth: '100%'}>
        <Text style={styles.welcome}>Welcome to React Native!</Text>
        <PDFView
          fadeInDuration={250.0}
          style={{ flex: 1 }}
          resource={'https://www.ets.org/Media/Tests/TOEFL/pdf/SampleQuestions.pdf'}
          resourceType={resourceType}
          onLoad={(event) => console.log(`PDF rendered from ${event}`)}
          onError={(error) => console.log('Cannot render PDF', error)}
        />
        <Text>Bottom text</Text>
      </View>
    );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55790085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档