---
title: "WCAG, Section 508, and PDF/UA compliance: A PDF SDK guide"
canonical_url: "https://www.nutrient.io/blog/pdf-accessibility/"
md_url: "https://www.nutrient.io/blog/pdf-accessibility.md"
last_updated: "2026-08-11T08:08:12.855Z"
description: "A developer’s guide to building WCAG 2.2, Section 508, and PDF/UA-compliant PDFs: tagging, reading order, alt text, and contrast across web, iOS, and Android."
---

# Building WCAG 2.2, Section 508, and PDF/UA-compliant PDFs with an SDK

**TL;DR**

An accessible PDF uses tags, alt text, a logical reading order, and proper form labels so assistive technologies can interpret the content. Three standards govern PDF accessibility: [WCAG 2.2](https://www.w3.org/TR/WCAG22/), [Section 508](https://www.section508.gov/), and [PDF/UA](https://www.nutrient.io/blog/what-is-pdf-ua.md). This guide walks through each requirement and shows how [Nutrient SDKs](https://www.nutrient.io/sdk/) handle accessibility across web, iOS, and Android so you can ship compliant PDF applications without building everything from scratch.

If your application serves PDFs, those documents must meet accessibility standards — WCAG 2.2, Section 508, and PDF/UA — so screen reader users, keyboard-only users, and people relying on assistive technologies can read and interact with them. Regulations like the [ADA](https://www.ada.gov/), [Section 508](https://www.section508.gov/), and the [European Accessibility Act (EAA)](https://commission.europa.eu/strategy-and-policy/policies/justice-and-fundamental-rights/disability/european-accessibility-act-eaa_en) require it.

The challenge is that PDF accessibility involves multiple standards, platform-specific behaviors, and ongoing testing. [Nutrient SDKs](https://www.nutrient.io/sdk/) handle the heavy lifting across [web](https://www.nutrient.io/sdk/web/), [iOS](https://www.nutrient.io/sdk/ios/), and [Android](https://www.nutrient.io/sdk/android/) — so you can focus on your application, not accessibility plumbing.

## The standards you need to meet

Four standards define the rules for PDF accessibility. Here’s what each one covers and where it applies.

### WCAG 2.2

The [Web Content Accessibility Guidelines (WCAG) 2.2](https://www.w3.org/TR/WCAG22/) apply to all web content, including PDFs. Most regulations reference Level AA, which requires text contrast ratios of 4.5:1, keyboard operability, and meaningful content structure. WCAG 2.2 also added criteria for focus appearance and dragging movements, which is relevant for interactive PDF viewers.

### Section 508

[Section 508](https://www.section508.gov/) is a U.S. federal law that references WCAG 2.0 Level AA. It applies to federal agencies, their vendors, and documents published on government websites. Meeting WCAG 2.2 AA satisfies Section 508.

### PDF/UA

[PDF/UA](https://www.nutrient.io/blog/what-is-pdf-ua.md) (ISO 14289) defines the technical requirements for the PDF file itself: all content tagged or marked as artifacts, a logical reading order, alt text on images, embedded fonts, and a specified language. [PDF/UA-2](https://pdfa.org/iso-14289-2-pdf-ua-2-the-gold-standard-for-accessibility-in-pdf-2-0-has-arrived/), published in 2024, adds new structure tags and builds on PDF 2.0.

### European Accessibility Act

The [EAA](https://commission.europa.eu/strategy-and-policy/policies/justice-and-fundamental-rights/disability/european-accessibility-act-eaa_en), effective as of June 2025, requires businesses operating in the EU to make digital products accessible, referencing the [EN 301 549](https://www.etsi.org/deliver/etsi_en/301500_301599/301549/03.02.01_60/en_301549v030201p.pdf) standard. PDFs published as part of digital services fall under this requirement.

## What makes a PDF accessible

Here’s what you need to get right — and how Nutrient helps at each step.

### 1. Document tags

Tags define the structure — headings, paragraphs, lists, tables, figures. Without them, a screen reader sees flat text with no way to navigate.

Nutrient Web SDK renders tagged PDFs and PDF/UA documents with their full structure intact, so screen readers can navigate by heading, table, or section out of the box.

### 2. Reading order

Tags must reflect how content should be read, and not where it sits on the page. A two-column layout needs tags that read left column first, then right.

Nutrient preserves and renders the tag-defined reading order. Developers can customize focus order with the [`instance#setPageTabOrder()`](https://www.nutrient.io/api/web/PSPDFKit.Instance.html#setPageTabOrder) API.

### 3. Alt text on images

Every meaningful image needs a text alternative. Decorative images should be marked as artifacts so screen readers skip them.

### 4. Descriptive link text

Replace “click here” and other vague text with text that describes the destination, e.g. “download the accessibility report” or “view WCAG 2.2 guidelines.”

### 5. Color contrast

WCAG 2.2 Level AA requires 4.5:1 for normal text and 3:1 for large text. Nutrient’s default light and dark themes meet [WCAG 2.2](https://www.w3.org/TR/WCAG22/) Level AAA for text contrast and at least AA for icons, with no custom theming required.

### 6. Labeled form fields

Every form field needs a label that screen readers can announce, and users need to Tab between fields in a logical order. Nutrient renders form fields with proper labels and supports keyboard-only interaction across all platforms. See the [forms](https://www.nutrient.io/guides/web/forms/introduction-to-forms.md) guide for more information.

### 7. Document properties

Set the document language, a descriptive title, and embed all fonts. PDF/UA requires all three.

### 8. Security settings

Some PDF encryption blocks screen readers. If you apply security, keep the accessibility permission enabled.

### 9. Scanned PDFs

Scanned documents are image-only — no text layer, no screen reader access. You need OCR to extract text before any other accessibility step applies.

Nutrient provides OCR across [Java](https://www.nutrient.io/guides/java.md), [iOS](https://www.nutrient.io/guides/ios/ocr/usage.md), [Android](https://www.nutrient.io/guides/android/ocr/usage.md), and [.NET](https://www.nutrient.io/guides/dotnet/ocr.md) — turning scanned pages into searchable, accessible text layers.

## How Nutrient handles accessibility for you

Instead of building accessibility support from scratch, Nutrient SDK covers the core WCAG requirements across platforms:

| Requirement           | WCAG criterion                 | What Nutrient does                                      |
| --------------------- | ------------------------------ | ------------------------------------------------------- |
| Screen reader support | 1.3.1 Info and Relationships   | Works with NVDA, JAWS, VoiceOver, TalkBack              |
| Keyboard navigation   | 2.1.1 Keyboard                 | Full Tab/arrow key navigation, customizable focus order |
| Color contrast        | 1.4.3 Contrast (Minimum)       | AAA-compliant themes, light and dark mode               |
| Text alternatives     | 1.1.1 Non-text Content         | Text-to-speech via [text extraction API](https://www.nutrient.io/guides/web/features/text-extraction.md)           |
| Visual presentation   | 1.4.8 Visual Presentation      | Reader View reformats content for easier reading        |
| Tagged PDF/PDF/UA     | 1.3.2 Meaningful Sequence      | Renders document structure for assistive technologies   |
| Accessible forms      | 1.3.1, 4.1.2 Name, Role, Value | Labeled, keyboard-navigable form fields                 |
| Scanned documents     | 1.1.1 Non-text Content         | OCR across Java, iOS, Android,.NET                     |

[Try Nutrient free](https://www.nutrient.io/try)

[Nutrient SDK](https://www.nutrient.io/sdk/) simplifies building accessible PDFs — for a fully managed option, see the [document accessibility SDK](https://www.nutrient.io/sdk/solutions/accessibility/) — with robust features for web, iOS, and Android platforms.

### Web

[Nutrient Web SDK](https://www.nutrient.io/sdk/web/) provides:

- **Screen reader support** — The user interface (UI) works with [NVDA](https://nvaccess.org/) and [JAWS](https://www.freedomscientific.com/products/software/jaws/). Menus, buttons, and annotations are correctly announced with their name, role, and value.

- **Keyboard-only annotation placement** — Users can place text, note, and comment annotations using Enter, Space, and arrow keys.

- **Text-to-speech** — Extract text from any PDF and pass it to the browser’s speech synthesis. See the [TTS](https://www.nutrient.io/guides/web/viewer/accessibility/text-to-speech.md) guide for more information.

- **WCAG-compliant rendering** — Complies with [WAI-ARIA](https://www.w3.org/WAI/standards-guidelines/aria/) guidelines. Tagged PDFs and PDF/UA documents render with their full structure.

- **Localized accessibility strings** — All built-in strings are localized. Customize them with the [localization](https://www.nutrient.io/guides/web/features/localization.md) guide.

- **Keyboard-navigable signatures** — Users can type signatures without a pointer device.

- **Accessible forms** — Form fields are labeled and keyboard-navigable. See the [forms](https://www.nutrient.io/guides/web/forms/introduction-to-forms.md) guide for more information.

For more details, read [how we’re improving accessibility on Nutrient Web SDK](https://www.nutrient.io/blog/how-we-are-improving-accessibility-on-web/).

### iOS

[Nutrient iOS SDK](https://www.nutrient.io/sdk/ios/) supports:

- **VoiceOver** — PDF page text is exposed with intelligent paragraph separation. Bookmark lists, document information, and the comments UI all support VoiceOver.

- **Reader View** — Reformats content with adjustable text sizes, including larger accessibility sizes. Helps with cognitive accessibility (WCAG 1.4.8).

- **Dynamic Type** — Respects system font size preferences.

- **Dark Mode** — The UI follows system Dark Mode. Page content can optionally render in inverted mode.

- **Speak Selection** — iOS reads selected text aloud.

- **Hardware keyboard** — Full keyboard navigation with shortcuts for annotation selection.

- **Trackpad and mouse** — Enhanced pointing device support. See the [trackpad](https://www.nutrient.io/guides/ios/features/trackpad-and-mouse-support.md) guide for more information.

Explore the iOS demo:

### Android

Nutrient Android SDK supports:

- **TalkBack** — Navigating via keyboard or touch is accompanied by descriptive voice announcements for every UI element. Install the [Android Accessibility Suite](https://play.google.com/store/apps/details?id=com.google.android.marvin.talkback) to enable it.

- **Keyboard navigation** — Full Tab and arrow key navigation throughout the UI. Works with TalkBack. Read more in our post on [keyboard navigation in the Android SDK](https://www.nutrient.io/blog/how-we-improved-keyboard-navigation-accessibility-in-our-android-sdk/).

- **Screen reader integration** — Build text-to-speech using [`android.speech.tts.TextToSpeech`](https://developer.android.com/reference/android/speech/tts/TextToSpeech) and [`PdfActivity`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.ui/-pdf-activity/index.html). See the [screen reader](https://www.nutrient.io/blog/how-to-build-a-screenreader/) guide and [example code](https://github.com/PSPDFKit/pspdfkit-android-catalog/blob/9eac1be5767cdeb5a58d879d0749c2338d4f77fb/app/src/main/java/com/pspdfkit/catalog/examples/java/ScreenReaderExample.java).

- **Reader View** — Simplified, reflowable layout for easier reading (WCAG 1.4.8). Enable with the `enableReaderView` setting in [`PdfActivityConfiguration`](https://www.nutrient.io/api/android/nutrient/com.pspdfkit.configuration.activity/-pdf-activity-configuration/index.html). See the [Reader View](https://www.nutrient.io/guides/android/features/reader-view.md) guide for more information.

- **Dark Mode and theming** — Customize the UI for better contrast. See [customizing appearance](https://www.nutrient.io/guides/android/customizing-the-interface/appearance-styling.md).

Explore the Android demo:

## Testing accessibility

Building accessible PDFs is only half the work — validate with these tools:

- **[PDF Accessibility Checker (PAC)](https://pac.pdf-accessibility.org/)** — Free PDF/UA conformance checker.

- **Screen readers** — Test with [NVDA](https://nvaccess.org/) (free, Windows), [JAWS](https://www.freedomscientific.com/products/software/jaws/) (commercial, Windows), or VoiceOver (macOS/iOS).

- **[Firefox Accessibility Inspector](https://firefox-source-docs.mozilla.org/devtools-user/accessibility_inspector/index.html)** — Built into DevTools, useful for web-based PDF viewers.

- **[WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/)** — Verify color contrast ratios against WCAG thresholds.

Test across multiple assistive technologies, since each interprets PDF structure differently.

## Conclusion

PDF accessibility requires tagged structure, alt text, reading order, form labels, contrast, and testing — across WCAG 2.2, Section 508, and PDF/UA.

Nutrient SDKs handle this across web, iOS, and Android with screen reader support, keyboard navigation, WCAG AAA contrast, text-to-speech, Reader View, and OCR for scanned documents. Instead of building accessibility infrastructure yourself, integrate Nutrient and ship compliant PDF applications faster.

Ready to get started? Explore [Nutrient SDK](https://www.nutrient.io/try/) today and [build accessibility-first applications](https://www.nutrient.io/sdk/solutions/accessibility/). Contact our [Sales team](https://www.nutrient.io/contact-sales/) for more details, and [try the product for free](https://www.nutrient.io/try/) to see how it can benefit your project.

[Try Nutrient for free](https://www.nutrient.io/try/) or [explore the demo](https://www.nutrient.io/demo/).

## FAQ

#### What is the difference between WCAG, Section 508, and PDF/UA?

WCAG is a set of web content accessibility guidelines published by the W3C. Section 508 is a U.S. federal law that references WCAG as its technical standard. PDF/UA is an ISO standard that defines how the PDF file format must be structured for accessibility. Meeting WCAG 2.2 Level AA generally satisfies Section 508, while PDF/UA ensures the file itself is technically accessible.

#### How do I make my PDFs meet accessibility standards?

Add document tags to define structure, include alt text on images, set a logical reading order, label form fields, check color contrast ratios, set the document language, and embed all fonts. Then validate with a tool like PDF Accessibility Checker (PAC) or a screen reader.

#### What is PDF tagging and why does it matter?

PDF tags define a document’s logical structure — headings, paragraphs, lists, tables, and figures. Without tags, screen readers can’t distinguish a heading from body text or navigate a document by section. PDF/UA requires that all content is either tagged or marked as an artifact.

#### How does Nutrient SDK help with PDF accessibility?

Nutrient SDK provides screen reader support (NVDA, JAWS, VoiceOver, TalkBack), keyboard navigation, WCAG AAA-compliant themes, text-to-speech, Reader View, accessible form rendering, and OCR for scanned documents across web, iOS, and Android. It handles accessibility compliance so you don’t have to build it yourself.

#### How can I test if my PDF is accessible?

Use PDF Accessibility Checker (PAC) for PDF/UA conformance checks, test with screen readers like NVDA or VoiceOver, and verify color contrast with the WebAIM Contrast Checker. Testing across multiple assistive technologies is recommended since each interprets PDF structure differently.

#### Does the European Accessibility Act apply to PDFs?

Yes. The European Accessibility Act (EAA), effective June 2025, requires businesses operating in the EU to make digital products and services accessible. It references the EN 301 549 standard, which maps to WCAG 2.1 Level AA. PDFs published as part of digital services fall under this requirement.

#### How do I make scanned PDFs accessible?

Scanned PDFs are image-only and contain no text layer for screen readers. Run OCR to extract text from the images. After OCR processing, add document tags, set the reading order, and verify the extracted text is accurate. Nutrient provides OCR across Java, iOS, Android, and.NET.
---

## 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)
- [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)
- [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)
- [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)
- [Using Yarn](/blog/react-pdf-editor.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)

