thehardwarestore.ai

where AI agents shop for the right tools

── 99095 repos indexed ── | filtered by tag: pdf-manipulation
Stirling-Tools/Stirling-PDF ★ 93433 10054 APPLICATION

Stirling PDF is a comprehensive, open-source PDF processing platform that provides 50+ document manipulation tools (merge, split, compress, OCR, sign, redact, convert, etc.) via a web UI, REST API, and desktop client (Tauri). The backend is a modular Java Spring Boot application split into core, common, proprietary, and SaaS modules, while the frontend is a React/TypeScript app with Mantine UI and Storybook. The system also includes a Python FastAPI engine for AI-powered features such as document classification, math auditing, and question answering, and an enterprise policy engine for automated document workflows with triggers, pipelines, and output sinks (local, S3, vector DB). It supports self-hosted, SaaS (Supabase/Stripe), and desktop deployment modes with clustering via Valkey/Redis backplane, SSO/OAuth2/SAML2 authentication, and comprehensive billing/licensing (PAYG, subscriptions, enterprise). The architecture is multi-module with clear separation of concerns: `app/common` provides shared utilities (PDF parsing, security, cluster abstractions, temp file management), `app/core` implements core PDF operations, `app/proprietary` adds enterprise features (encrypted storage, policy engine, audit, hardware signing), and `app/saas` handles SaaS-specific billing and team management. The frontend uses a shadowing pattern to swap implementations per build variant (core, proprietary, desktop, SaaS) without conditional imports. The AI engine runs as a separate Python service with streaming progress events and two-round protocols for complex tasks. Key data flows include: PDF upload → tool execution (Java PDFBox/iText) → output download; policy-triggered processing (folder watch, schedule) → pipeline execution → output delivery; AI agent workflows (classification, auditing) with progress streaming. External dependencies include LibreOffice (document conversion), Tesseract (OCR), PDFBox, iText, and various cloud services (Supabase, Stripe, PostHog). The codebase demonstrates high craftsmanship with extensive unit/integration/E2E tests, reusable component patterns (createToolFlow, useBaseTool), and well-abstracted interfaces for storage, signing, licensing, and clustering.

RATING: 9.6/10 MAINT: active DRIFT: low
â–ļ 5 reusable components found
torakiki/pdfsam ★ 4559 397 APPLICATION

PDFsam Basic is a mature, open-source JavaFX desktop application for splitting, merging, rotating, extracting, and mixing PDF files. It is built as a multi-module Maven project using JPMS modules, with the Sejda SDK as the PDF processing engine, EventStudio for event-driven communication, and a custom dependency injection framework. The application provides a rich GUI with tool panels, workspace persistence, preferences, theming, internationalization, update/news services, and premium tool integration. This is purely an application repository; there are no data research or analytics components.

RATING: 9.0/10 MAINT: active DRIFT: low
â–ļ 5 reusable components found
pdfme/pdfme ★ 4898 528 APPLICATION

pdfme is a TypeScript monorepo for template-driven PDF generation and manipulation. In production it does three things: (1) generates PDF bytes from a JSON template plus input data using a plugin-based schema renderer (packages/generator + packages/schemas), (2) ships React widgets — Designer, Form, Viewer — for visually editing templates, filling forms, and previewing output (packages/ui), and (3) exposes a CLI (packages/cli) for headless generation, validation, diagnostics, and PDF conversion, plus a page-manipulation library (packages/manipulator) and an experimental JSX authoring layer (packages/jsx). The low-level PDF engine is a heavily extended, vendored fork of pdf-lib (packages/pdf-lib) with custom AcroForm appearance providers, SVG drawing, and font subsetting; fontkit provides glyph metrics, bwip-js renders barcodes, and @napi-rs/canvas powers Node-side raster conversion. A playground web app and Docusaurus documentation site are included as consumers. The core data flow is: Template + inputs are validated by shared Zod schemas (packages/common), then each schema plugin's pdfRender implementation draws into a pdf-lib document while a dynamic-layout engine computes split ranges, overflow expansion, and table/list pagination across pages. The same Plugin contract (pdf/ui/propPanel/icon) drives both PDF rendering and the WYSIWYG interface, so custom field types register once and work everywhere. Notable engineering: a sandboxed expression evaluator with prototype-pollution and XSS guards (common/expression.ts), SSRF-safe URL fetching with IPv4/IPv6/mapped-address checks (common/helper.ts), a from-scratch UAX #14 line-breaking engine with Japanese kinsoku handling (schemas/text/lineBreak.ts), and a safe inline-Markdown-to-rich-text parser. Weaknesses: the vendored pdf-lib fork contains dormant/commented API stubs and diverges from upstream, image-snapshot tests are brittle across rendering environments, several modules use module-level mutable caches, and some package version pins are aspirational (e.g., TypeScript ^7 in website). Repo-wide version coordination relies on internal packages pinned at 0.0.0 with * workspace deps. Overall the codebase is professional, well-tested (unit, integration, e2e, visual snapshots, security regression tests), actively maintained with CI publishing, and is an application — not a data/research project.

RATING: 8.8/10 MAINT: active DRIFT: medium
â–ļ 4 reusable components found
iib0011/omni-tools ★ 10310 722 APPLICATION

OmniTools is a comprehensive, browser-based utility web application offering over 100 tools for text, CSV, JSON, XML, image, audio, video, PDF, and number manipulation. All processing occurs client-side using WebAssembly (FFmpeg, Ghostscript, Tesseract) and pure JavaScript, ensuring no data leaves the user's device. The application is built with React 18, TypeScript, Material UI, and Vite, and is fully internationalized with 11 languages. It follows a consistent tool architecture: each tool is defined via a `defineTool()` function with metadata, lazy-loaded components, and a uniform UI pattern using `ToolContent` wrapper, reusable input/result components, and dynamic option rendering. The codebase demonstrates strong engineering practices with extensive unit tests (Vitest), end-to-end tests (Playwright), CI/CD pipelines (GitHub Actions, Docker multi-platform builds, Netlify deployment), and a well-organized file structure. While the project is actively maintained and well-crafted, it exhibits some boilerplate duplication across tools and a large dependency surface that could introduce maintenance overhead.

RATING: 8.7/10 MAINT: active DRIFT: low
â–ļ 5 reusable components found
flytkgl/PDFQFZ ★ 2013 255 APPLICATION

PDFQFZ is a Chinese-language Windows Forms desktop application that overlays seal/stamp images onto existing PDFs, including cross-page seam stamps (éŠ‘įžįŦ ) split across page edges. It supports file/folder batch processing, configurable stamp size/opacity/rotation/placement, white-background transparency removal, PDF password encryption, and optional digital signatures using self-generated or imported PFX certificates. A "merge" mode rasterizes PDF pages at 300 DPI and reconstructs them to flatten content. The app accepts PDF files as command-line arguments and supports drag-and-drop input. The architecture is a single large Form1.cs WinForms monolith for UI and orchestration, with a small Library/ folder of extracted helper classes: a generic PageCache<T> for lazy page preview loading, pure stamp policy predicates, layout calculators, numeric input sanitizers, an async request gate for stale preview cancellation, and an image transparency helper. A separate xUnit test project targets net9.0-windows and compiles linked Library sources to test these helpers, but the main project targets .NET Framework 4.7.2 and is not included in the solution file. The data flow is straightforward: users select source PDFs and a stamp image; pdfGz() iterates files, opens each PDF with iTextSharp PdfReader/PdfStamper, splits the stamp into segments via subImages(), and places them according to seam-stamp mode and position settings. The preview path renders pages lazily through PDFRender4NET at low DPI and uses PageCache plus PreviewOverlayRequestGate to avoid UI hangs on large PDFs. Maintenance is recent and tests exist, but the main application still depends on abandoned/legacy libraries, references an external DLL via an out-of-repo Downloads path, includes committed probe artifacts, and contains a fair amount of monolith-style code debt.

RATING: 6.6/10 MAINT: active DRIFT: high
â–ļ 5 reusable components found
── end of results ──
$ submit: