Minimalist PDF viewer for React Native

Minimalist PDF viewer for React Native

PDF viewer for React Native. Implemented with platform native render functions for smallest deploy size impact, and restricted feature set to simplify integration with larger systems.

react-native-pdf-light

PDF viewer for React Native. Implemented with platform native render functions for smallest deploy size impact, and restricted feature set to simplify integration with larger systems.

Includes prefabricated full document viewer based on FlatList and a single page render component to use as a building block for your own fully custom viewer.

Uses android.graphics.pdf.PdfRenderer on Android and CGPDFDocument on iOS. Unlike many native components in the wild, react-native-pdf-light provides full implementation of React Native shadow nodes. This simplifies UI development, since the component actually knows its own dimensions.

Installation

npm install react-native-pdf-light

If iOS build fails with Undefined symbol: __swift_FORCE_LOAD_..., add an empty .swift file to the xcode project.

Usage

import { Pdf, PdfUtil } from 'react-native-pdf-light';

PdfUtil.getPageCount(source).then(console.log);

<Pdf source={source} />

If creating your own custom viewer, import can be optimized to:

import { PdfView } from 'react-native-pdf-light/PdfView';

<PdfView page={page} source={source} />

<Pdf ... /> Display a pdf.

Props:

  • onError: (error: Error) => void
    • Optional: Callback to handle errors.
  • onLoadComplete: (numberOfPages: number) => void
    • Optional: Callback to handle pdf load completion.
    • Passed the page count of the loaded pdf.
  • onMeasurePages: (measurements: { itemHeight: number, offset: number }[]) => void
    • Optional: Callback to receive layout details of all pages.
  • shrinkToFit: 'never' | 'portrait' | 'landscape' | 'always'
    • Optional: Size pages such that each page can be displayed without cutoff.
    • Applies when device is in the specified orientation.
  • source: string
    • Document to display.

The following props are forwarded to the underlying FlatList component:

  • initialScrollIndex
  • ListEmptyComponent
  • onMomentumScrollBegin
  • onMomentumScrollEnd
  • onScroll
  • onScrollBeginDrag
  • onScrollEndDrag
  • refreshControl
  • scrollEventThrottle

Methods:

  • scrollToIndex(index: number): void
    • Scroll to the specified page (0-indexed).
  • scrollToOffset(offset: number): void
    • Scroll to the specified offset.

<PdfView ... /> Single page of a pdf.

Props:

  • page: number
    • Page (0-indexed) of document to display.
  • resizeMode: 'contain' | 'fitWidth'
    • Optional: How pdf page should be scaled to fit in view dimensions.
  • source: string
    • Document to display.
  • style: ViewStyle
    • Optional: View stylesheet.

PdfUtil Utility functions.

PdfUtil.getPageCount(source: string): Promise<number>

  • Get the number of pages of a pdf.

PdfUtil.getPageSizes(source: string): Promise<{ height: number; width: number }[]>

  • Get the dimensions of every page.

Known Issues

On Android API level < 26 when directly rendering pages with PdfView at a non-default aspect ratio (e.g. setting both width and height of the view such that the view's aspect ratio does not match the pdf page's aspect ratio) if a page in the pdf is cropped or rotated, the page may render in the wrong position. This is due to a bug in the native android.graphics.pdf.PdfRenderer. (If you are aware of a fix, pull requests welcome.)

Alternatives

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

Download Details:

Author: alpha0010

Source Code: https://github.com/alpha0010/react-native-pdf-viewer

react-native react mobile-apps

Bootstrap 5 Complete Course with Examples

Bootstrap 5 Tutorial - Bootstrap 5 Crash Course for Beginners

Nest.JS Tutorial for Beginners

Hello Vue 3: A First Look at Vue 3 and the Composition API

Building a simple Applications with Vue 3

Deno Crash Course: Explore Deno and Create a full REST API with Deno

How to Build a Real-time Chat App with Deno and WebSockets

Convert HTML to Markdown Online

HTML entity encoder decoder Online

How native is React Native? | React Native vs Native App Development

Article covers: How native is react native?, React Native vs (Ionic, Cordova), Similarities and difference between React Native and Native App Development.

React Native Mobile App Development

Skenix is providing React Native Development Services with qualified React Native App Developers. Get the best React Native App Development Services.

How React Native Is Shaping Mobile App Development

Are you a mobile app developer looking for more efficient tools for your projects? Mobile app development is getting tougher and tougher as the market continues to grow. As a developer, you need to develop Apps which meet the demands of your users. To achieve this, adopt the right tools, like the React Native development framework.

Top React Native Mobile App Development Companies in USA

Looking for top React Native mobile app development company in USA for Startups & Enterprise? Find out the top list of React Native mobile app development company in USA.

Which is the best React Native app development company in New York?

Hire top react native app development company in New York to build and develop custom react native mobile apps for Android & iOS with the latest features.