Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Guide BentoPDF Local - Utilisation 100% locale sans hébergement

Un guide simple pour utiliser BentoPDF directement dans votre navigateur, entièrement en local et sans installation de serveur permanent.

📋 Table des matières

Introduction

Ce guide vous permet d'utiliser BentoPDF, une suite d'outils PDF complète, directement dans votre navigateur sans jamais envoyer vos fichiers sur internet. Tout le traitement se fait localement sur votre machine.

Avantages :

  • ✅ 100% privé - vos fichiers ne quittent jamais votre ordinateur
  • ✅ Pas d'inscription requise
  • ✅ Pas d'hébergement permanent
  • ✅ La plupart des outils fonctionnent (fusion, découpe, compression, signature, OCR, etc.)

Prérequis

  • Un ordinateur (Windows, macOS ou Linux)
  • Une connexion internet (uniquement pour le téléchargement initial)
  • Un navigateur web moderne (Chrome, Firefox, Edge, Safari)

Installation

Étape 1 : Installer Python

  1. Rendez-vous sur le site officiel de Python : https://www.python.org/downloads/
  2. Téléchargez la dernière version stable (bouton "Download Python 3.x.x")
  3. Lancez l'installateur
  4. ⚠️ IMPORTANT : Cochez la case "Add Python to PATH" avant de cliquer sur "Install Now"
  5. Suivez les instructions d'installation par défaut

Pour vérifier que Python est bien installé, ouvrez un terminal (PowerShell ou CMD sur Windows, Terminal sur macOS/Linux) et tapez :

python --version

Vous devriez voir s'afficher quelque chose comme Python 3.12.0.

Étape 2 : Télécharger BentoPDF

  1. Rendez-vous sur la page des releases de BentoPDF : https://github.com/alam00000/bentopdf/releases

  2. Cherchez la dernière version stable (la plus récente en haut de la liste)

  3. Dans la section "Assets", téléchargez le fichier qui commence par dist et se termine par .zip

    Exemple : dist-2.8.7.zip

Étape 3 : Extraire et préparer

  1. Créez un dossier où vous voulez installer BentoPDF (par exemple C:\BentoPDF ou ~/BentoPDF)
  2. Extrayez le contenu du fichier .zip téléchargé dans ce dossier
  3. Supprimez le fichier .zip (vous n'en avez plus besoin)
  4. Dans ce même dossier, créez un nouveau fichier texte
  5. Copiez le code Python suivant et collez-le dans ce fichier :
import http.server
import socketserver
import mimetypes
import os
import sys

# Types MIME personnalisés
mimetypes.add_type("application/javascript", ".js")
mimetypes.add_type("application/javascript", ".mjs")
mimetypes.add_type("application/wasm", ".wasm")
mimetypes.add_type("font/woff2", ".woff2")
mimetypes.add_type("text/html", ".html")
mimetypes.add_type("application/octet-stream", ".data")

# Essayer d'importer brotli (facultatif, pour les fichiers .br)
try:
    import brotli
    HAS_BROTLI = True
except ImportError:
    HAS_BROTLI = False

class BentoHandler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self):
        path = self.translate_path(self.path)
        
        # 1) Fichier .br : le décompresser à la volée
        if HAS_BROTLI and os.path.exists(path + ".br"):
            self.send_response(200)
            mime, _ = mimetypes.guess_type(path)
            self.send_header("Content-Type", mime or "application/octet-stream")
            self.send_header("Cross-Origin-Opener-Policy", "same-origin")
            self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
            self.send_header("Cross-Origin-Resource-Policy", "same-origin")
            self.send_header("Cache-Control", "no-cache")
            self.end_headers()
            with open(path + ".br", "rb") as f:
                self.wfile.write(brotli.decompress(f.read()))
            return

        # 2) Fichier .gz : servir avec Content-Encoding pour décompression auto
        if os.path.exists(path + ".gz") and not os.path.exists(path):
            self.send_response(200)
            mime, _ = mimetypes.guess_type(path)
            self.send_header("Content-Type", mime or "application/octet-stream")
            self.send_header("Content-Encoding", "gzip")
            self.send_header("Cross-Origin-Opener-Policy", "same-origin")
            self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
            self.send_header("Cross-Origin-Resource-Policy", "same-origin")
            self.send_header("Cache-Control", "no-cache")
            self.end_headers()
            with open(path + ".gz", "rb") as f:
                self.wfile.write(f.read())
            return

        # 3) Fichier normal : on ajoute juste les en-têtes de sécurité
        super().do_GET()

    def end_headers(self):
        # Appliqués à TOUTE requête
        self.send_header("Cross-Origin-Opener-Policy", "same-origin")
        self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
        self.send_header("Cross-Origin-Resource-Policy", "same-origin")
        super().end_headers()

socketserver.TCPServer.allow_reuse_address = True
try:
    with socketserver.TCPServer(("127.0.0.1", 8000), BentoHandler) as httpd:
        print("\n" + "=" * 60)
        print(" BentoPDF Local Server")
        print("=" * 60)
        print(f" Brotli support: {'enabled' if HAS_BROTLI else 'disabled (pip install brotli)'}")
        print(" URL     : http://localhost:8000")
        print(" Ctrl+C  : pour arrêter")
        print("=" * 60 + "\n")
        httpd.serve_forever()
except KeyboardInterrupt:
    print("\nServeur arrêté.")
  1. Enregistrez ce fichier avec l'extension .py (par exemple serveur-bentopdf.py)

Étape 4 : Lancer le serveur local

  1. Lancez le script Python que vous venez de créer :

    python serveur-bentopdf.py
  2. Vous devriez voir s'afficher :

    ============================================================
     BentoPDF Local Server
    ============================================================
     Brotli support: disabled (pip install brotli)
     URL     : http://localhost:8000
     Ctrl+C  : pour arrêter
    ============================================================
    

Étape 5 : Accéder à BentoPDF

  1. Ouvrez votre navigateur web
  2. Dans la barre d'adresse, tapez : http://localhost:8000
  3. Appuyez sur Entrée
  4. BentoPDF est maintenant accessible localement !

Utilisation

Une fois sur http://localhost:8000, vous avez accès à l'interface complète de BentoPDF avec tous les outils disponibles :

  • Fusionner plusieurs PDF
  • Découper un PDF en plusieurs parties
  • Compresser pour réduire la taille
  • Signer électroniquement
  • Convertir des images en PDF
  • OCR (reconnaissance de texte)
  • Et bien plus encore...

Tous les fichiers que vous traitez restent sur votre ordinateur et ne sont jamais envoyés sur internet.

Limitations

Avec cette méthode d'installation simple, la plupart des outils fonctionnent parfaitement, mais certains outils avancés peuvent ne pas fonctionner :

  • Word/Excel/PowerPoint → PDF : Ces conversions nécessitent LibreOffice en WebAssembly qui requiert une configuration serveur plus complexe
  • Certains formats de conversion Office : ODT, RTF, etc.

Pour une installation complète avec TOUS les outils fonctionnels, vous devrez utiliser Docker (voir la documentation officielle).

Arrêt du serveur

Pour arrêter le serveur local :

  1. Retournez dans le terminal où le script Python est en cours d'exécution
  2. Appuyez sur Ctrl+C
  3. Le serveur s'arrête immédiatement

Vous pouvez redémarrer le serveur à tout moment en relançant le script Python (étape 4).

Support Brotli (optionnel)

Si vous voulez activer le support Brotli pour de meilleures performances :

  1. Ouvrez un terminal
  2. Tapez :
    pip install brotli
  3. Relancez le serveur

Dépannage

Le navigateur affiche une page blanche :

  • Vérifiez que le serveur Python est bien lancé dans le terminal
  • Vérifiez que vous accédez bien à http://localhost:8000

Erreur "Port 8000 already in use" :

  • Un autre programme utilise déjà ce port
  • Modifiez le numéro de port dans le script Python (ligne socketserver.TCPServer(("127.0.0.1", 8000), BentoHandler)) par un autre numéro comme 8080 ou 9000

Un outil ne fonctionne pas :

  • Consultez la section Limitations pour voir si cet outil nécessite Docker

Licence

BentoPDF est distribué sous double licence AGPL-3.0 et licence commerciale. Consultez le dépôt officiel pour plus d'informations.


Crédits : Ce guide est basé sur le projet BentoPDF par alam00000.

About

Guide complet pour utiliser BentoPDF en local dans votre navigateur - Installation simple avec Python, 100% privé, sans hébergement permanent, la plupart des outils PDF fonctionnent hors ligne

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages