---
title: "How to build a React Native PDF viewer (step-by-step)"
canonical_url: "https://www.nutrient.io/blog/how-to-build-a-react-native-pdf-viewer/"
md_url: "https://www.nutrient.io/blog/how-to-build-a-react-native-pdf-viewer.md"
last_updated: "2026-07-10T11:16:01.215Z"
description: "Build a React Native PDF viewer with the react-native-pdf library. Then upgrade to Nutrient React Native SDK for annotations, forms, and signing."
---

**TL;DR**

Build a production-ready React Native PDF viewer with the [Nutrient React Native PDF SDK](https://www.nutrient.io/sdk/react-native/). Add annotations, form filling, electronic signatures, and a customizable user interface (UI) to your iOS and Android apps. This tutorial walks you through project setup, platform configuration, and rendering your first PDF. [Start a free trial](https://www.nutrient.io/try/) or [launch the demo](https://www.nutrient.io/guides/react-native/demo.md).

With Nutrient’s React Native [PDF SDK](https://www.nutrient.io/sdk/), you can add a fully featured PDF viewer to your app. It includes annotations, form filling, and electronic signatures out of the box — features that would take significant engineering effort to build from scratch or that aren’t available in open source alternatives like `react-native-pdf`.

Mobile apps often need to display PDFs — contracts, reports, invoices, or reference documents. PDFs are widely used across industries like education, finance, healthcare, and legal services.

With Nutrient, you can build apps that:

- **Let users annotate and collaborate** — Add highlights, comments, and drawings to contracts, reports, or educational materials.

- **Capture signatures on mobile** — Collect electronic signatures from users without leaving your app.

- **Fill and submit forms** — Enable users to complete PDF forms and export the data to your backend.

This tutorial shows you how to integrate the Nutrient React Native [PDF SDK](https://www.nutrient.io/sdk/) into your app. It also compares it to the open source [`react-native-pdf`](https://github.com/wonday/react-native-pdf) library so you can see the difference.

You’ll learn how to create a new project, add the necessary dependencies, configure platform-specific settings, and display a PDF document. By the end of this tutorial, you’ll have a fully functional PDF viewer in your React Native app.

## Why Nutrient for React Native PDF viewing?

Most React Native PDF libraries only handle basic viewing. Nutrient adds annotations, form filling, and signatures, so you don’t have to build them yourself. The viewer runs on native components on both iOS and Android.

## React Native PDF viewer use case

This post assumes you’re familiar with React Native and that you’ve previously developed apps using React Native. If that isn’t the case, you can use our [getting started](https://www.nutrient.io/sdk/react-native/getting-started.md) guides to create a new React Native project that uses Nutrient.

### Which React Native PDF viewer should you choose?

- Use Nutrient React Native [PDF SDK](https://www.nutrient.io/sdk/) if you’re building a customer-facing or enterprise app. You get annotations, form filling, electronic signatures, security features, and ongoing support, plus a configurable UI that works on both iOS and Android.

- Use `react-native-pdf` if you only need basic view-only functionality for an internal tool or prototype and don’t need advanced features.

In the video below, you can see how to open a PDF file using `react-native-pdf` and Nutrient React Native SDK.

## Prerequisites

Before getting started, ensure you have the following:

- A development environment for React Native using the [React Native CLI](https://reactnative.dev/docs/environment-setup) (not the Expo CLI)

- The latest stable versions of [Android Studio](https://developer.android.com/studio), the [Android NDK](https://developer.android.com/ndk/downloads), and an [Android Virtual Device](https://developer.android.com/studio/run/managing-avds.html) or hardware device

- The latest stable versions of [Xcode](https://developer.apple.com/xcode) and [CocoaPods](https://cocoapods.org/)

## Step 1 — Creating a new React Native project

Open your terminal and navigate to the directory where you want to create your project. For this example, you’ll use the `~/Documents/` directory:

```bash

cd ~/Documents

```

Create a new React Native project:

```bash

npx @react-native-community/cli init ReactNativePDFViewer

```

Next, you’ll add the required dependencies.

## Step 2 — Installing the Nutrient dependency

1. Navigate to your project directory:

   ```bash

   cd ReactNativePDFViewer
   ```

2. Then, add the Nutrient dependency:

```bash

yarn add @nutrient-sdk/react-native

```

3. Install all the dependencies for the project:

   ```bash

   yarn install
   ```

## Step 3 — Configuring the Android platform

1. Open `android/build.gradle` and add the Nutrient repository:

   ```diff

   allprojects {
       repositories {
           mavenCentral()
   +       maven { url 'https://my.nutrient.io/maven/' }
       }
   }
   ```

2. Open `android/app/build.gradle` and update the SDK versions:

   ```diff

   android {
   -   compileSdkVersion rootProject.ext.compileSdkVersion
   +   compileSdkVersion 34

       defaultConfig {
           applicationId "com.reactnativepdfviewer"
   -       minSdkVersion rootProject.ext.minSdkVersion
   +       minSdkVersion 21
           targetSdkVersion rootProject.ext.targetSdkVersion
       }
   }
   ```

## Step 4 — Configuring the iOS platform

1. Open `ios/Podfile` and set the platform version to iOS 16:

   ```diff

   - platform :ios, '11.0'
   + platform :ios, '16.0'
   ```

2. Navigate to the `ios` folder and install the required dependencies:

   ```bash

   cd ios
   pod install
   ```

3. Open the Workspace in Xcode:

   ```bash

   open ReactNativePDFViewer.xcworkspace
   ```

4. In Xcode, ensure the deployment target is set to 16.0 or higher.![Xcode deployment target setting](@/assets/getting-started/sdk/react-native/deployment-target.png)

5. Change **View controller-based status bar appearance** to `YES` in `Info.plist`.![View controller-based status bar appearance setting in Info.plist](@/assets/getting-started/sdk/react-native/view-controller-based-status-bar-appearance.png)

## Step 5 — Displaying a PDF document

1. Drag a PDF document into your project to use as a sample.

2. If you haven’t already, create an assets directory for Android:

   ```bash

   mkdir android/app/src/main/assets
   ```

3. Place your PDF document in the `assets` directory:

   ```bash

   cp ~/Downloads/Document.pdf android/app/src/main/assets/Document.pdf
   ```

4. Open `App.js` and replace its contents with the following code snippet:

```javascript

import React, { Component } from 'react';
import { Platform } from 'react-native';
import NutrientView from '@nutrient-sdk/react-native';
import { NativeModules } from 'react-native';

const Nutrient = NativeModules.Nutrient;
Nutrient.setLicenseKey(null);

const DOCUMENT =
    Platform.OS === 'ios'? 'Document.pdf'
		: 'file:///android_asset/Document.pdf';
export default class NutrientDemo extends Component<{}> {
    render() {
  	  var pdfRef: React.RefObject<NutrientView | null> = React.createRef();
  	  return (
  		  <NutrientView
  			  document={DOCUMENT}
  			  configuration={{
  				  showThumbnailBar: 'scrollable',
  				  pageTransition: 'scrollContinuous',
  				  scrollDirection: 'vertical',
  			  }}
  			  ref={pdfRef}
  			  fragmentTag="PDF1"
  			  style={{ flex: 1 }}
  		  />
  	  );
    }
}

```

## Step 6 — Launching the app

Run the app on your chosen platform:

```bash

npx react-native run-android
npx react-native run-ios

```

## Why Nutrient instead of react-native-pdf?

Both libraries display PDFs, but Nutrient adds the editing and document features production apps need. Here’s how they compare:

| Feature                | react-native-pdf       | Nutrient React Native PDF SDK                  |
| ---------------------- | ---------------------- | ---------------------------------------------- |
| Cost                   | Free (open source)     | Paid (commercial)                              |
| Features               | Basic viewing, zooming | Advanced features (annotations, search, forms) |
| Performance            | Moderate               | Optimized for high performance                 |
| Ease of integration    | Simple                 | Requires licensing setup                       |
| Customization options  | Limited                | Extensive UI customization                     |
| Community support      | Active, open source    | Professional support available                 |
| Platform compatibility | Android, iOS           | Android, iOS                                   |

**Bottom line:**

If PDF viewing is core to your app’s value, start with Nutrient. Teams that start with `react-native-pdf` often switch to Nutrient once they need annotations, forms, or signatures, which means rewriting the viewer layer later instead of building on it from the start.

## What you can build with Nutrient that you can’t with react-native-pdf

Production apps often need more than basic PDF viewing. Here’s what Nutrient enables that `react-native-pdf` doesn’t support:

### 1. Annotation support

- **Limitations of `react-native-pdf`** — `react-native-pdf` only renders annotations that were already in the source file. It doesn’t support annotation editing, so users won’t be able to create, update, or delete annotations in the PDF.

- **Nutrient SDK features** — Nutrient React Native SDK supports comprehensive [annotation capabilities](https://www.nutrient.io/guides/react-native/annotations.md), enabling you to add, edit, and remove various types of annotations programmatically or via the user interface. It supports 17+ annotation types, including highlights, text, ink, notes, and shapes. You can also import and export annotations in XFDF or JSON formats, with advanced features like cloudy annotations and custom appearances.

### 2. Interactive PDF forms

- **Limitations of `react-native-pdf`** — `react-native-pdf` only renders forms and their values from the source file and doesn’t support form editing. Users won’t be able to fill forms in a PDF document.

- **Nutrient SDK features** — Nutrient React Native SDK provides full support for [interactive PDF forms](https://www.nutrient.io/guides/react-native/forms.md), enabling users to fill, read, and edit PDF AcroForms programmatically or through the UI. You can capture form field data, export it, or embed it into the PDF.

### 3. Electronic signatures

- **Limitations of `react-native-pdf`** — `react-native-pdf` has no built-in signature support, so users can’t sign documents in the app.

- **Nutrient SDK features** — Nutrient React Native SDK supports adding [electronic signatures](https://www.nutrient.io/guides/react-native/signatures.md) through the UI or programmatically. Cryptographic [digital signatures](https://www.nutrient.io/guides/react-native/signatures.md) aren’t bridged directly in the React Native SDK; they’re applied through the underlying iOS, Android, or Web layer.

### 4. Customizing the PDF viewer UI

- **Limitations of `react-native-pdf`** — The customization options for the PDF viewer in `react-native-pdf` are limited compared to the Nutrient SDK.

- **Nutrient SDK features** — Nutrient offers extensive customization of the PDF viewer UI. You can modify the toolbar, adjust the background color, and configure the layout to match your app’s design. The viewer supports multiple page modes and transitions, ensuring the UI aligns with your app’s user experience.

### 5. Long-term support and updates

- **`react-native-pdf`** — As a community-maintained open source project, `react-native-pdf` relies on volunteer contributions, so the scope and timing of new features, fixes, and compatibility updates depend on maintainer availability.

- **Nutrient SDK features** — The Nutrient SDK ships regular releases that add features, fix bugs, and maintain compatibility with the latest React Native versions, OS updates, and dependencies, backed by dedicated commercial support. This keeps your app current with the latest PDF capabilities.

## Optimizing performance of the PDF viewer in React Native

To optimize the performance of the PDF viewer in React Native applications using Nutrient SDK, follow the best practices outlined below.

1. Optimize PDF documents

   Before rendering, [optimize your PDF documents](https://www.nutrient.io/guides/android/miscellaneous/optimize-pdf-documents-for-mobile-rendering.md) for mobile viewing by reducing image sizes to save memory, avoiding JPEG 2000 for image compression due to its complexity, and using tools like Adobe Acrobat to optimize PDFs for mobile devices.

2. Implement caching

   Improve performance for recurring users by caching documents locally — for example, storing downloaded PDFs in app storage so they don’t need to be refetched each time the document is opened.

3. Use Reader View

   For text-heavy documents, consider using the [Reader View feature](https://www.nutrient.io/guides/react-native/viewer/reader-view.md#how-to-use-reader-view), which presents content in an easy-to-read, single-column view optimized for mobile devices. It ignores non-essential elements like images and headers, improving reading flow and enhancing performance.

4. Configure page transitions

   Optimize [page transitions](https://www.nutrient.io/guides/react-native/viewer/page-transition.md) for smoother scrolling by using continuous scrolling modes, which keep navigation between pages uninterrupted.

5. Lazy loading

   Consider implementing lazy loading techniques to load only the visible pages and their immediate neighbors, reducing memory usage and improving initial load times.

6. Optimize UI rendering

   [Customize the UI](https://www.nutrient.io/guides/react-native/user-interface.md) to show only necessary elements by hiding unnecessary toolbar buttons to reduce UI complexity and using the `NutrientView` component to adjust the layout of the native UI component for optimal performance.

7. Use the latest version

   Always use the latest version of Nutrient React Native SDK, as it likely includes performance improvements and bug fixes.

Apply these based on your document types and performance requirements.

## Conclusion

In this tutorial, you saw how to integrate PDF viewing into a React Native app using both `react-native-pdf` and the Nutrient React Native PDF SDK. `react-native-pdf` is a solid choice for basic viewing in simple or internal apps, but it falls short when you need advanced features like annotations, interactive forms, electronic signatures, or long-term support.

If your business depends on PDFs, it’s usually more efficient to adopt a dedicated React Native PDF viewer library like Nutrient from the start. We offer a commercial, [feature-rich](https://www.nutrient.io/sdk/features-list/), and completely customizable [React Native PDF SDK](https://www.nutrient.io/guides/react-native/viewer.md) that’s easy to integrate and comes with well-documented APIs to handle advanced use cases. Check out our [demos](https://www.nutrient.io/guides/react-native/demo.md) or [start a free trial](https://www.nutrient.io/try/) to see it in action.

If you have any questions about [our Nutrient React Native SDK](https://github.com/PSPDFKit/react-native), [reach out to us](https://support.nutrient.io/hc/en-us/requests/new).

## FAQ

#### What is the best library for building a React Native PDF viewer?

Two popular options are the open source `react-native-pdf` library and the commercial Nutrient React Native PDF SDK. `react-native-pdf` works well for basic PDF viewing, while Nutrient provides a full React Native PDF viewer with annotations, form filling, electronic signatures, and long-term support — making it a better fit for production and enterprise apps.

#### What is react-native-pdf?

`react-native-pdf` is an open source React Native library that lets you display PDF files in iOS and Android apps using a `<Pdf />` component. It’s a good fit for simple, view-only React Native PDF viewers. For advanced features like annotations, form filling, and electronic signatures, developers often switch to the Nutrient React Native PDF SDK.

#### How can I display PDF files in a React Native app?

You can display PDF files using either `react-native-pdf` or the Nutrient React Native PDF SDK. Both libraries expose React Native components that render PDFs on iOS and Android. In this tutorial, you install the dependencies, add a sample PDF to your project, and use the SDK’s viewer component to show the document in your app.

#### How do I add annotations to PDFs in React Native?

`react-native-pdf` can render existing annotations in a PDF but doesn’t support creating or editing them. For full annotation support — including adding, modifying, and deleting annotations from your React Native app — use the Nutrient React Native PDF SDK, which provides an annotation API and built-in UI tools.

#### Can I fill out forms in a PDF document using React Native?

Yes. While `react-native-pdf` displays form fields as they appear in a PDF, it doesn’t support interactive form filling. Nutrient React Native PDF SDK includes complete interactive form support, so users can fill out, validate, and submit PDF forms directly from your React Native PDF viewer.

#### What are the advantages of using Nutrient React Native PDF SDK?

Nutrient React Native PDF SDK gives you accurate rendering, annotation editing, form filling, electronic signatures (with cryptographic digital signing via the native platforms), UI customization, performance optimizations, and ongoing updates for new React Native and OS versions. It’s designed as a production-ready React Native PDF viewer library rather than a basic renderer.

#### How do I get started with Nutrient in my React Native project?

Install the `@nutrient-sdk/react-native` package, configure Android and iOS as shown in this tutorial, and then use the `NutrientView` component to load your PDF. To try it out in your own environment, [start a free trial](https://www.nutrient.io/try/) or explore the [React Native SDK page](https://www.nutrient.io/sdk/react-native/).

## Related reading

- [How to build a Flutter PDF viewer](https://www.nutrient.io/blog/how-to-build-a-flutter-pdf-viewer.md) — Complete Flutter PDF integration tutorial

- [Build an Android PDF viewer using Nutrient](https://www.nutrient.io/blog/how-to-build-an-android-pdf-viewer.md) — Step-by-step Android PDF viewer guide

- [Top five document viewers for developers](https://www.nutrient.io/blog/top-doc-viewers/) — Compare DOCX and PDF viewer libraries side by side

Explore all available platforms on the [mobile SDK overview](https://www.nutrient.io/sdk/mobile-overview/).
---

## Related pages

- [The business case for accessibility: Five ways it drives enterprise value](/blog/5-ways-accessibility-drives-enterprise-value.md)
- [Accessibility Untangled Why It Matters Guide](/blog/accessibility-untangled-why-it-matters-guide.md)
- [Advanced Techniques For React Native Ui Components](/blog/advanced-techniques-for-react-native-ui-components.md)
- [`vector_store` holds your indexed documents (see the multimodal RAG post](/blog/agentic-rag.md)
- [Ai Document Automation Extraction To Action](/blog/ai-document-automation-extraction-to-action.md)
- [Ai Legal Assistant Document Authoring](/blog/ai-legal-assistant-document-authoring.md)
- [Angular File Viewer Pdf Image Office Files](/blog/angular-file-viewer-pdf-image-office-files.md)
- [Auto Tagging And Document Accessibility In Dotnet Sdk](/blog/auto-tagging-and-document-accessibility-in-dotnet-sdk.md)
- [Best Document Viewers](/blog/best-document-viewers.md)
- [The CEO’s AI playbook: Why decision architecture beats model selection](/blog/ceo-ai-playbook-decision-architecture.md)
- [1. Extract and chunk the PDF.](/blog/chat-with-pdf.md)
- [Complete Guide To Pdfjs](/blog/complete-guide-to-pdfjs.md)
- [Construction Document Data Extraction](/blog/construction-document-data-extraction.md)
- [Convert One Drive Files To Pdf In Sharepoint](/blog/convert-one-drive-files-to-pdf-in-sharepoint.md)
- [Create And Edit Pdfs In Flutter](/blog/create-and-edit-pdfs-in-flutter.md)
- [Create Pdfs With React](/blog/create-pdfs-with-react.md)
- [Creating A Document Scanner With Ocr In Python](/blog/creating-a-document-scanner-with-ocr-in-python.md)
- [Creating And Filling Pdf Forms Programmatically In Javascript](/blog/creating-and-filling-pdf-forms-programmatically-in-javascript.md)
- [The CTO’s AI playbook: Why accountability architecture beats orchestration](/blog/cto-ai-playbook-accountability-architecture.md)
- [Digital Signatures](/blog/digital-signatures.md)
- [Digital Workflow Automation](/blog/digital-workflow-automation.md)
- [Document Ai Vs Ocr](/blog/document-ai-vs-ocr.md)
- [Document Viewer](/blog/document-viewer.md)
- [Document Watermarking](/blog/document-watermarking.md)
- [Emerging threats: Your logging system may be an agentic threat vector](/blog/emerging-threats-your-logging-system.md)
- [app.py](/blog/extract-text-from-pdf-using-python.md)
- [How To Add Digital Signature To Pdf Using React](/blog/how-to-add-digital-signature-to-pdf-using-react.md)
- [How To Build A Dotnet Maui Pdf Viewer](/blog/how-to-build-a-dotnet-maui-pdf-viewer.md)
- [How To Build A Flutter Pdf Viewer](/blog/how-to-build-a-flutter-pdf-viewer.md)
- [or](/blog/how-to-build-a-javascript-pdf-viewer-with-pdfjs.md)
- [How To Build A Javascript Pdf Viewer](/blog/how-to-build-a-javascript-pdf-viewer.md)
- [or](/blog/how-to-build-a-nextjs-pdf-viewer.md)
- [How To Build A Powerpoint Viewer Using Javascript](/blog/how-to-build-a-powerpoint-viewer-using-javascript.md)
- [Using Yarn](/blog/how-to-build-a-react-excel-viewer.md)
- [How To Build A React Powerpoint Viewer](/blog/how-to-build-a-react-powerpoint-viewer.md)
- [How To Build A Reactjs File Viewer](/blog/how-to-build-a-reactjs-file-viewer.md)
- [or](/blog/how-to-build-a-reactjs-pdf-viewer-with-react-pdf.md)
- [or](/blog/how-to-build-a-reactjs-pdf-viewer.md)
- [How To Build A Reactjs Viewer With Pdfjs](/blog/how-to-build-a-reactjs-viewer-with-pdfjs.md)
- [How To Build A Vuejs Pdf Viewer With Pdfjs](/blog/how-to-build-a-vuejs-pdf-viewer-with-pdfjs.md)
- [How To Build A Vuejs Pdf Viewer](/blog/how-to-build-a-vuejs-pdf-viewer.md)
- [How To Build An Android Pdf Viewer](/blog/how-to-build-an-android-pdf-viewer.md)
- [How To Build An Angular Pdf Viewer With Ng2 Pdf Viewer](/blog/how-to-build-an-angular-pdf-viewer-with-ng2-pdf-viewer.md)
- [How To Build An Angular Pdf Viewer With Pdfjs](/blog/how-to-build-an-angular-pdf-viewer-with-pdfjs.md)
- [How To Convert Docx To Pdf Using Javascript](/blog/how-to-convert-docx-to-pdf-using-javascript.md)
- [How To Convert Docx To Pdf Using Python](/blog/how-to-convert-docx-to-pdf-using-python.md)
- [How To Convert Html To Pdf Using Html2pdf](/blog/how-to-convert-html-to-pdf-using-html2pdf.md)
- [or](/blog/how-to-convert-html-to-pdf-using-react.md)
- [or](/blog/how-to-convert-html-to-pdf-using-wkhtmltopdf-and-python.md)
- [How To Convert Word To Pdf In Nodejs](/blog/how-to-convert-word-to-pdf-in-nodejs.md)
- [or](/blog/how-to-create-a-react-js-signature-pad.md)
- [How To Create Pdfs With React To Pdf](/blog/how-to-create-pdfs-with-react-to-pdf.md)
- [How To Edit Pdfs Using Ios Pdf Library](/blog/how-to-edit-pdfs-using-ios-pdf-library.md)
- [How To Embed A Pdf Viewer In Your Website](/blog/how-to-embed-a-pdf-viewer-in-your-website.md)
- [How To Generate Pdf From Html With Nodejs](/blog/how-to-generate-pdf-from-html-with-nodejs.md)
- [base_url tells WeasyPrint where to resolve relative asset paths](/blog/how-to-generate-pdf-reports-from-html-in-python.md)
- [Open an image.](/blog/how-to-use-tesseract-ocr-in-python.md)
- [From an HTML string.](/blog/html-in-pdf-format.md)
- [Javascript Pdf Libraries](/blog/javascript-pdf-libraries.md)
- [Linearized Pdf](/blog/linearized-pdf.md)
- [Swift Package Manager](/blog/mobile-pdf-sdk.md)
- [`elements` come from your document parser — each has a type and content.](/blog/multimodal-rag.md)
- [Nutrient Vs Conga Composer](/blog/nutrient-vs-conga-composer.md)
- [Online Document Viewer](/blog/online-document-viewer.md)
- [Open Pdf In Your Web App](/blog/open-pdf-in-your-web-app.md)
- [Pdf Page Labels](/blog/pdf-page-labels.md)
- [Pdf Sdk Compliance Security Checklist](/blog/pdf-sdk-compliance-security-checklist.md)
- [Pdf Sdk Performance Benchmark](/blog/pdf-sdk-performance-benchmark.md)
- [Pdf Ua Compliance Guide](/blog/pdf-ua-compliance-guide.md)
- [Pdfjs Annotation Editor Layer](/blog/pdfjs-annotation-editor-layer.md)
- [Pdfjs Area Annotations Canvas Capture](/blog/pdfjs-area-annotations-canvas-capture.md)
- [Pdfjs Coordinate Systems Pdf To Screen](/blog/pdfjs-coordinate-systems-pdf-to-screen.md)
- [Pdfjs Eventbus Guide](/blog/pdfjs-eventbus-guide.md)
- [Pdfjs Limitations Commercial Upgrade](/blog/pdfjs-limitations-commercial-upgrade.md)
- [Pdfjs Native Annotation Layer Forms](/blog/pdfjs-native-annotation-layer-forms.md)
- [Pdfjs Navigation Zoom Rotation](/blog/pdfjs-navigation-zoom-rotation.md)
- [Pdfjs Pdf Page Manipulation Pdf Lib](/blog/pdfjs-pdf-page-manipulation-pdf-lib.md)
- [Pdfjs React Viewer Setup](/blog/pdfjs-react-viewer-setup.md)
- [Pdfjs Rendering Overlays React Portals](/blog/pdfjs-rendering-overlays-react-portals.md)
- [Pdfjs Server Side Text Extraction](/blog/pdfjs-server-side-text-extraction.md)
- [Pdfjs Sticky Note Annotations](/blog/pdfjs-sticky-note-annotations.md)
- [Pdfjs Text Highlight Annotations](/blog/pdfjs-text-highlight-annotations.md)
- [Pdfjs Text Search Pdffindcontroller](/blog/pdfjs-text-search-pdffindcontroller.md)
- [Pdfjs Thumbnail Sidebar](/blog/pdfjs-thumbnail-sidebar.md)
- [Process Flows](/blog/process-flows.md)
- [React Native Pdf Annotation](/blog/react-native-pdf-annotation.md)
- [or](/blog/sample-blog-updated.md)
- [Open an image file.](/blog/tesseract-python-guide.md)
- [Top 5 Javascript Pdf Viewers](/blog/top-5-javascript-pdf-viewers.md)
- [Convert an HTML file to PDF.](/blog/top-ten-ways-to-convert-html-to-pdf.md)
- [Vector Pdf](/blog/vector-pdf.md)
- [Wcag2 Accessibility Requirements Documents](/blog/wcag2-accessibility-requirements-documents.md)
- [Web Sdk Is Now Headless](/blog/web-sdk-is-now-headless.md)
- [What Are Annotations](/blog/what-are-annotations.md)
- [What Is A Vpat](/blog/what-is-a-vpat.md)
- [What Is Pdf Ua](/blog/what-is-pdf-ua.md)
- [Why Pdfium Is A Trusted Platform For Pdf Rendering](/blog/why-pdfium-is-a-trusted-platform-for-pdf-rendering.md)
- [Why Your Ai Agent Hallucinates Pdf Table Data](/blog/why-your-ai-agent-hallucinates-pdf-table-data.md)

