---
title: "Introducing spreadsheet editing in Document Authoring SDK"
canonical_url: "https://www.nutrient.io/blog/document-authoring-spreadsheet-editor/"
md_url: "https://www.nutrient.io/blog/document-authoring-spreadsheet-editor.md"
last_updated: "2026-11-04T04:49:11.010Z"
description: "Nutrient Document Authoring SDK now edits XLSX spreadsheets. Open Excel files in the browser, export to XLSX or PDF, or convert them headless on Node.js."
---

**TL;DR**

- **[Nutrient Document Authoring SDK](https://www.nutrient.io/sdk/document-authoring/) now edits spreadsheets.** A new spreadsheet editor opens XLSX files in the browser, where users edit cells, formulas, formatting, and sheets in a grid.

- Your app saves the result as SheetJSON, the native spreadsheet format, or exports it to XLSX or PDF. The PDF follows each sheet’s page setup.

- Documents and spreadsheets share one system, so a single upload box can open DOCX and XLSX files in the matching editor.

- The same API runs headless on Node.js to store uploads as SheetJSON or export them to PDF.

- Spreadsheet Editing is a separately licensed component. XLSX import and export also need the XLSX Support component.

Contracts come with pricing schedules, and reports come with the numbers behind them. Until now, editing documents and spreadsheets in one app meant a second vendor, a second rendering engine, and a second integration to maintain.

Nutrient Document Authoring SDK now includes a spreadsheet editor alongside the document editor. It opens XLSX files, lets users edit them in a grid, and saves or exports the result, in the browser or headless on Node.js.

## What’s new: A spreadsheet editor in Document Authoring

A spreadsheet editor SDK is a component developers embed in a web app so users can open, edit, and save spreadsheet files without leaving it. Document Authoring builds its spreadsheet support on three objects:

- **System** — One `DocAuthSystem` handles documents and spreadsheets, and it loads the engine and fonts once. An app that already uses Document Authoring for documents reuses that system.

- **Spreadsheet** — A `DocAuthSpreadsheet` represents an open spreadsheet. Your code uses it to save or export.

- **Spreadsheet editor** — A `DocAuthSpreadsheetEditor` displays a spreadsheet in a page element and lets users edit it. It runs in the browser.

In Document Authoring, a _spreadsheet_ is the complete file, and a _sheet_ is one tab in it.

## What users can do in the editor

The editor ships with its own UI, so there’s no toolbar to build.![The Document Authoring spreadsheet editor with callouts for page setup, number formats, the formula bar, live formulas, and sheet tabs](@/assets/images/blog/2026/document-authoring-spreadsheet-editor/spreadsheet-editor-callouts.png)

- **Grid and navigation** — A formula bar, sheet tabs, context menus, zoom, and standard spreadsheet keyboard shortcuts.

- **Formatting** — Fonts, colors, borders, alignment, text wrapping, merged cells, and number formats such as currency, percentages, dates, and times.

- **Structure** — Insert and delete rows and columns; add, rename, and delete sheets; freeze rows and columns; and toggle gridlines.

- **Copy and paste** — Within the editor, and between the editor and other apps.

- **Page setup and download** — Paper size, orientation, scaling, margins, and headings for each sheet, plus a download menu for PDF and XLSX.

The [spreadsheet feature tour](https://document-authoring-demo.nutrient.io/examples/spreadsheet/features/) in the live demo opens a sample file with every cell type, live formulas, a merged title, and page setup, so you can try all of this without writing code.

## Formulas: What calculates and what’s kept

Document Authoring calculates six functions: `SUM`, `AVERAGE`, `MIN`, `MAX`, `COUNT`, and `COUNTA`. Formulas can combine them with cell and range references, references to other sheets, arithmetic and comparison operators, and the `&` operator for joining text.

When a user changes a cell, every dependent formula across all sheets recalculates, and the edit and the recalculation count as one undo step. While a user types a formula, the editor suggests matching functions and shows their arguments. Inserting or deleting rows and columns, or renaming a sheet, updates references so formulas keep pointing at the same cells.

Formulas that use other functions, such as `VLOOKUP` or `IF`, keep their formula text and the result stored in the file. They don’t recalculate when their inputs change, and Document Authoring writes them back to XLSX with their stored results. The [formulas guide](https://www.nutrient.io/guides/document-authoring/spreadsheets/formulas.md) covers the details, including error values and how the editor reads typed input.

## Formats in and out

Spreadsheets come in as XLSX or SheetJSON and go out as XLSX, PDF, or SheetJSON.![Diagram of Document Authoring spreadsheet formats: XLSX and SheetJSON go into one Document Authoring system, edited in the browser or processed headless on Node.js, and come out as XLSX, PDF, or SheetJSON](@/assets/images/blog/2026/document-authoring-spreadsheet-editor/spreadsheet-formats-in-and-out.png)

| Format                 | Open | Save or export |
| ---------------------- | ---- | -------------- |
| XLSX (Microsoft Excel) | Yes  | Yes            |
| SheetJSON              | Yes  | Yes            |
| PDF                    | No   | Yes            |

SheetJSON is Document Authoring’s native spreadsheet format and the spreadsheet counterpart of [DocJSON](https://www.nutrient.io/guides/document-authoring/working-with-documents/docjson.md). Saving a spreadsheet as SheetJSON and loading it again keeps everything Document Authoring supports, which makes it the right working copy to store in your backend. Export to XLSX when another app needs the file.

XLSX export writes a new file from the spreadsheet model instead of copying the original, so content Document Authoring doesn’t support, such as charts, images, and conditional formatting, is left out. PDF export uses each sheet’s page setup, including paper size, orientation, scale, fit to page, margins, centering, and row and column headings. It exports every visible sheet or a single sheet.

Document Authoring doesn’t open XLS, XLSM, XLTX, CSV, or ODS files.

## Add the spreadsheet editor to a page

The spreadsheet editor uses the same package and system as the document editor. If Document Authoring isn’t installed in your app yet, begin with the [getting started guide](https://www.nutrient.io/sdk/document-authoring/getting-started.md).

Add an empty element with a non-static position and a defined width and height. The editor fills it:

```html

<div id="editor" style="position: relative; width: 100%; height: 600px;"></div>

```

Then create a system and a spreadsheet editor:

```js

import DocAuth from '@nutrient-sdk/document-authoring';

const system = await DocAuth.createDocAuthSystem();

const editor = await system.createSpreadsheetEditor(document.getElementById('editor'), {
  spreadsheet: await system.createSpreadsheetFromPlaintext('Hello, world!'),
});

```

To open an XLSX file the user picks, import it and show it in the editor:

```js

const fileInput = document.querySelector('input[type="file"]');

fileInput.addEventListener('change', async () => {
  const file = fileInput.files?.[0];
  if (!file) {
    return;
  }

  const spreadsheet = await system.importSpreadsheet(file, { fileName: file.name });
  editor.setCurrentSpreadsheet(spreadsheet);
});

```

To export the sheet the user is viewing as a PDF, pass its index to `export()`:

```js

const pdf = await editor.currentSpreadsheet().export({
  format: 'pdf',
  sheet: editor.activeSheet(),
});

```

`export()` returns an `ArrayBuffer`. The [save and export guide](https://www.nutrient.io/guides/document-authoring/spreadsheets/save-and-export.md) shows how to download it as a file and how to store a spreadsheet as SheetJSON.

## One upload box for documents and spreadsheets

When one file picker accepts both documents and spreadsheets, check the file kind first, and then open the matching editor:

```js

const target = document.getElementById('editor');
const kind = await system.detectFileKind(file);

if (kind === 'spreadsheet') {
  const spreadsheet = await system.importSpreadsheet(file, { fileName: file.name });
  await system.createSpreadsheetEditor(target, { spreadsheet });
} else {
  const importedDocument = await system.import(file, { fileName: file.name });
  await system.createEditor(target, { document: importedDocument });
}

```

`detectFileKind()` returns `'spreadsheet'` for XLSX and SheetJSON files, and also for XLSM and XLTX files, which `importSpreadsheet()` rejects with an error. Other files return `'document'`. The [import and load guide](https://www.nutrient.io/guides/document-authoring/spreadsheets/import-and-load.md) covers this pattern, along with import progress and cancellation.

Opening both kinds of file needs both sets of components in your license: Word Processing and DOCX Support for documents, and Spreadsheet Editing and XLSX Support for spreadsheets.

## Spreadsheets on the server with Node.js

The Node.js entry point imports, saves, and exports spreadsheets without a browser or an editor. This script converts an XLSX file to a PDF:

```js

import { createDocAuthSystem } from '@nutrient-sdk/document-authoring/node';
import { readFile, writeFile } from 'node:fs/promises';

const system = await createDocAuthSystem();

try {
  const spreadsheet = await system.importSpreadsheet(await readFile(new URL('./input.xlsx', import.meta.url)), {
    format: 'xlsx',
  });

  const pdf = await spreadsheet.export({ format: 'pdf' });
  await writeFile(new URL('./output.pdf', import.meta.url), new Uint8Array(pdf));
} finally {
  system.destroy();
}

```

The same calls store an uploaded XLSX file as SheetJSON, so your backend can keep the working copy and export XLSX or PDF from it later. The [Node.js spreadsheet guide](https://www.nutrient.io/guides/document-authoring/spreadsheets/nodejs.md) has both examples.

If the job is converting Office files to PDF in bulk, with no editing involved, [Nutrient Node.js SDK](https://www.nutrient.io/sdk/nodejs/) also [converts Excel files to PDF](https://www.nutrient.io/guides/nodejs/conversion/office-to-pdf.md). Document Authoring fits when users edit the spreadsheet in your app and your server exports it later from the same model.

## Large files

Opening a large XLSX file reports progress by phase (reading, indexing, and loading), so your app can show progress instead of a spinner. Users can cancel an import, and a canceled import never returns a partial spreadsheet. Saving to SheetJSON works for spreadsheets of any size. The [large sheet demo](https://document-authoring-demo.nutrient.io/examples/spreadsheet/scale/) shows progress reporting on a big file.

## Limitations in this release

This first release covers editing, saving, and exporting spreadsheets. It has these limits:

- Only the six functions listed above recalculate. Other formulas keep their stored results.

- XLSX export leaves out charts, images, and conditional formatting.

- The editor reads typed numbers, dates, and times using US English conventions.

- The spreadsheet editor doesn’t emit change events, so autosave runs on a timer or when the user leaves the view.

- AI editing and tracked changes work with documents, not spreadsheets.

## Licensing and availability

Spreadsheet Editing is a separately licensed component of Nutrient Document Authoring SDK. Your license needs the Spreadsheet Editing component, and XLSX import and export also need the XLSX Support component. Apps that also edit documents need the Word Processing and DOCX Support components. Production use on Node.js is a licensed feature too. [Contact Sales](https://www.nutrient.io/contact-sales/?lob=sdk) to add these components to your license.

The free trial includes spreadsheet editing and needs no license key. In the trial, the editor and every PDF and XLSX export carry an evaluation watermark, and the editor freezes after an hour until the page is reloaded.

## Try it

- Open the [spreadsheet feature tour](https://document-authoring-demo.nutrient.io/examples/spreadsheet/features/) in the live demo. No signup is required.

- Follow the [spreadsheet getting started guide](https://www.nutrient.io/guides/document-authoring/spreadsheets/getting-started.md) to add the editor to a page.

- Browse the [spreadsheet guides](https://www.nutrient.io/guides/document-authoring/spreadsheets.md), from import and export to SheetJSON.

## FAQ

#### Can the Document Authoring SDK edit Excel spreadsheets?

Yes. The spreadsheet editor opens XLSX files in the browser, where users edit cells, formulas, formatting, and sheets in a grid. Your app saves the result as SheetJSON, the native spreadsheet format, or exports it to XLSX or PDF. Spreadsheet Editing is a separately licensed component, and XLSX import and export also need the XLSX Support component.

#### Which formulas does the Document Authoring spreadsheet editor calculate?

`SUM`, `AVERAGE`, `MIN`, `MAX`, `COUNT`, and `COUNTA` recalculate whenever an input changes, including references to other sheets. Formulas that use other functions, such as `VLOOKUP` or `IF`, keep their formula text and the result stored in the file but don’t recalculate. References update when users insert or delete rows and columns or rename a sheet.

#### Which spreadsheet file formats does Document Authoring support?

It imports XLSX and SheetJSON, and it exports XLSX, PDF, and SheetJSON. It doesn’t open XLS, XLSM, XLTX, CSV, or ODS files. XLSX export writes a new file from the spreadsheet model, so content it doesn’t support, such as charts, images, and conditional formatting, is left out.

#### Can Document Authoring convert XLSX files to PDF on a server?

Yes. The Node.js entry point imports XLSX files and exports them to PDF or SheetJSON without a browser, using each sheet’s page setup for the PDF. Document Authoring for Node.js is a licensed feature. For bulk Office-to-PDF conversion without editing, Nutrient Node.js SDK also converts Excel files to PDF.

#### How is this different from viewing Excel files in Nutrient Web SDK?

[Nutrient Web SDK](https://www.nutrient.io/sdk/web/), with the Office Files component, opens XLSX files for viewing and annotation alongside PDFs. Document Authoring’s spreadsheet editor edits the spreadsheet itself, including its cells, formulas, and sheets, and saves it back to XLSX or SheetJSON.
---

## 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)
- [Adobe Pdf Embed Api Alternatives](/blog/adobe-pdf-embed-api-alternatives.md)
- [Adobe Pdf Services Api Alternatives](/blog/adobe-pdf-services-api-alternatives.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 Assistant Agent Governance](/blog/ai-assistant-agent-governance.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 Document Workflows Ocr Compliance Heavy Teams](/blog/ai-document-workflows-ocr-compliance-heavy-teams.md)
- [Ai Legal Assistant Document Authoring](/blog/ai-legal-assistant-document-authoring.md)
- [Ai Schema Generator Document Extraction](/blog/ai-schema-generator-document-extraction.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)
- [Apryse To Nutrient Migration](/blog/apryse-to-nutrient-migration.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)
- [Azure Document Intelligence Alternatives](/blog/azure-document-intelligence-alternatives.md)
- [Best Ai Document Workflow Platforms](/blog/best-ai-document-workflow-platforms.md)
- [Best Csharp Pdf Library](/blog/best-csharp-pdf-library.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 Invoice Data Extraction Apis](/blog/best-invoice-data-extraction-apis.md)
- [Best Llm Document Understanding Platforms](/blog/best-llm-document-understanding-platforms.md)
- [Best Multilingual Ocr Software](/blog/best-multilingual-ocr-software.md)
- [Best Pdf Accessibility Apis](/blog/best-pdf-accessibility-apis.md)
- [Best Pdf Parsers For Rag](/blog/best-pdf-parsers-for-rag.md)
- [Best Pdf Processing Apis](/blog/best-pdf-processing-apis.md)
- [Best Pdf Viewer Apis](/blog/best-pdf-viewer-apis.md)
- [Best Salesforce Document Generation Apps](/blog/best-salesforce-document-generation-apps.md)
- [Best Secure Document Collaboration Platforms](/blog/best-secure-document-collaboration-platforms.md)
- [or](/blog/best-vue-pdf-viewers.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)
- [Nutrient document decision: Why we built a decision model for documents](/blog/decision-model-for-documents.md)
- [Digital Signatures](/blog/digital-signatures.md)
- [Digital Workflow Automation](/blog/digital-workflow-automation.md)
- [Docling Alternatives](/blog/docling-alternatives.md)
- [Document Ai Vs Ocr](/blog/document-ai-vs-ocr.md)
- [Document Authoring Audit Trail](/blog/document-authoring-audit-trail.md)
- [Document Extraction Confidence Scores](/blog/document-extraction-confidence-scores.md)
- [Document Extraction For Underwriting](/blog/document-extraction-for-underwriting.md)
- [Document Viewer](/blog/document-viewer.md)
- [Document Watermarking](/blog/document-watermarking.md)
- [Debian/Ubuntu.](/blog/easyocr-vs-tesseract-python.md)
- [Electronic signature API: How to sign PDFs programmatically](/blog/electronic-signature-api.md)
- [Emerging threats: Your logging system may be an agentic threat vector](/blog/emerging-threats-your-logging-system.md)
- [Q3 sales](/blog/excel-to-markdown-for-llms.md)
- [Extend Alternatives](/blog/extend-alternatives.md)
- [Extract Patient Data On Premises](/blog/extract-patient-data-on-premises.md)
- [Extract Tables From Complex Pdfs](/blog/extract-tables-from-complex-pdfs.md)
- [app.py](/blog/extract-text-from-pdf-using-python.md)
- [Stricter thresholds for fields that move money. Calibrate on your own sample.](/blog/extraction-hallucination-detection.md)
- [Fillable Pdf](/blog/fillable-pdf.md)
- [Google Document Ai Alternatives](/blog/google-document-ai-alternatives.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)
- [How To Build A Nextjs Pdf Viewer](/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)
- [Using Yarn](/blog/how-to-build-a-react-word-viewer.md)
- [How To Build A Reactjs File Viewer](/blog/how-to-build-a-reactjs-file-viewer.md)
- [How To Build A Reactjs Pdf Viewer With React Pdf](/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)
- [How To Convert Html To Pdf Using React](/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)
- [How To Convert Pdf To Json](/blog/how-to-convert-pdf-to-json.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)
- [How To Convert Word To Pdf Using Javascript](/blog/how-to-convert-word-to-pdf-using-javascript.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 digitally sign PDFs in C# with Nutrient .NET SDK](/blog/how-to-digitally-sign-pdf-in-csharp.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)
- [How to generate PDFs in C# with Nutrient .NET SDK](/blog/how-to-generate-pdf-in-csharp.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)
- [C# barcode scanner: How to scan and read 1D barcodes and QR codes](/blog/how-to-scan-barcodes-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)
- [Html To Pdf In Javascript](/blog/html-to-pdf-in-javascript.md)
- [Ide Text Editors Cpp Large Scale](/blog/ide-text-editors-cpp-large-scale.md)
- [Numeric and identifier fields: exact single-block matches only.](/blog/insurance-document-extraction.md)
- [Intelligent Data Extraction](/blog/intelligent-data-extraction.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)
- [Keep Document Ai Private](/blog/keep-document-ai-private.md)
- [Kyc Onboarding Salesforce](/blog/kyc-onboarding-salesforce.md)
- [Landing Ai Alternatives](/blog/landing-ai-alternatives.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)
- [Llamaindex Vs Langchain Vs Haystack](/blog/llamaindex-vs-langchain-vs-haystack.md)
- [Llamaindex Workflows Vs Langgraph](/blog/llamaindex-workflows-vs-langgraph.md)
- [Llamaparse Alternatives](/blog/llamaparse-alternatives.md)
- [Llm Vs Document Parsing Api](/blog/llm-vs-document-parsing-api.md)
- [Low Code No Code Document Integrations](/blog/low-code-no-code-document-integrations.md)
- [One segment per document found, in page order:](/blog/mailroom-automation-api.md)
- [Material Requisition](/blog/material-requisition.md)
- [or](/blog/merge-pdfs.md)
- [Migrating Observability Hyperdx To Dash0](/blog/migrating-observability-hyperdx-to-dash0.md)
- [Swift Package Manager](/blog/mobile-pdf-sdk.md)
- [Numeric and identifier fields: exact single-block matches only.](/blog/mortgage-document-processing.md)
- [`elements` come from your document parser — each has a type and content.](/blog/multimodal-rag.md)
- [Multipage Extraction Page Boundaries](/blog/multipage-extraction-page-boundaries.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)
- [Ocr Api Comparison](/blog/ocr-api-comparison.md)
- [Online Document Viewer](/blog/online-document-viewer.md)
- [Open Pdf In Your Web App](/blog/open-pdf-in-your-web-app.md)
- [Operations Management Software](/blog/operations-management-software.md)
- [Optical Character Recognition In Scanned Pdfs](/blog/optical-character-recognition-in-scanned-pdfs.md)
- [CPU](/blog/paddleocr-python-guide.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)
- [Pdf Ua Validation](/blog/pdf-ua-validation.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)
- [Pdfplumber Python Guide](/blog/pdfplumber-python-guide.md)
- [People Process Tools](/blog/people-process-tools.md)
- [Process Flows](/blog/process-flows.md)
- [React Docx Editor](/blog/react-docx-editor.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 Non Latin Fonts Special Pdfs](/blog/react-pdf-non-latin-fonts-special-pdfs.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)
- [Top Js Pdf Libraries](/blog/top-js-pdf-libraries.md)
- [Top Ten Ways To Convert Html To Pdf](/blog/top-ten-ways-to-convert-html-to-pdf.md)
- [Unstructured Alternatives](/blog/unstructured-alternatives.md)
- [Using Javascript In Pdf Form Fields](/blog/using-javascript-in-pdf-form-fields.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 Bpms](/blog/what-is-bpms.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)
- [Workflow Analysis](/blog/workflow-analysis.md)

