docs: update browser extension documentation for web clipping

- Updated browser-extension/README.md with web clipping features
- Updated docs/BrowserExtension.md with dual-mode architecture
- Added documentation for clip mode data flow and API endpoints
- Updated permissions explanation for new clipping capabilities
- Added troubleshooting for clip-specific issues
- Documented version 1.1.0 features and changes

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-02-13 23:24:10 +00:00
parent f7280be523
commit 5380c6de6c
2 changed files with 226 additions and 58 deletions
+89 -23
View File
@@ -1,11 +1,14 @@
# DocuElevate Browser Extension
Send files from your browser directly to DocuElevate for processing with a single click.
Clip web pages and send files from your browser directly to DocuElevate for processing with a single click.
## Features
- **Web Page Clipping**: Clip full pages or selected content as PDF documents
- **One-Click File Sending**: Send file URLs from your browser to DocuElevate
- **Context Menu Integration**: Right-click on links or pages to send them to DocuElevate
- **Context Menu Integration**: Right-click on links or pages to send or clip them
- **Dual Mode Interface**: Toggle between "Send URL" and "Clip Page" modes
- **PDF Conversion**: Automatically converts clipped pages to PDF format
- **Secure Configuration**: Store your DocuElevate server URL and authentication in the extension
- **Cross-Browser Support**: Compatible with Chrome, Firefox, Edge, and other Chromium-based browsers
- **Minimal Permissions**: Only requests necessary permissions for functionality
@@ -50,24 +53,49 @@ Send files from your browser directly to DocuElevate for processing with a singl
- If authentication is enabled, enter your session cookie (optional)
- Click "Save Configuration"
**Note**: For permanent installation in Firefox, you'll need to sign the extension through Mozilla's add-on portal.
**Note**: For permanent installation in Firefox, you'll need to sign the extension through Mozilla's add-on portal. Firefox supports the same Chrome API for PDF conversion (tabs.printToPDF).
## Usage
### Method 1: Extension Popup
### Method 1: Extension Popup (Send URL Mode)
1. Navigate to a page with a file URL (e.g., a PDF, DOCX, image)
2. Click the DocuElevate extension icon
3. Optionally, enter a custom filename
4. Click "Send to DocuElevate"
5. Wait for confirmation that the file was sent
3. Select "Send URL" mode (default)
4. Optionally, enter a custom filename
5. Click "Send to DocuElevate"
6. Wait for confirmation that the file was sent
### Method 2: Context Menu
### Method 2: Extension Popup (Clip Page Mode)
1. Navigate to any web page you want to clip
2. Click the DocuElevate extension icon
3. Select "Clip Page" mode
4. Choose either:
- **Clip Full Page**: Captures the entire page content
- **Clip Selection**: Captures only the selected text/content (select text first)
5. Optionally, enter a custom filename
6. The page will be converted to PDF and sent to DocuElevate
### Method 3: Context Menu - Send URL
1. Right-click on a link or the current page
2. Select "Send to DocuElevate" from the context menu
2. Select "Send URL to DocuElevate" from the context menu
3. A notification will confirm the file was sent or show an error
### Method 4: Context Menu - Clip Page
1. Right-click on any page
2. Select "Clip Full Page to DocuElevate" from the context menu
3. The entire page will be clipped as PDF and sent
### Method 5: Context Menu - Clip Selection
1. Select text or content on the page
2. Right-click on the selection
3. Select "Clip Selection to DocuElevate" from the context menu
4. Only the selected content will be clipped as PDF and sent
## Configuration
### Server URL
@@ -75,7 +103,8 @@ Send files from your browser directly to DocuElevate for processing with a singl
The DocuElevate server URL should point to your DocuElevate instance:
- Format: `https://your-domain.com` or `http://localhost:8000`
- Do not include trailing slashes or API paths
- The extension will automatically append `/api/process-url`
- For URL mode: Extension appends `/api/process-url`
- For clip mode: Extension appends `/api/files/upload`
### Session Cookie (Optional)
@@ -95,13 +124,19 @@ If your DocuElevate instance has authentication enabled, you need to provide a s
**Security Note**: Your session cookie is stored securely in the browser's extension storage. Never share your session cookie with others.
## Supported File Types
## Supported Content
### URL Mode
The extension can send any URL, but DocuElevate will only process supported file types:
- **Documents**: PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, TXT, CSV, RTF
- **Images**: JPG, PNG, GIF, BMP, TIFF, WebP, SVG
### Clip Mode
Any web page can be clipped. The extension will:
- Capture HTML content with styles
- Convert to PDF format using browser's print API
- Upload to DocuElevate for processing
## Troubleshooting
### "Failed to connect to DocuElevate server"
@@ -123,21 +158,40 @@ The extension can send any URL, but DocuElevate will only process supported file
- Enter the session cookie in the extension settings
- Ensure your session hasn't expired (log in again if needed)
### "Unsupported file type"
### "No content selected" (Clip Selection)
**Cause**: No text or content is selected on the page.
**Solution**:
- Select text or content on the page before clicking "Clip Selection"
- Use "Clip Full Page" to capture the entire page without selection
### "Failed to convert to PDF"
**Cause**: The browser's PDF conversion API failed.
**Solutions**:
- Ensure you're using a modern version of Chrome/Edge/Firefox
- Check browser console for detailed error messages
- Try clipping a simpler page to test
- Ensure the page has finished loading
### "Unsupported file type" (URL Mode)
**Cause**: The URL doesn't point to a supported file type.
**Solution**:
- Verify the URL ends with a supported file extension
- Check that the Content-Type header is set correctly by the server
- Use "Clip Page" mode instead to capture web content
### "File too large"
**Cause**: The file exceeds the maximum upload size configured in DocuElevate.
**Cause**: The file/PDF exceeds the maximum upload size configured in DocuElevate.
**Solutions**:
- Check your DocuElevate `MAX_UPLOAD_SIZE` configuration
- Try a smaller file
- Try a smaller file or clip a smaller selection
- Contact your DocuElevate administrator to increase the limit
## Privacy & Security
@@ -146,10 +200,12 @@ The extension can send any URL, but DocuElevate will only process supported file
The extension requests minimal permissions:
- **activeTab**: To get the URL of the current tab
- **activeTab**: To get the URL and content of the current tab
- **storage**: To save your server URL and session cookie configuration
- **contextMenus**: To add the "Send to DocuElevate" option to right-click menus
- **contextMenus**: To add context menu options for sending/clipping
- **notifications**: To show success/error notifications
- **scripting**: To inject content capture code into web pages
- **host_permissions**: To access page content for clipping (restricted to active tab)
### Data Handling
@@ -157,6 +213,7 @@ The extension requests minimal permissions:
- **Local Configuration**: Your server URL and session cookie are stored locally in your browser
- **Direct Communication**: All API requests go directly from your browser to your DocuElevate server
- **No Third Parties**: No data is sent to third-party services
- **Page Content**: When clipping, page HTML is captured temporarily in memory and converted to PDF locally in your browser before upload
## Development
@@ -175,12 +232,13 @@ browser-extension/
│ ├── icon48.png
│ └── icon128.png
├── popup/ # Extension popup UI
│ ├── popup.html
│ ├── popup.css
│ └── popup.js
│ ├── popup.html # Popup interface with mode toggle
│ ├── popup.css # Styling for popup
│ └── popup.js # Popup logic for URL and clip modes
└── scripts/ # Background and content scripts
├── background.js # Service worker for background tasks
── content.js # Content script for page interaction
├── background.js # Service worker with PDF conversion
── content.js # Content script for page capture
└── capture.js # Utility functions for web clipping
```
### Testing
@@ -230,7 +288,15 @@ For issues, questions, or feature requests:
## Version History
### 1.0.0 (Current)
### 1.1.0 (Current)
- **Web Page Clipping**: Clip full pages or selected content as PDF
- **Dual Mode Interface**: Toggle between "Send URL" and "Clip Page" modes
- **PDF Conversion**: Browser-based PDF generation using printToPDF API
- **Enhanced Context Menus**: Separate options for URL sending and page clipping
- **Selection Clipping**: Clip only selected text/content from pages
- Cross-browser compatibility (Chrome, Firefox, Edge)
### 1.0.0
- Initial release
- Basic URL sending functionality
- Configuration management
+137 -35
View File
@@ -1,18 +1,21 @@
# Browser Extension Guide
The DocuElevate Browser Extension enables users to send files from their web browser directly to DocuElevate for processing.
The DocuElevate Browser Extension enables users to clip web pages and send files from their web browser directly to DocuElevate for processing.
## Overview
The browser extension provides a seamless way to process files without manually downloading them first. Users can send file URLs with a single click, and DocuElevate will download and process the files automatically.
The browser extension provides a seamless way to process files and capture web content without manually downloading or copying them first. Users can send file URLs or clip entire web pages with a single click, and DocuElevate will process them automatically.
## Features
### Core Functionality
- **Web Page Clipping**: Capture full pages or selected content as PDF documents
- **One-Click File Sending**: Send file URLs from the browser to DocuElevate
- **Context Menu Integration**: Right-click on links or pages to send them
- **Popup Interface**: Simple configuration and file submission UI
- **Dual Mode Interface**: Toggle between "Send URL" and "Clip Page" modes
- **Context Menu Integration**: Right-click on links, pages, or selections for quick actions
- **PDF Conversion**: Automatic conversion of clipped pages to PDF format
- **Popup Interface**: Simple configuration and file/page submission UI
- **Status Notifications**: Immediate feedback on submission success or failure
### Security Features
@@ -21,6 +24,7 @@ The browser extension provides a seamless way to process files without manually
- **Secure Storage**: Configuration stored locally in browser extension storage
- **Direct Communication**: All requests go directly to your DocuElevate server
- **Session-Based Auth**: Supports DocuElevate authentication via session cookies
- **Local PDF Generation**: Pages converted to PDF in your browser before upload
### Cross-Browser Support
@@ -28,7 +32,7 @@ The extension is compatible with:
- Google Chrome
- Microsoft Edge
- Chromium-based browsers (Brave, Opera, etc.)
- Mozilla Firefox (with minor adjustments)
- Mozilla Firefox (full support including PDF conversion)
## Installation
@@ -40,13 +44,14 @@ Quick steps:
1. Load the extension from the `browser-extension` folder
2. Configure your DocuElevate server URL
3. Optionally add authentication (session cookie)
4. Start sending files!
4. Start sending files or clipping pages!
### For Administrators
#### Prerequisites
- DocuElevate server running with URL upload API enabled
- File upload API accessible at `/api/files/upload`
- Server accessible from users' browsers (not blocked by firewall/CORS)
- Optional: Authentication configured if required
@@ -82,36 +87,65 @@ Users need to configure two settings:
### Server Configuration
No server-side configuration is required. The extension uses the existing URL upload API endpoint:
No server-side configuration is required. The extension uses existing API endpoints:
```
POST /api/process-url
POST /api/process-url # For URL mode
POST /api/files/upload # For clip mode
```
Ensure this endpoint is:
Ensure these endpoints are:
- Accessible from users' browsers
- Not blocked by CORS policies (if different domain)
- Properly secured with authentication if needed
## Usage
### Sending Files via Popup
### Mode Selection
The extension has two modes accessible via the popup:
1. **Send URL Mode** (default): Send file URLs to DocuElevate
2. **Clip Page Mode**: Capture and convert web pages to PDF
Toggle between modes by clicking the mode buttons in the popup.
### Sending Files via Popup (URL Mode)
1. Click the DocuElevate extension icon
2. The current page URL is displayed
3. Optionally enter a custom filename
4. Click "Send to DocuElevate"
5. Status message shows success or error
2. Select "Send URL" mode
3. The current page URL is displayed
4. Optionally enter a custom filename
5. Click "Send to DocuElevate"
6. Status message shows success or error
### Sending Files via Context Menu
### Clipping Pages via Popup (Clip Mode)
1. Click the DocuElevate extension icon
2. Select "Clip Page" mode
3. The current page title is displayed
4. Choose one of:
- **Clip Full Page**: Captures entire page content
- **Clip Selection**: Captures only selected text (select first)
5. Optionally enter a custom filename
6. Page is converted to PDF and uploaded
7. Status message shows success or error
### Sending URLs via Context Menu
1. Right-click on any link or the current page
2. Select "Send to DocuElevate"
2. Select "Send URL to DocuElevate"
3. A notification appears with the result
### Supported URLs
### Clipping via Context Menu
The extension can send any URL, but DocuElevate will only process:
1. **Full Page**: Right-click on any page and select "Clip Full Page to DocuElevate"
2. **Selection**: Select text, right-click, and select "Clip Selection to DocuElevate"
3. A notification appears with the result
### Supported Content
**URL Mode** - DocuElevate will process these file types:
**Document URLs**:
- PDFs: `https://example.com/document.pdf`
@@ -124,18 +158,39 @@ The extension can send any URL, but DocuElevate will only process:
- `https://example.com/scan.png`
- `https://example.com/diagram.svg`
**Clip Mode** - Any web page can be clipped:
- Articles, blogs, documentation
- Forms, receipts, confirmations
- Social media posts, comments
- Any HTML content with styling
## How It Works
### Architecture
```
URL Mode
┌─────────────┐ ┌──────────────────┐ ┌──────────────┐
│ Browser │ │ Browser Ext. │ │ DocuElevate │
│ Tab │────────▶│ (popup.js) │────────▶│ Server │
│ │ URL │ │ API │
└─────────────┘ └──────────────────┘ Request └──────────────┘
│ Stores config in
│ │ URL │ │ API │ /process-url
└─────────────┘ └──────────────────┘ └──────────────┘
Clip Mode
┌─────────────┐ ┌──────────────────┐ ┌──────────────┐
│ Browser │ Capture │ Browser Ext. │ Convert │ Browser │
│ Tab │────────▶│ (content.js) │────────▶│ printToPDF() │
│ (HTML) │ │ │ │ │
└─────────────┘ └──────────────────┘ └──────────────┘
│ │
│ │ PDF
▼ ▼
┌──────────────────┐ ┌──────────────┐
│ background.js │────────▶│ DocuElevate │
│ │ Upload │ Server │
└──────────────────┘ │ /files/upload│
│ └──────────────┘
│ Stores config
┌──────────────────┐
│ Browser Storage │
@@ -143,7 +198,7 @@ The extension can send any URL, but DocuElevate will only process:
└──────────────────┘
```
### Data Flow
### Data Flow - URL Mode
1. **User initiates send**: Via popup or context menu
2. **Extension gets current URL**: From active tab
@@ -156,15 +211,39 @@ The extension can send any URL, but DocuElevate will only process:
6. **Response returned**: Task ID and status
7. **User notified**: Success or error message displayed
### Data Flow - Clip Mode
1. **User initiates clip**: Via popup or context menu
2. **Extension captures page**:
- Content script extracts HTML with styles
- For selection: captures only selected range
- For full page: captures entire document body
3. **HTML to PDF conversion**:
- Background script creates temporary tab with HTML
- Browser's printToPDF API converts to PDF
- Temporary tab is closed
4. **PDF upload**:
- Extension loads config from storage
- FormData created with PDF blob
- POST to `/api/files/upload` with authentication
5. **DocuElevate processes**:
- Receives PDF file
- Validates and stores
- Enqueues for OCR and metadata extraction
6. **Response returned**: Task ID and status
7. **User notified**: Success or error notification
### Security Flow
The extension implements several security measures:
1. **No direct file access**: Extension only sends URLs, not file contents
2. **User-controlled config**: Server URL and auth stored per-user
3. **HTTPS recommended**: Encourages secure communication
4. **Minimal permissions**: Only requests necessary browser APIs
5. **Server-side validation**: DocuElevate validates all URLs (SSRF protection)
1. **No direct file access**: Extension only sends URLs or generated PDFs
2. **Local PDF generation**: Pages converted to PDF in user's browser, not server-side
3. **User-controlled config**: Server URL and auth stored per-user
4. **HTTPS recommended**: Encourages secure communication
5. **Minimal permissions**: Only requests necessary browser APIs
6. **Server-side validation**: DocuElevate validates all uploads
7. **Content isolation**: Captured HTML processed in isolated context
## Technical Details
@@ -174,9 +253,10 @@ The extension implements several security measures:
- Manifest v3 format (latest standard)
- Minimal permissions requested
- Compatible with Chrome, Edge, and Firefox
- Version 1.1.0 with web clipping support
**popup/**: User interface files
- `popup.html`: Extension popup interface
- `popup.html`: Extension popup interface with mode toggle
- `popup.css`: Styling with modern UI design
- `popup.js`: Configuration and file sending logic
@@ -188,9 +268,9 @@ The extension implements several security measures:
### API Integration
The extension communicates with DocuElevate via the URL upload API:
The extension communicates with DocuElevate via two API endpoints:
**Request Format**:
**URL Mode - Request Format**:
```javascript
POST /api/process-url
Content-Type: application/json
@@ -202,7 +282,7 @@ Cookie: session=<session_value> // if auth enabled
}
```
**Response Format**:
**URL Mode - Response Format**:
```javascript
{
"task_id": "abc-123-def",
@@ -213,7 +293,27 @@ Cookie: session=<session_value> // if auth enabled
}
```
**Error Response**:
**Clip Mode - Request Format**:
```javascript
POST /api/files/upload
Content-Type: multipart/form-data
Cookie: session=<session_value> // if auth enabled
FormData:
file: <PDF Blob> (page-title.pdf)
```
**Clip Mode - Response Format**:
```javascript
{
"task_id": "def-456-ghi",
"status": "processing",
"message": "File uploaded and queued for processing",
"filename": "page-title.pdf"
}
```
**Error Response** (both modes):
```javascript
{
"detail": "Error message explaining what went wrong"
@@ -224,10 +324,12 @@ Cookie: session=<session_value> // if auth enabled
The extension requests these permissions:
- **activeTab**: Get URL of current tab
- **activeTab**: Get URL and content of current tab
- **storage**: Save configuration (server URL, session cookie)
- **contextMenus**: Add "Send to DocuElevate" to right-click menu
- **contextMenus**: Add context menu options for sending/clipping
- **notifications**: Show success/error notifications
- **scripting**: Inject content capture code into web pages
- **host_permissions**: Access page content for clipping (restricted to active tab)
All permissions are used only for stated purposes. No data is collected or transmitted to third parties.