OpenMark is a comprehensive PDF visualization solution with annotation capabilities, designed for enterprise integration. It enables your applications to display PDF documents with virtual sticky notes and text highlighting features through a simple REST API.

| Document | Description |
|---|---|
| Architecture | System architecture, integration flow, and JWT token structure |
| Installation | Installation guide for development and production |
| Configuration | Configuration options and examples |
| API Reference | Complete REST API documentation |
| Plugin Development | Guide for creating custom plugins |
| Plugin Configurations | Configuration for all built-in plugins |
| Scripts Administration | CLI scripts for user and annotation management |
| Annotations Import/Export | Import and export annotations via CLI |
| Testing | Automated testing guide with pytest |
graph LR
subgraph "Your Application"
CLIENT[👤 Client Browser]
SERVER[🖥️ Your Server]
end
subgraph "OpenMark"
OM[📄 OpenMark<br/>Docker Container]
end
subgraph "Storage"
PDF[(📁 PDF Repository)]
DB[(💾 Database)]
end
SERVER -->|1. POST /api/quickView| OM
OM -->|2. Return DAT + viewUrl| SERVER
SERVER -->|3. Send viewer URL| CLIENT
CLIENT -->|4. Load viewer| OM
OM -->|5. Fetch PDF| PDF
OM -->|6. Load/Save annotations| DB
style CLIENT fill:#e1f5fe
style SERVER fill:#fff3e0
style OM fill:#e8f5e9
style PDF fill:#fce4ec
style DB fill:#f3e5f5
Integration Flow:
# Pull the official image
docker pull gluk46546546/openmark:latest
# Run with default configuration
docker run -d -p 5000:5000 gluk46546546/openmark:latest
# Or with custom configuration
docker run -d -p 5000:5000 \
-v ./config.json:/app/config.json:ro \
gluk46546546/openmark:latest
version: "3.8"
services:
openmark:
image: gluk46546546/openmark:latest
ports:
- "5000:5000"
volumes:
- ./config.json:/app/config.json:ro
- ./data:/app/data
cd dev
docker-compose up -d
For detailed installation instructions, see Installation Guide.
| Plugin | Description |
|---|---|
| Local | JSON file-based authentication for development and small deployments |
| MongoDB | Scalable authentication with MongoDB for multi-instance deployments |
| PostgreSQL | ACID-compliant authentication with PostgreSQL |
| OAuth 2.0 | Integrate with Google, GitHub, Microsoft, or custom OAuth providers |
| SAML SSO | Enterprise Single Sign-On with SAML 2.0 Identity Providers |
| Plugin | Description |
|---|---|
| HTTP/HTTPS | Retrieve PDFs from any HTTP endpoint |
| AWS S3 | Retrieve PDFs from S3 buckets (also works with MinIO, LocalStack) |
| Local Filesystem | Retrieve PDFs from local directories or mounted volumes |
| WebDAV | Retrieve PDFs from Nextcloud, ownCloud, or any WebDAV server |
| FTP/FTPS | Retrieve PDFs from FTP servers with optional TLS encryption |
| SFTP | Retrieve PDFs over SSH from any Linux/Unix server |
| CMIS | Retrieve PDFs from ECM systems (Alfresco, Nuxeo, SharePoint, etc.) |
| Plugin | Description |
|---|---|
| Local | JSON file storage (development only) |
| MongoDB | Scalable annotation storage with MongoDB |
| PostgreSQL | JSONB-based annotation storage with PostgreSQL |
For plugin configuration details, see Plugin Configurations.
Create a config.json file:
{
"server": {
"host": "0.0.0.0",
"port": 5000,
"secret_key": "your-secret-key-min-32-characters"
},
"plugins": {
"authentication": {
"type": "local",
"config": { "users_file": "./data/users.json" }
},
"pdf_source": {
"type": "http",
"config": { "base_url": "https://your-pdf-server.com/" }
},
"annotations": {
"type": "local",
"config": { "storage_path": "./data/annotations.json" }
}
}
}
For detailed configuration options, see Configuration Guide.
import requests
OPENMARK_URL = "https://your-openmark-server.com"
# One-step authentication and document request
response = requests.post(f"{OPENMARK_URL}/api/quickView", json={
"username": "user",
"password": "password",
"documentId": "invoice_001"
})
data = response.json()
viewer_url = OPENMARK_URL + data["viewUrl"]
# Send this URL to your client application
# The viewer URL contains a JWT token valid for 2 hours
print(f"Open in browser or iframe: {viewer_url}")
For complete API documentation, see API Reference.
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)This project is licensed under the MIT License - see the LICENSE file for details.
For support, please open an issue on GitHub.
Content type
Image
Digest
sha256:3318f2d6a…
Size
144.5 MB
Last updated
5 months ago
docker pull gluk46546546/openmark