👉 Try the demo: https://github.com/LM-Kit/lm-kit-net-samples/tree/main/console_net/document-intelligence/pdf-toolkit/encrypted_pdf_workflows
Encrypted PDF Workflows for C# .NET Applications
🎯 Purpose of the Demo
An interactive console app showing that every method in the LM-Kit.NET PDF toolkit accepts a password. Inspect, render, search, split, or edit a password-protected PDF, all without ever exporting an unlocked copy to disk.
All processing runs on-device.
👥 Industry Target Audience
- Legal: signed contracts, NDAs, confidentiality-marked exhibits.
- Finance: statements, KYC packets, signed disclosures.
- Healthcare: patient records under HIPAA, lab reports.
- HR: background checks, signed offer letters.
- Any team ingesting password-protected PDFs into AI or document-processing pipelines.
🚀 Problem Solved
Most PDF toolkits force you to "unlock" a file first, write an unencrypted copy to disk, and then process it. That breaks audit trails and exposes plaintext on the filesystem. The LM-Kit.NET toolkit threads a password parameter through every entry point, so the encrypted file never leaves its protected state. The demo wraps every supported call (PdfInfo, PdfRenderer, PdfSearch, PdfSplitter, PdfEditor) behind menu picks.
💻 Application Overview
Interactive menu (no command-line arguments) with six modes:
| Mode | What it does |
|---|---|
| Inspect | PdfInfo.GetPageCountAsync + GetMetadataAsync + GetSecurityHandlerRevisionAsync with password. |
| Render | PdfRenderer.SavePageAsPngAsync using PdfRenderOptions.Password. |
| Search | PdfSearch.FindTextAsync with password, prompts for a query. |
| Extract | PdfSplitter.ExtractPagesAsync with password, prompts for a page range. |
| Edit | PdfEditor.ApplyToFileAsync keeping every-other page via a password-aware Attachment. |
| All | Run all five end-to-end into a chosen output directory. |
| Quit | Exit. |
Every mode asks for the encrypted PDF path and password up-front, then routes through the matching SDK call. Ctrl-C cancels cleanly.
✨ Key Features
- Password threading: every API entry point accepts a
passwordargument; nothing is unlocked on disk. Attachment(path, name, password): one-line pattern shared by every class that consumes anAttachment.PdfRenderOptions.Password: applied to every render method (PNG, JPEG, multi-page TIFF, ...).- Async +
CancellationTokenthroughout.
🧠 Model
- None. This demo is pure document plumbing and does not load an LLM.
🛠️ Getting Started
📋 Prerequisites
- .NET 8.0 or later
- A password-protected PDF (Adobe Acrobat, Foxit, or an online tool can encrypt a normal PDF for you).
▶️ Running the Application
git clone https://github.com/LM-Kit/lm-kit-net-samples
cd lm-kit-net-samples/console_net/document-intelligence/pdf-toolkit/encrypted_pdf_workflows
dotnet run
Pick a mode from the menu and follow the prompts.