Как просмотреть и опубликовать PDF-файл с URL-адреса в собственном приложении? - PullRequest
1 голос
/ 22 января 2020

У меня есть сценарий использования в моем собственном родном приложении, в котором я должен загрузить и отобразить PDF-файл из конечной точки, а также поделиться им как вложением (в приложение Gmail или WhatsApp или даже загрузить его), используя собственные параметры общего ресурса. (оба ios и Android).

В настоящее время я использую библиотеку react-native-pdf для загрузки и отображения pdf в приложении, и она работает нормально. Проблема с опцией поделиться. Я попытался использовать Facebook Share API для достижения этой цели, но, к сожалению, это не отвечает моим целям, так как файл PDF передается в виде ссылки, а в Android мне пришлось пропустить оба message and pdfUrl одинаково значение (по крайней мере, чтобы получить одинаковый результат на разных платформах). Я хочу, чтобы PDF-файл передавался в виде вложения при нажатии на любой из параметров общего доступа.

ниже - мой код для того же самого:

class ViewPdfScreen extends Component<Props, {}> {
  render() {

    const pdfUrl = 'http://samples.leanpub.com/thereactnativebook-sample.pdf'

    const source = {
      uri: pdfUrl,
      cache: true,
      expiration: 900, // cache file expired seconds (0 is not expired)
    };

    return (
      <View style={styles.container}>
        <View style={styles.subContainer}>
          <Text>{title}</Text>
          <TouchableOpacity onPress={() => this.sharePdf(title, pdfUrl)}>
            <Image source={shareBtn} />
          </TouchableOpacity>
        </View>
        <View style={styles.pdfContainer}>
          <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);
            }}
            onPressLink={uri => {
              console.log(`Link presse: ${uri}`);
            }}
            style={styles.pdf}
          />
        </View>
      </View>
    );
  }

  shareBill = (title: string, billUrl: string) => {
    Share.share(
      {
        message: billUrl,
        url: billUrl,
        title: title,
      },
      {
        // Android only:
        dialogTitle: `Share ${title}`,
        // iOS only:
        excludedActivityTypes: ['com.apple.UIKit.activity.PostToTwitter'],
      },
    )
      .then(res => console.log(res))
      .catch(error => console.log(error));
  };
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
  subContainer: {
    elevation: 4,
    height: 100,
    flexDirection: 'row',
    backgroundColor: colors.orange,
    justifyContent: 'space-between',
    alignItems: 'flex-end',
    padding: 16,
  },
  pdfContainer: {
    flex: 1,
  },
  pdf: {
    flex: 1,
    width: Dimensions.get('window').width,
    height: Dimensions.get('window').height,
  },
});

export default connect()(ViewPdfScreen);

Кто-нибудь сталкивался с подобной ситуацией? или есть какое-то решение для этого?

хотите что-то похожее на это ниже (взято из Google)

enter image description here

1 Ответ

0 голосов
/ 22 января 2020

response-native-file-share - это библиотека, которая предоставляет эту функцию.

Или

https://github.com/react-native-community/react-native-share Вы также можете попробовать ответ-нативный-поделиться.

Share file directly

When share a local file directly, please follow the format below:

url: "file://<file_path>",
...