---
title: "PDF/UA validation in Java, Python, .NET SDKs, and a PDF server"
canonical_url: "https://www.nutrient.io/blog/pdf-ua-validation/"
md_url: "https://www.nutrient.io/blog/pdf-ua-validation.md"
last_updated: "2026-09-11T13:44:42.964Z"
description: "Nutrient’s Java, Python, and .NET SDKs, plus Document Engine, can now validate whether a PDF actually meets the PDF/UA accessibility standard, and prove it."
---

**TL;DR**

- A PDF can declare PDF/UA (accessibility) conformance in its metadata without actually meeting the standard — files edited after conversion, produced by third-party tools, or assembled from mixed sources routinely violate the requirements they claim.

- Nutrient’s Java SDK, Python SDK, and.NET SDK now validate a document against the conformance level it claims, or against any level requested, and return a detailed, machine-readable report listing every rule violation found.

- Nutrient Document Engine adds the same capability as an HTTP API: `POST /api/validate_pdfua` accepts an uploaded file, a remote URL, or a document already stored on the server and returns a PDF/UA-1 conformance report.

- A pipeline can now check conformance and produce a report for it, rather than trusting the file’s own claim.

**Call to Action**

Explore Nutrient’s accessibility tools

[Learn More](https://www.nutrient.io/sdk/solutions/accessibility/)

A PDF can say it’s [PDF/UA](https://www.nutrient.io/blog/what-is-pdf-ua.md)-conformant and be wrong. The standard works through a declaration: A file carries an identifier in its metadata — an XMP entry such as `pdfuaid:part=1` — but nothing forces that declaration to be true. A file converted by one tool, edited by another, and merged by a third can carry a PDF/UA identifier while its structure tree, reading order, or tagging no longer qualifies.

That gap matters most for PDF/UA, the accessibility standard, because a validator can only check what’s mechanically checkable: structure, tags, reading order, and alternative text. It can’t judge whether that alternative text describes the image, or whether a heading hierarchy makes sense to a person navigating by screen reader. Regulatory frameworks that reference PDF/UA — Section 508 in the United States, the European Accessibility Act, and Web Content Accessibility Guidelines (WCAG)-based procurement requirements — treat it as a testable technical target rather than a substitute for human review. A validator does something narrower than proving a document accessible: It checks the specific rules the standard defines and reports which ones a file fails.

Nutrient’s Java, Python, and.NET SDKs — the embedded libraries developers use to generate, convert, and edit PDFs inside their own applications — now do that check natively. Document Engine, a server for the same kind of PDF work (self-hosted, cloud, or managed), exposes the same check as an HTTP API. Previously, verifying a document’s accessibility claim required a separate third-party tool.

## What this looks like in practice

[PDF/A](https://www.nutrient.io/blog/what-is-pdf-a/), the archival standard, covers long-term renderability rather than accessibility. PDF/UA-1 requires a tagged structure tree, a defined reading order, and alternative text present on meaningful images (the rule checks that it exists, not that it describes the image) — none of which a PDF/A-conformant file is strictly required to have. A file can satisfy every PDF/A rule and fail PDF/UA-1 outright.

A PDF/A archival pipeline converts a document, tags it with a PDF/A identifier, and stores it as compliant. Running that same file through PDF/UA-1 accessibility checks asks a different question, and it often fails.

Validating against a claimed conformance level catches documents whose claim is false. Validating against a level the document never claimed works the same way — for example, checking whether a PDF/A archive also meets PDF/UA-1, even though it never declared accessibility conformance. Both checks return the same kind of output — a pass/fail result and a report naming every rule the file violates — so a pipeline can act on the specific failure instead of a rejection with no detail.

## One validator, two standards, on Java and Python

Nutrient’s Java and Python SDKs validate PDF/UA-1 (and, for other use cases, PDF/A) through the same API. Binding a validator to a document and calling `validate()` checks the file against whatever conformance level it claims in its metadata:

```java

PdfValidator validator = PdfValidator.set(document);

PdfValidationResult result = validator.validate();
System.out.println("Document is valid: " + result.getIsValid());
System.out.println("Validated conformance: " + result.getValidatedConformance());

Files.writeString(Path.of("report.xml"), result.getReport());

```

The result carries three things:

- Whether the document is valid.

- Which conformance level it was checked against.

- An XML report that lists every violation when it isn’t valid.

If the document claims no conformance at all, nothing runs against it. The result reports the file as not valid, and the report says there was nothing to validate.

To check a level the document doesn’t claim, set it explicitly before validating:

```java

validator.setConformance(PdfValidationConformance.PdfUa1);

PdfValidationResult uaResult = validator.validate();
System.out.println("PDF/UA-1 conformant: " + uaResult.getIsValid());

```

In Python, the same check looks like this:

```python

validator = PdfValidator.set(document)

result = validator.validate()
print(f"Document is valid: {result.is_valid}")
print(f"Validated conformance: {result.validated_conformance}")

```

Forcing a specific level works the same way, through a `conformance` property instead of Java’s `setConformance()` method.

## Explicit conformance checks on.NET

Nutrient.NET SDK — formerly GdPicture.NET SDK — already validates PDF/A conformance through `IsValidPDFA()` and `CheckPDFAConformance()`. Internally, its class names still use the `GdPicture` prefix. `IsValidPDFUA()` and `CheckPDFUAConformance()` now add the PDF/UA-1 counterpart, following the same pattern rather than introducing a new object model. Three method families cover the flow:

- `GetPDFConformance()` reads what a document claims.

- The `IsValid*` methods validate against that claim.

- The `Check*Conformance` methods force a specific level.

Each returns a Boolean and writes the same kind of machine-readable XML report:

```csharp

string uaReport = string.Empty;
bool isUaConformant = pdf.CheckPDFUAConformance(PdfValidationConformance.PDF_UA_1, ref uaReport);
Console.WriteLine($"PDF/UA-1 validation result: {isUaConformant}");

```

The check and the output are the same as in Java and Python, but the.NET surface splits them into named methods instead of one object with a settable conformance target.

## Validation as a server API on Document Engine

Document Engine reaches the same result over HTTP instead of an in-process SDK call. `POST /api/validate_pdfua` accepts an uploaded file, a remote URL, or a document already stored in Document Engine, and it returns a machine-readable PDF/UA-1 conformance report:

```shell

curl -X POST http://localhost:5001/api/validate_pdfua \
  -H "Authorization: Token token=<API token>" \
  -F document=@/path/to/output-pdfua.pdf

```

A pipeline can call the check directly, without embedding an SDK in the service that handles it — running it after auto-tagging a batch of converted documents, or as a gate before a file leaves the system.

## What this changes

Validation doesn’t make a document more accessible; it won’t fix a missing heading or write better alternative text. That’s what PDF/UA auto-tagging and PDF/UA conversion are for — validation is the check that confirms the result, whichever tool produced it. What used to take a separate tool now runs as the same kind of call as generating the document, on the four platforms that already produce and convert PDFs. AI auto-tagging, which generates alternative text for images, is planned for a future release.

A compliance or accessibility team can point to a report for a specific file, naming each rule it fails, instead of a general belief that its documents are accessible. For a procurement reviewer citing Section 508 or the European Accessibility Act, a validation report is stronger evidence than a claim embedded in the file’s own metadata.

## Getting started

- [PDF/UA](https://www.nutrient.io/blog/what-is-pdf-ua.md) — What the standard requires, and how it differs from WCAG.

- [Validate PDF conformance (Java)](https://www.nutrient.io/guides/java/conversion/validate-pdf-conformance.md) — The full guide, including all supported PDF/A and PDF/UA-1 targets.

- [Validate PDF conformance (Python)](https://www.nutrient.io/guides/python/conversion/validate-pdf-conformance.md) — The same capability with Python syntax.

- [Validate PDF conformance (.NET)](https://www.nutrient.io/guides/dotnet/conversion/validate-pdf-conformance.md) — The GdPicture-based method reference.

- [Document Engine 1.18 release notes](https://www.nutrient.io/guides/document-engine/release-notes/1-18.md) — The `validate_pdfua` endpoint and everything else that shipped alongside it.

**Call to Action**

See Nutrient’s accessibility tools

[Learn More](https://www.nutrient.io/sdk/solutions/accessibility/)

## FAQ

#### Does passing PDF/UA-1 validation mean a document is fully accessible?

No. A passing report confirms the file follows PDF/UA-1’s structural rules. It doesn’t confirm the content is actually usable, since no automated check can judge whether alternative text is meaningful or a heading order makes sense to a real reader. Pair validation with human review rather than treating it as a replacement.

#### Which Nutrient products can validate PDF/UA conformance?

The Java SDK, Python SDK, and.NET SDK validate it natively. Document Engine exposes the same check as a server API, `POST /api/validate_pdfua`, which accepts an uploaded file, a remote URL, or an existing Document Engine document.

#### Can validation check a conformance level a document doesn’t claim?

Yes, on the Java, Python, and.NET SDKs. In addition to validating against whatever level the document already declares, they can check a level it never claimed — for example, testing a PDF/A archive against PDF/UA-1 even though it never declared accessibility conformance. Document Engine’s endpoint checks PDF/UA-1 specifically, regardless of what the document claims.

#### Does a compliance team need engineering help to use this?

Yes, directly — validation is an SDK method call or a Document Engine API request, so using it in a pipeline requires engineering integration. A compliance or procurement team without in-house engineering resources should ask its engineering team to add the check or route documents through a Document Engine deployment already wired into the pipeline.
---

## 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)
- [How to build an AI agent for contract redlining against a compliance playbook](/blog/ai-contract-redlining-compliance-playbook.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)
- [Amazon Textract Alternatives](/blog/amazon-textract-alternatives.md)
- [Start (clears any prior buffer), navigate the document, then stop into a file.](/blog/android-faster-pdf-rendering.md)
- [Android Pdf Out Of Memory Handling](/blog/android-pdf-out-of-memory-handling.md)
- [Angular File Viewer Pdf Image Office Files](/blog/angular-file-viewer-pdf-image-office-files.md)
- [Approval Workflow Software](/blog/approval-workflow-software.md)
- [Approvals Matrix](/blog/approvals-matrix.md)
- [Auto Tagging And Document Accessibility In Dotnet Sdk](/blog/auto-tagging-and-document-accessibility-in-dotnet-sdk.md)
- [Simple PII redaction.](/blog/automated-pii-removal.md)
- [Best Ai Document Workflow Platforms](/blog/best-ai-document-workflow-platforms.md)
- [Best Document Ai Platforms](/blog/best-document-ai-platforms.md)
- [Best Document Classification Platforms](/blog/best-document-classification-platforms.md)
- [Best document parser for RAG: LlamaParse vs. Unstructured vs. Reducto vs. Nutrient](/blog/best-document-parser-llamaparse-unstructured-reducto.md)
- [Best Document Parsing Apis](/blog/best-document-parsing-apis.md)
- [Best Document Viewers](/blog/best-document-viewers.md)
- [Best Multilingual Ocr Software](/blog/best-multilingual-ocr-software.md)
- [Best Secure Document Collaboration Platforms](/blog/best-secure-document-collaboration-platforms.md)
- [Bpm Guide](/blog/bpm-guide.md)
- [Bpm Tools](/blog/bpm-tools.md)
- [Build Vs Buy Document Extraction](/blog/build-vs-buy-document-extraction.md)
- [Business Automation](/blog/business-automation.md)
- [Capex Vs Opex](/blog/capex-vs-opex.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)
- [Extend Alternatives](/blog/extend-alternatives.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)
- [or](/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 Html To Pptx](/blog/how-to-convert-html-to-pptx.md)
- [Quarterly report](/blog/how-to-convert-pdf-to-markdown-using-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)
- [How To Programmatically Create And Fill Pdf Form In Angular](/blog/how-to-programmatically-create-and-fill-pdf-form-in-angular.md)
- [Open an image.](/blog/how-to-use-tesseract-ocr-in-python.md)
- [From an HTML string.](/blog/html-in-pdf-format.md)
- [Html To Pdf In Javascript](/blog/html-to-pdf-in-javascript.md)
- [Invoice Approval Software](/blog/invoice-approval-software.md)
- [Javascript Document Editor](/blog/javascript-document-editor.md)
- [Javascript Pdf Editors](/blog/javascript-pdf-editors.md)
- [Javascript Pdf Libraries](/blog/javascript-pdf-libraries.md)
- [Langextract Vs Llamaindex Extraction Comparison](/blog/langextract-vs-llamaindex-extraction-comparison.md)
- [Linearized Pdf](/blog/linearized-pdf.md)
- [Uses OpenAI by default — set OPENAI_API_KEY.](/blog/llamaindex-vs-langchain-rag.md)
- [Llamaparse Alternatives](/blog/llamaparse-alternatives.md)
- [Low Code No Code Document Integrations](/blog/low-code-no-code-document-integrations.md)
- [Material Requisition](/blog/material-requisition.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 Flutter 6 Bindings Api](/blog/nutrient-flutter-6-bindings-api.md)
- [Nutrient Flutter Bindings Architecture](/blog/nutrient-flutter-bindings-architecture.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 accessibility for developers: Meeting WCAG 2.2, Section 508, and PDF/UA with an SDK](/blog/pdf-accessibility.md)
- [Extract data from PDF files: A developer guide to structured data from PDFs and scans](/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)
- [People Process Tools](/blog/people-process-tools.md)
- [Process Flows](/blog/process-flows.md)
- [React Native Pdf Annotation](/blog/react-native-pdf-annotation.md)
- [React Pdf Annotation Layer Forms](/blog/react-pdf-annotation-layer-forms.md)
- [React Pdf Custom Rendering Hooks](/blog/react-pdf-custom-rendering-hooks.md)
- [Using Yarn](/blog/react-pdf-editor.md)
- [React Pdf Loading States Errors Passwords](/blog/react-pdf-loading-states-errors-passwords.md)
- [React Pdf Outline Table Of Contents](/blog/react-pdf-outline-table-of-contents.md)
- [React Pdf Performance Optimization](/blog/react-pdf-performance-optimization.md)
- [React Pdf Setup Basic Rendering](/blog/react-pdf-setup-basic-rendering.md)
- [React Pdf Text Layer Custom Renderer](/blog/react-pdf-text-layer-custom-renderer.md)
- [React Pdf Thumbnails Page Navigation](/blog/react-pdf-thumbnails-page-navigation.md)
- [Reducto Alternatives](/blog/reducto-alternatives.md)
- [Requisition System](/blog/requisition-system.md)
- [labels.py](/blog/route-documents-automatically-classify-api.md)
- [or](/blog/sample-blog-updated.md)
- [Sdk Product Updates Q2 2026](/blog/sdk-product-updates-q2-2026.md)
- [System Of Record Vs Source Of Truth](/blog/system-of-record-vs-source-of-truth.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)
- [The Six Best Pdf Generator Apis](/blog/the-six-best-pdf-generator-apis.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 Business Logic](/blog/what-is-business-logic.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 Ocr Invoice Processing](/blog/what-is-ocr-invoice-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)

