{ "name": "pdf-forge", "displayName": "PDF Forge", "description": "All-in-one PDF toolkit for developers: view, extract code & tables, convert to Markdown, highlight, note, compare — 100% offline, no AI, one .vsix forever.", "version": "1.0.0", "publisher": "babyfox1306", "repository": { "type": "git", "url": "https://github.com/babyfox1306/pdf-forge.git" }, "engines": { "vscode": "^1.80.0" }, "categories": [ "Other", "Formatters", "Visualization", "Programming Languages" ], "keywords": [ "pdf", "pdf viewer", "pdf extract", "pdf to markdown", "code from pdf", "pdf ocr", "pdf table csv", "pdf compare", "pdf notes", "offline pdf" ], "activationEvents": [ "onCustomEditor:pdf-forge.pdfEditor" ], "main": "./out/extension.js", "contributes": { "customEditors": [ { "viewType": "pdf-forge.pdfEditor", "displayName": "PDF Forge Viewer", "priority": "default", "selector": [ { "filenamePattern": "*.pdf" } ] } ], "commands": [ { "command": "pdf-forge.openPdf", "title": "PDF Forge: Open PDF" }, { "command": "pdf-forge.extractText", "title": "PDF Forge: Extract All Text" }, { "command": "pdf-forge.exportMarkdown", "title": "PDF Forge: Export to Markdown" }, { "command": "pdf-forge.copyCode", "title": "PDF Forge: Copy All Code" }, { "command": "pdf-forge.exportNotes", "title": "PDF Forge: Export Notes" }, { "command": "pdf-forge.comparePdfs", "title": "PDF Forge: Compare PDFs" }, { "command": "pdf-forge.toggleOcr", "title": "PDF Forge: Toggle OCR" }, { "command": "pdf-forge.clearCache", "title": "PDF Forge: Clear Cache" }, { "command": "pdf-forge.openExportFolder", "title": "PDF Forge: Open Export Folder" }, { "command": "pdf-forge.extractTables", "title": "PDF Forge: Extract Tables" }, { "command": "pdf-forge.deduplicateCode", "title": "PDF Forge: Deduplicate Code" }, { "command": "pdf-forge.toggleSplitView", "title": "PDF Forge: Toggle Split View" }, { "command": "pdf-forge.jumpToPage", "title": "PDF Forge: Jump to Page" }, { "command": "pdf-forge.searchInPdf", "title": "PDF Forge: Search in PDF" }, { "command": "pdf-forge.showMetadata", "title": "PDF Forge: Show Metadata" } ], "keybindings": [ { "command": "pdf-forge.zoom", "key": "ctrl+alt+z", "when": "activeEditor == pdf-forge.pdfEditor" }, { "command": "pdf-forge.extractText", "key": "ctrl+alt+x", "when": "activeEditor == pdf-forge.pdfEditor" }, { "command": "pdf-forge.copyCode", "key": "ctrl+alt+c", "when": "activeEditor == pdf-forge.pdfEditor" }, { "command": "pdf-forge.exportMarkdown", "key": "ctrl+alt+e", "when": "activeEditor == pdf-forge.pdfEditor" }, { "command": "pdf-forge.toggleSplitView", "key": "ctrl+alt+s", "when": "activeEditor == pdf-forge.pdfEditor" }, { "command": "pdf-forge.searchInPdf", "key": "ctrl+alt+f", "when": "activeEditor == pdf-forge.pdfEditor" } ], "configuration": { "title": "PDF Forge", "properties": { "pdf-forge.autoReload": { "type": "boolean", "default": true, "description": "Automatically reload PDF when file changes on disk" }, "pdf-forge.defaultFormat": { "type": "string", "enum": [ "markdown", "text", "json" ], "default": "markdown", "description": "Default export format for text extraction" }, "pdf-forge.highlightColor": { "type": "string", "default": "#FFEB3B", "description": "Default highlight color (hex format)" }, "pdf-forge.maxFileSize": { "type": "number", "default": 200, "description": "Maximum file size in MB (0 = unlimited)" }, "pdf-forge.enableOcr": { "type": "boolean", "default": false, "description": "Enable OCR for scanned PDFs (uses Tesseract.js)" }, "pdf-forge.autoDedupe": { "type": "boolean", "default": true, "description": "Automatically deduplicate code blocks during extraction" } } }, "menus": { "commandPalette": [ { "command": "pdf-forge.openPdf" }, { "command": "pdf-forge.extractText" }, { "command": "pdf-forge.exportMarkdown" }, { "command": "pdf-forge.copyCode" }, { "command": "pdf-forge.exportNotes" }, { "command": "pdf-forge.comparePdfs" }, { "command": "pdf-forge.toggleOcr" }, { "command": "pdf-forge.clearCache" }, { "command": "pdf-forge.openExportFolder" }, { "command": "pdf-forge.extractTables" }, { "command": "pdf-forge.deduplicateCode" }, { "command": "pdf-forge.toggleSplitView" }, { "command": "pdf-forge.jumpToPage" }, { "command": "pdf-forge.searchInPdf" }, { "command": "pdf-forge.showMetadata" } ] } }, "scripts": { "vscode:prepublish": "npm run compile", "compile": "tsc -p ./", "watch": "tsc -watch -p ./", "package": "vsce package", "publish": "vsce publish", "publish:open": "ovsx publish" }, "dependencies": { "diff-match-patch": "^1.0.5", "highlight.js": "^11.9.0", "md-to-pdf": "^5.2.3", "pdf-lib": "^1.17.1", "pdf-parse": "^1.1.1", "pdfjs-dist": "^5.4.296", "simple-git": "^3.20.0", "tesseract.js": "^5.0.2" }, "devDependencies": { "@types/diff-match-patch": "^1.0.36", "@types/node": "^20.10.0", "@types/pdf-parse": "^1.1.5", "@types/vscode": "^1.80.0", "@vscode/vsce": "^2.22.0", "typescript": "^5.3.3" } }