HarshItPDF / README.md
hursheesh's picture
Upload 5 files
4578ce6 verified
|
Raw
History Blame Contribute Delete
2.07 kB
---
title: HarshItPDF
emoji: 🖥️
colorFrom: indigo
colorTo: purple
sdk: gradio
sdk_version: "5.23.3"
python_version: "3.12"
app_file: app.py
pinned: false
---
# HarshItPDF — HF Spaces Gradio (Free Tier)
HarshItPDF is a rebranded, fully-unlocked Stirling-PDF deployed on Hugging Face Spaces Free Tier using Gradio.
## What you get
- **All premium / enterprise features enabled** (3-layer bytecode patch + mock license server)
- **OCR support** (Tesseract pre-installed via `packages.txt`)
- **Gradio splash screen** with JavaScript auto-redirect to the Java backend
- **No credit card required**
## Default login
- **Username:** `admin`
- **Password:** `changeme123`
## How to deploy
1. Create a new **HF Space** → choose **Gradio** as the SDK
2. Upload these files to the repo root:
- `app.py`
- `license_server.py`
- `requirements.txt`
- `packages.txt`
- `README.md`
3. HF builds the environment automatically (~3–5 minutes)
4. Once the Space status shows **Running**, click the **Open** button
5. The splash screen will auto-redirect to the app once the Java backend is ready (~30–60 seconds)
## Files
| File | Purpose |
|---|---|
| `app.py` | Runtime patcher + orchestrator + Gradio UI |
| `license_server.py` | Mock Keygen API on port 7871 |
| `requirements.txt` | Python dependencies (gradio) |
| `packages.txt` | System packages (Java 17 JDK, Tesseract, unzip, wget) |
## Important notes
- **Cold start:** Free CPU Spaces hibernate after ~48 hours of inactivity. First visit after sleep triggers a ~1–2 minute cold start (JAR download + extraction + patching + Java startup).
- **While awake:** The app stays responsive. The Gradio UI proxies to the Java backend via HF Spaces' internal port proxy (`/proxy/7870/`).
- **OCR languages:** English is pre-installed. Add more `tesseract-ocr-*` packages in `packages.txt` if needed.
- **Premium license:** Three independent patches ensure Enterprise status — bytecode flip (`iconst_0→1`), `LicenseKeyChecker` getter override, and Spring bean `runningProOrHigher()→true`.