---
title: "How to programmatically edit PDFs using React"
canonical_url: "https://www.nutrient.io/blog/react-pdf-editor/"
md_url: "https://www.nutrient.io/blog/react-pdf-editor.md"
last_updated: "2026-08-13T09:42:13.809Z"
description: "A comprehensive tutorial for editing PDFs in React with Nutrient."
---

In this article, you’ll learn how to programmatically edit PDF files using React and Nutrient. More specifically, it’ll cover rendering, merging, and rotating PDFs; removing and adding PDF pages; and splitting PDFs. This will give you all the tools required to easily build and use your own React PDF editor solution.

**TL;DR**

Edit PDFs in React with Nutrient Web SDK’s `applyOperations` API:

- **Render** a document with `NutrientViewer.load()`.

- **Merge** files with the `importDocument` operation.

- **Rotate** pages with `rotatePages`.

- **Add and remove** pages with `addPage` and `removePages`.

- **Split** a document with `exportPDFWithOperations`.

## Nutrient React.js PDF library

We offer a commercial [React.js PDF library](https://www.nutrient.io/guides/web.md) that’s easy to integrate. It comes with 30+ features that allow your users to view, annotate, edit, and sign documents directly in the browser. Out of the box, it has a polished and flexible user interface (UI) that you can extend or simplify based on your unique use case.

- A prebuilt and polished UI

- 15+ annotation tools

- Support for multiple file types

- Dedicated support from engineers

Nutrient has developer-friendly documentation and offers a beautiful UI for users to work with PDF files easily. Web applications such as Autodesk, Disney, UBS, Dropbox, IBM, and Lufthansa use the Nutrient library to manipulate PDF documents.

### Requirements

- [Node.js](https://nodejs.org/en/download/package-manager) — Learn more about installing Node.js on the [official website](https://nodejs.dev/en/learn/how-to-install-nodejs/)

- A package manager — [Yarn](https://yarnpkg.com) or [npm](https://docs.npmjs.com/about-npm)

## Setting up a new React project with Vite

1. To get started, create a new React project using Vite:

```bash

# Using Yarn

yarn create vite react-nutrient --template react

# Using npm

npm create vite@latest react-nutrient -- --template react

```

After the project is created, navigate to the project directory:

```bash

cd react-nutrient
cd src
mkdir components
cd components
touch PDFViewer.jsx # Will render your document to the client’s browser.

cd.. # Go back to the `src` directory.

```

Here, you created a new file called `PDFViewer.jsx` within the `components` directory. This file will be used to render the PDF to the client interface.

Next, since this app will be using the `@nutrient-sdk/viewer` library, install it in your project:

```bash

npm install @nutrient-sdk/viewer

```

It’s necessary to copy the Nutrient Web SDK library assets to the public directory:

```bash

cd.. # Navigate to the root directory.

cp -R./node_modules/@nutrient-sdk/viewer/dist/nutrient-viewer-lib public/nutrient-viewer-lib

```

When that’s done, navigate to your `public` directory. Here, add a PDF file of your choice. You can use this [demo document](https://www.nutrient.io/example.pdf) as an example.

You’ll need two files to merge PDFs in React, so you can add this [PDF file](https://africau.edu/images/default/sample.pdf) within your `src` folder.

As the last step, create a new file within your `src` folder called `helperFunctions.js`. As the name suggests, this file will hold the utility methods needed to carry out the outlined tasks in your project.

Your file structure will now look like what’s shown in the image below.![React PDF Editor folder structure](@/assets/images/blog/2023/react-pdf-editor/react-pdf-editor-1.png)

Now you can start working with PDFs.

### Rendering a PDF page using React

In this section, you’ll learn how to render a PDF to the client interface using React. To do this, use this code in `helperFunctions.js`:

```js

async function loadPDF({ NutrientViewer, container, document, baseUrl }) {
	const instance = await NutrientViewer.load({
		// Container where Nutrient should be mounted.
		container,
		// The document to open.
		document,
		baseUrl,
	});
	return instance;
}
export { loadPDF }; // Link this function with your project.

```

When React invokes the `loadPDF` function, the app will call the `NutrientViewer.load()` method. As a result, the library will now draw the PDF to the UI.

All that’s left is to use your newly created function within your app. To do so, go to the `components/PDFViewer.jsx` file and paste this snippet:

```js

import { useEffect, useRef } from 'react';

export default function PDFViewer(props) {
	const containerRef = useRef(null);

	useEffect(() => {
		const container = containerRef.current;
		let NutrientViewer;

		(async function () {
			NutrientViewer = await import('@nutrient-sdk/viewer');

			if (NutrientViewer) {
				NutrientViewer.unload(container); // Ensure that there's only one Nutrient instance.
			}
			const instance = await NutrientViewer.load({
				container,
				document: props.document,
				baseUrl: `${window.location.protocol}//${
					window.location.host
				}/${import.meta.env.BASE_URL}`,
			});
		})();

		return () => {
			// Unload Nutrient instance when the component is unmounted
			NutrientViewer && NutrientViewer.unload(container);
		};
	}, [props.document]);

	return (
		<div
			ref={containerRef}
			style={{ width: '100%', height: '100vh' }}
		/>
	);
}

```

As the last step, you’ll render the `PDFViewer` component to the Document Object Model (DOM). To do so, replace the contents of `App.jsx` with this code:

```js

import PDFViewer from './components/PDFViewer';

function App() {
	return (
		<div className="App" style={{ width: '100vw' }}>
			<PDFViewer document={'Document.pdf'} />{' '}
			{/*Render the Document.pdf file*/}
		</div>
	);
}
export default App;

```

Make sure to replace `Document.pdf` with the name of your PDF file.

To run your app, use this command:

```bash

npm run dev

```

The result is shown below.![React PDF Editor Rendering a PDF](@/assets/images/blog/2023/react-pdf-editor/react-pdf-editor-2.gif)

### Merging PDF pages using React

In this section, you’ll use the `importDocument` command to merge two documents.

To implement merge functionality in your app, add this block of code in `helperFunctions.js`:

```js

import mergingPDF from './examplePDF.pdf'; // Bring in your PDF file.

async function mergePDF({ instance }) {
	fetch(mergingPDF) // Fetch the contents of the file to merge..then((res) => {
			if (!res.ok) {
				throw res; // If an error occurs, use the `console.log()` function.
			}
			return res;
		}).then((res) => res.blob()) // Return its blob data..then((blob) => {
			instance.applyOperations([
				{
					type: 'importDocument', // Tell the program that you'll merge a document.
					beforePageIndex: 0, // Merge the document at the first page.
					document: blob, // Use the document's blob data for merging.
					treatImportedDocumentAsOnePage: false,
				},
			]);
		});
}
export { mergePDF };

```

The last step is to invoke the `mergePDF` method:

```js

// components/PDFViewer.jsx

import { mergePDF } from '../helperFunctions.js';

useEffect(() => {
	// More code...
	mergePDF({ instance }); // Merge the PDF with your current instance.
}, []);

```

This final result will look like what’s shown below.![React PDF Editor Merge PDF](@/assets/images/blog/2023/react-pdf-editor/react-pdf-editor-3.gif)

### Rotating PDF pages using React

The Nutrient PDF library for React allows users to rotate page content via the `rotatePages` command.

To rotate a page, add this block of code in `helperFunctions.js`:

```js

function flipPage({ pageIndexes, instance }) {
	instance.applyOperations([
		{
			type: 'rotatePages', // Tell Nutrient to rotate the page.
			pageIndexes, // Page number(s) to select and rotate.
			rotateBy: 180, // Rotate by 180 degrees. This will flip the page.
		},
	]);
}
export { flipPage };

```

All that’s left is to use it in your project. To do so, add this piece of code in the `PDFViewer.jsx` module:

```js

// components/PDFViewer.jsx
import { flipPage } from '../helperFunctions.js';
//..
useEffect(() => {
	// More code...
	// Flip the first, second, and third page of the PDF:
	flipPage({ pageIndexes: [0, 1, 2], instance });
}, []);

```

The result is shown below.![React PDF Editor Rotate PDF Pages](@/assets/images/blog/2023/react-pdf-editor/react-pdf-editor-4.gif)

### Removing PDF pages using React

To remove pages from a PDF, use Nutrient’s `removePages` operation. Type this snippet in `helperFunctions.js`:

```js

function removePage({ pageIndexes, instance }) {
	instance.applyOperations([
		{
			type: 'removePages', // Tell Nutrient to remove the page.
			pageIndexes, // Page(s) to remove.
		},
	]);
}
export { removePage };

```

Next, write this in `PDFViewer.jsx`:

```js

import { removePage } from '../helperFunctions.js';

useEffect(() => {
	// More code.
	// Only remove the first page from this document:
	removePage({ pageIndexes: [0], instance });
}, []);

```

This will remove the selected pages from a PDF.![React PDF Editor Remove PDF Page](@/assets/images/blog/2023/react-pdf-editor/react-pdf-editor-5.gif)

### Adding PDF pages using React

To add a page to a document, use the `addPage` command:

```js

// helperFunctions.js
function addPage({ instance, NutrientViewer }) {
	instance.applyOperations([
		{
			type: 'addPage', // Add a page to the document.
			afterPageIndex: instance.totalPageCount - 1, // Append the page at the end.
			backgroundColor: new NutrientViewer.Color({
				r: 100,
				g: 200,
				b: 255,
			}), // Set the new page background color.
			pageWidth: 750, // Dimensions of the page:
			pageHeight: 1000,
		},
	]);
}
export { addPage };

```

Next, use this function in your app:

```js

// components/PDFViewer.jsx

import { addPage } from '../helperFunctions.js';

useEffect(() => {
	// More code...
	addPage({ instance, NutrientViewer });
}, []);

```

The result is shown below.![React PDF Editor Adding PDF Pages](@/assets/images/blog/2023/react-pdf-editor/react-pdf-editor-6.gif)

### Splitting PDFs using React

In some cases, users might want to split their documents into separate files. Nutrient supports this feature via the `exportPDFWithOperations` function:

```js

// helperFunctions.js
async function splitPDF({ instance }) {
	// Export the `ArrayBuffer` data of the first half of the document.
	const firstHalf = await instance.exportPDFWithOperations([
		{
			type: 'removePages',
			pageIndexes: [0, 1, 2], // Split the first, second, and third page.
		},
	]);
	// Export the `ArrayBuffer` data of the second half of the document.
	const secondHalf = await instance.exportPDFWithOperations([
		{
			type: 'removePages',
			pageIndexes: [3, 4], // Extract the fourth and fifth pages.
		},
	]);
	// Log the `ArrayBuffer` data of both of these files:
	console.log('First half of the file:', firstHalf);
	console.log('Second half of the file:', secondHalf);
}
export { splitPDF };

```

To invoke this method, write this code within your `PDFViewer.jsx` method:

```js

// components/PDFViewer.jsx

import { splitPDF } from '../helperFunctions.js';

useEffect(() => {
	// More code...
	splitPDF({ instance });
}, []);

```

The result is shown below.![React PDF Editor Remove PDF Page](@/assets/images/blog/2023/react-pdf-editor/react-pdf-editor-7.png)

<!---

> Interact with the sandbox by clicking the left rectangle icon and selecting Editor > Show Default Layout. To edit, sign in with GitHub — click the rectangle icon again and choose Sign in. To preview the result, click the rectangle icon once more and choose Editor > Embed Preview. For the full example, click the Open Editor button. Enjoy experimenting with the project!

--->

## Additional resources

For more information, here are a few guides to help you get started editing PDFs:

- [Overview to PDF editing with Nutrient](https://www.nutrient.io/guides/web/editor.md)

- [Headless editing](https://www.nutrient.io/guides/web/features/document-editor.md)

- [Editing page labels](https://www.nutrient.io/guides/web/editor/page-label.md)

- [Customizing the PDF editing toolbar and UI](https://www.nutrient.io/guides/web/features/document-editor-ui.md)

## Conclusion

In this article, you learned about editing PDFs using React and Nutrient. If you encountered any difficulties, we encourage you to deconstruct and play with the code so you can fully understand its inner workings. If you hit any snags, don’t hesitate to [reach out](https://www.nutrient.io/support/request) to our Support team for help.

At Nutrient, we offer a commercial, feature-rich, and completely customizable web PDF library that’s easy to integrate and comes with well-documented APIs to handle advanced use cases. Try it [for free](https://www.nutrient.io/sdk/web/getting-started.md), or visit [our demo](https://www.nutrient.io/demo/) to see it in action.

## Related reading

- [How to display a PDF in React](https://www.nutrient.io/blog/how-to-display-a-pdf-in-react/) — Step-by-step guide to rendering PDFs in React applications

- [How to build a React.js file viewer: PDF, image, MS Office](https://www.nutrient.io/blog/how-to-build-a-reactjs-file-viewer.md) — Build a multi-format file viewer in React

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

- [How to choose the best PDF viewer for your business](https://www.nutrient.io/blog/choosing-pdf-viewer-business/) — A buyer’s guide covering features, pricing, and evaluation criteria

## FAQ

#### How can I render a PDF in a React application?

Use the `NutrientViewer.load()` method within a React component to render the PDF directly to the browser.

#### How do I merge PDF files using Nutrient in React?

You can use the `importDocument` command in Nutrient to merge two or more PDF files programmatically.

#### Is it possible to rotate pages in a PDF with React?

Yes, you can rotate pages using the `rotatePages` command by specifying the page indices and rotation angle.

#### How can I remove specific pages from a PDF in React?

Use the `removePages` operation in Nutrient to remove selected pages from the PDF.

#### Can I split a PDF into multiple files using Nutrient?

Yes, you can split a PDF by exporting different page ranges using the `exportPDFWithOperations` function.
---

## 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 Ai Platforms](/blog/best-document-ai-platforms.md)
- [Best Document Viewers](/blog/best-document-viewers.md)
- [Build Vs Buy Document Extraction](/blog/build-vs-buy-document-extraction.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 Extraction Confidence Scores](/blog/document-extraction-confidence-scores.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)
- [Extract Patient Data On Premises](/blog/extract-patient-data-on-premises.md)
- [app.py](/blog/extract-text-from-pdf-using-python.md)
- [Fillable Pdf](/blog/fillable-pdf.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 Native Pdf Viewer](/blog/how-to-build-a-react-native-pdf-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)
- [How To Convert Html To Pdf Using Wkhtmltopdf And Csharp](/blog/how-to-convert-html-to-pdf-using-wkhtmltopdf-and-csharp.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 Extract Tables From Pdf And Images](/blog/how-to-extract-tables-from-pdf-and-images.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)
- [How To Merge Pdfs Using Javascript](/blog/how-to-merge-pdfs-using-javascript.md)
- [How To Ocr Pdfs In Linux](/blog/how-to-ocr-pdfs-in-linux.md)
- [How To Print Pdf In Csharp](/blog/how-to-print-pdf-in-csharp.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 Editors](/blog/javascript-pdf-editors.md)
- [Javascript Pdf Libraries](/blog/javascript-pdf-libraries.md)
- [Linearized Pdf](/blog/linearized-pdf.md)
- [or](/blog/merge-pdfs.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)
- [Building WCAG 2.2, Section 508, and PDF/UA-compliant PDFs with an SDK](/blog/pdf-accessibility.md)
- [Pdf Data Extraction Developer Guide](/blog/pdf-data-extraction-developer-guide.md)
- [Pdf Extraction Benchmark Opendataloader Bench](/blog/pdf-extraction-benchmark-opendataloader-bench.md)
- [Pdf Extraction Document Case Studies](/blog/pdf-extraction-document-case-studies.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 Accessibility Structtree Printing](/blog/pdfjs-accessibility-structtree-printing.md)
- [Pdfjs Advanced Loading Streaming Workers](/blog/pdfjs-advanced-loading-streaming-workers.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 Document Outline Bookmarks Metadata](/blog/pdfjs-document-outline-bookmarks-metadata.md)
- [Pdfjs Eventbus Guide](/blog/pdfjs-eventbus-guide.md)
- [macOS](/blog/pdfjs-file-format-conversion-to-pdf.md)
- [macOS](/blog/pdfjs-generating-pdf-thumbnails-pdf2pic.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)
- [Sdk Product Updates Q2 2026](/blog/sdk-product-updates-q2-2026.md)
- [Add DWS MCP Server to your Claude Code project.](/blog/teaching-llms-to-read-pdfs.md)
- [Open an image file.](/blog/tesseract-python-guide.md)
- [Define the HTML part of the document.](/blog/top-10-ways-to-generate-pdfs-in-python.md)
- [Top 5 Javascript Pdf Viewers](/blog/top-5-javascript-pdf-viewers.md)
- [or](/blog/top-js-pdf-libraries.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 Document Processing](/blog/what-is-document-processing.md)
- [What Is Intelligent Document Processing](/blog/what-is-intelligent-document-processing.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)

