UNPKG

@config-plugins/react-native-pdf

Version:

Config plugin to auto configure react-native-pdf on prebuild

89 lines (66 loc) 3.04 kB
# config-plugins/react-native-pdf > Consider using a WebView or WebBrowser to quickly display a PDF in your app. Read the alternatives section to learn more. Config plugin to auto-configure [`react-native-pdf`][lib] when the native code is generated (`npx expo prebuild`). ## Versioning Ensure you use versions that work together! | `expo` | `react-native-pdf` | `@config-plugins/react-native-pdf` | | ------ | ------------------ | ---------------------------------- | | 54.0.0 | 6.7.7 | 12.0.0 | | 53.0.0 | 6.7.7 | 11.0.0 | | 52.0.0 | 6.7.6 | 9.0.0 | | 51.0.0 | 6.7.5 | 8.0.0 | | 50.0.0 | 6.7.4 | 7.0.0 | | 49.0.0 | 6.7.1 | 6.0.0 | | 48.0.0 | 6.6.2 | 5.0.0 | ### Add the package to your npm dependencies > This package cannot be used in the "Expo Go" app because [it requires custom native code](https://docs.expo.io/workflow/customizing/). First install the package with yarn, npm, or [`npx expo install`](https://docs.expo.io/workflow/expo-cli/#expo-install). ``` npx expo install react-native-pdf react-native-blob-util @config-plugins/react-native-pdf @config-plugins/react-native-blob-util ``` After installing this npm package, add the [config plugin](https://docs.expo.io/guides/config-plugins/) to the [`plugins`](https://docs.expo.io/versions/latest/config/app/#plugins) array of your `app.json` or `app.config.js`: ```json { "plugins": [ "@config-plugins/react-native-blob-util", "@config-plugins/react-native-pdf" ] } ``` Next, rebuild your app as described in the ["Adding custom native code"](https://docs.expo.io/workflow/customizing/) guide. [lib]: https://www.npmjs.com/package/react-native-pdf ### Alternatives Consider opening a WebBrowser to display a PDF: ```js import * as WebBrowser from "expo-web-browser"; import { Text } from "react-native"; export default function HomeScreen() { return ( <Text onPress={() => { WebBrowser.openBrowserAsync( "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf" ); }} > Open in-app browser </Text> ); } ``` Or inside a `WebView` for a contained view: ```js import { WebView } from "react-native-webview"; export default function HomeScreen() { return ( <WebView style={{ width: 100, height: 100 }} source={{ uri: "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf", }} /> ); } ``` Alternatively, if users have a favorite PDF viewer app than consider using `Share` API to let users open the PDF in their preferred app. This is akin to how `UIDocumentInteractionController` is intended to be used on iOS. Finally, you could use [DOM Components](https://docs.expo.dev/guides/dom-components/) for a custom web experience.