HarshItPDF / README.md
hursheesh's picture
Upload 5 files
4578ce6 verified
|
Raw
History Blame Contribute Delete
2.07 kB

A newer version of the Gradio SDK is available: 6.24.0

Upgrade
metadata
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.