# Reported issues for PDF Modifier

Pod holds 21 of 36 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to [PDF Modifier](/mcp/pdf-modifier).

## Most discussed

### feat(core): advanced font support and custom font paths

Enhance _get_font_properties to better detect font attributes. Allow users to provide a path to a custom font file for replacements. Investigate extracting embedded fonts.

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/3) · 2026-01-14 · closed · 2 comments

### feat(core): file size validation before processing

## What
No max file size check before processing. Large PDFs could cause OOM.

## Why
P0 — security and stability. A malicious or accidental large PDF could crash the server.

## Acceptance Criteria
- [ ] Validate file size before opening with fitz
- [ ] Configurable max size (default 100MB)
- [ ] Return clear error message with size and limit
- [ ] Apply to: CLI, MCP, and Web upload

## Related
- Already partially handled in `analyzer.py` and `modifier.py` (`max_file_size` param)
- Need to expo

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/76) · 2026-06-20 · closed · 1 comment

### feat(ai): NaN Cloud AI layer with model router + throttle

## AI-001: AI-Powered Document Detection

### What
Add AI capabilities: detect document fields, classify document types, and redact PII automatically using NaN Cloud models.

### Why
- Manual field detection is tedious
- PII redaction needs to be automatic
- Document classification enables smart forms
- Differentiates from basic text editors

### Models Used
- mimo-v2.5: Vision, tool calling, reasoning (OCR, detection)
- qwen3.6: Fast text tasks (classification, translation)
- Fallback: mimo → q

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/72) · 2026-06-20 · closed · 1 comment

### feat(mcp): expose pdfs as resources

Implement MCP Resources interfa
     to allow the LLM to browse and 'subscribe' to PDF files in the mounted data directory. This allows the 
     model to read content directly as a resource uri 'pdf://filename.pdf'.

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/15) · 2026-01-14 · closed · 1 comment

### feat(core): metadata editor

Add functionality to read and update 
     standard PDF metadata fields (Title, Author, Subject, Keywords) via CLI and MCP.

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/14) · 2026-01-14 · closed · 1 comment

### feat(core): image replacement support

Add functionality to identify images by location/index and replace them with new image files, maintaining aspect ratio or bounds.

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/5) · 2026-01-14 · closed · 1 comment

### DOCS-001: Modularize docs/lessons/ into lesson-NNN-*.md and _index.md

## Overview
Implement modular lessons architecture per `pattern-knowledge-placement` and the Harness Evolution plan:
1. Parse monolithic `docs/lessons.md` (96 lines) into individual `docs/lessons/lesson-NNN-<slug>.md` files with Frontmatter Law.
2. Create lightweight index catalog at `docs/lessons/_index.md` (<1 KB).
3. Replace monolithic `docs/lessons.md` with a clean backward-compatible pointer stub.

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/127) · 2026-08-18 · closed · 0 comments

### fix(web): PDF preview zoom still distorts at high magnification

## Context

WEB-002 (preview element grouping + sync, PR pending) added a dynamic zoom ceiling: `computeMaxScale` limits scale so one canvas pixel equals one physical screen pixel (`screenWidth × devicePixelRatio ÷ pageWidth`, clamped [1, 4]). Covered by 6 unit tests; applied to zoom()/fitToWidth()/zoom-in disabled state.

## Problem

The user reports the preview still distorts when zooming in a lot after the fix. Two hypotheses:

1. **Formula insufficient on large screens** — on a wide display 

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/120) · 2026-08-06 · open · 0 comments

## Most recent

### feat(web): improve PDF preview — intelligent element grouping + sync

## Summary

The PDF preview now renders correctly with zoom, page jump, and text highlighting, but the **element detection in the sidebar is too granular**. The analyzer returns individual text fragments rather than semantically grouped elements (e.g., "Hello" and "World" on the same line should be one element "Hello World").

## Remaining work

- [ ] **Group consecutive text elements** by position (same line, same font, similar spacing) → merge into one sidebar entry
- [ ] **Sync scroll positio

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/118) · 2026-08-05 · closed · 0 comments

### feat(web): keyboard shortcuts

Implementar keyboard shortcuts: Ctrl+Z undo, Ctrl+Shift+Z redo, Ctrl+S download, Ctrl+O open file, Escape cancelar. Mostrar shortcuts en tooltips.

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/99) · 2026-06-24 · open · 0 comments

### feat(web): batch processing UI

Interfaz para procesar multiples PDFs. Implementar: upload de multiples archivos, lista de archivos con estado, apply replacements a todos, download como zip.

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/98) · 2026-06-24 · open · 0 comments

### feat(web): preview de cambios antes de aplicar

Mostrar preview de los cambios antes de aplicarlos. Implementar: diff view mostrando old vs new, preview del PDF con cambios aplicados (overlay), confirmacion antes de procesar.

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/97) · 2026-06-24 · open · 0 comments

### feat(web): persistencia de sesion en localStorage

Guardar el session_id en localStorage para que el usuario pueda continuar trabajando despues de recargar la pagina. Implementar: guardar session_id al cargar, restaurar sesion al abrir, expirar sesiones antiguas.

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/96) · 2026-06-24 · open · 0 comments

### feat(web): undo/redo para reemplazos

Implementar historial de cambios con undo/redo. Keyboard shortcuts: Ctrl+Z para undo, Ctrl+Shift+Z o Ctrl+Y para redo. Guardar estado de replacements en cada cambio. Ya implementado parcialmente, falta: persistir en localStorage, limitar historial.

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/94) · 2026-06-24 · open · 0 comments

### feat(web): PDF preview con PDF.js

Implementar preview del PDF en el frontend usando pdfjs-dist. El preview debe: renderizar el PDF pagina por pagina, navegar con flechas, resaltar texto seleccionado, sincronizar con la estructura. Ya implementado parcialmente, falta: sincronizar scroll, zoom controls, page jump.

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/93) · 2026-06-24 · closed · 0 comments

### refactor: reorganizar estructura a backend/ + frontend/

Reorganizar el proyecto para tener una estructura mas clara: src/pdf_modifier/ a backend/src/pdf_modifier/, apps/web/ a frontend/, Dockerfiles dentro de cada directorio. Mejor separacion de responsabilidades. Acceptance Criteria: Backend mueve a backend/, Frontend mueve a frontend/, Makefile actualizado, CI/CD actualizado, todos los tests pasan, Docker build funciona.

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/92) · 2026-06-24 · closed · 0 comments

### feat(core): font width caching for repeated replacements

## What
Cache font widths for repeated same-font replacements to improve performance.

## Why
When processing PDFs with many replacements using the same font, width calculation is repeated unnecessarily.

## Acceptance Criteria
- [ ] LRU cache for font width calculations
- [ ] Cache key: (font_name, fontsize)
- [ ] No memory leak (bounded cache)
- [ ] Performance improvement measurable on large PDFs

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/78) · 2026-06-20 · open · 0 comments

### docs: programmatic API examples in README

## What
Add Python library usage examples to README.

## Why
Users who want to use pdf-modifier-mcp as a library (not CLI/MCP) need code examples.

## Acceptance Criteria
- [ ] Example: basic text replacement
- [ ] Example: regex replacement
- [ ] Example: batch processing
- [ ] Example: PDF analysis/structure extraction
- [ ] All examples are tested (runnable)

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/77) · 2026-06-20 · open · 0 comments

### feat(audio): TTS, STT, and voice dictation

## AUD-001: Audio Capabilities (TTS/STT)

### What
Add TTS to read PDFs aloud, STT to transcribe embedded audio, and voice dictation to edit PDFs by voice.

### Why
- Accessibility: visually impaired users can listen
- Some PDFs contain embedded audio notes
- Voice dictation enables hands-free editing

### Models Used
- kokoro: TTS (82M, <1s, 67 voices, ES: ef_dora, em_alex)
- whisper: STT (large-v3, 99+ languages, 25MB limit)

### Acceptance Criteria
- [ ] TTS produces audio from PDF text
- [ ]

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/75) · 2026-06-20 · open · 0 comments

### feat(multilingual): translation, semantic search, summarization

## ML-001: Multilingual and Semantic Capabilities

### What
Add translation, semantic search, summarization, and structured data extraction using NaN Cloud models.

### Why
- PDFs often in foreign languages
- Semantic search finds concepts, not just text
- Summarization saves reading time
- Structured extraction converts PDFs to JSON

### Models Used
- qwen3.6: Translation, summary (fast, 256K context)
- qwen3-embedding: Embeddings (4096 dim, 100+ languages)
- rerank: Search result reranking
- m

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/74) · 2026-06-20 · open · 0 comments

### feat(vision): OCR, signature detection, PDF comparison

## VIS-001: Vision and OCR Capabilities

### What
Add vision-based capabilities using mimo-v2.5: OCR scanned PDFs, detect signatures/seals, compare PDFs visually.

### Why
- Many PDFs are scanned images without text layers
- fitz can't extract text from image-only PDFs
- Signature detection needed for compliance
- Visual comparison catches differences text tools miss

### Acceptance Criteria
- [ ] Scanned PDFs OCR'd successfully
- [ ] Signatures and seals detected
- [ ] PDF comparison shows visu

[Read the thread](https://github.com/mlorentedev/pdf-modifier-mcp/issues/73) · 2026-06-20 · open · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/mlorentedev/pdf-modifier-mcp/issues).
