Comment créer votre propre centrale PDF en Kotlin sans envoyer de données vers le cloud
Récemment, j'avais besoin de compresser rapidement un lourd document PDF sur mon smartphone. J'ai ouvert Google Play, tapé dans la recherche, et... j'ai été découragé. La plupart des applications sont soit enfouies sous les publicités, soit nécessitent un abonnement, ou — pire encore — envoient votre fichier vers un serveur tiers pour le traitement. Pour les documents contenant des données personnelles ou des rapports de travail, ce n'est tout simplement pas une option.
Sur GitHub, je suis tombé sur le projet PDF Toolkit du développeur Karna14314. C'est un utilitaire entièrement hors ligne pour Android, écrit en Kotlin et Jetpack Compose. Il fait tout ce que font les alternatives payantes, mais suit un principe axé sur la confidentialité : pas d'internet, pas d'analytique, et pas de cloud.
Ce que ce couteau suisse peut faire
L'auteur a intégré pratiquement toutes les opérations de base dont vous pourriez avoir besoin pour travailler avec des documents dans l'application. Si nous décomposons les fonctionnalités par catégorie, nous obtenons une liste intéressante.
Premièrement, il y a les manipulations classiques de pages. Vous pouvez fusionner plusieurs fichiers en un seul (Merge) ou, au contraire, diviser un document en parties. Il y a un éditeur visuel où vous pouvez faire glisser les pages avec votre doigt pour modifier leur ordre, ou simplement supprimer celles dont vous n'avez pas besoin. Pour les fichiers volumineux, il y a la compression sans perte de lisibilité.
Deuxièmement, la conversion. L'application peut transformer des images de votre galerie en PDF et vice versa — extraire les pages du document au format JPG, PNG ou WebP. Il y a même une fonction de numérisation intégrée : vous pointez la caméra, l'application détecte automatiquement les bords de la page et crée une copie numérisée soignée.
Troisièmement, le travail sur le contenu et la sécurité. Vous pouvez ajouter des filigranes, définir des mots de passe sur les fichiers (ou les supprimer si vous connaissez l'ancien), et même signer des documents directement à l'écran. La reconnaissance OCR — extraction de texte à partir d'images — mérite une mention spéciale.
Les rouages techniques
Pour les développeurs Android, PDF Toolkit est intéressant pour son architecture. Le projet est récent, il utilise donc une pile moderne :
- UI : Entièrement en Jetpack Compose suivant les conventions Material Design 3.
- Architecture : MVVM classique combiné avec Clean Architecture. Le code est bien organisé, la logique de traitement des PDF est séparée de la couche UI.
- Traitement des PDF : Utilise PdfBox-Android. C'est un port de la célèbre bibliothèque Apache qui fonctionne de manière fiable sous le capot de l'OS mobile.
- OCR (Reconnaissance de texte) : Ici l'auteur a utilisé une solution intéressante avec des variantes de build.
Trois variantes de build sont disponibles dans le dépôt :
- Play Store : Utilise Google ML Kit pour la reconnaissance de texte. Cela rend l'APK plus petit (environ 40 Mo sont téléchargés au premier lancement), mais ajoute une dépendance au service propriétaire de Google.
- F-Droid / Opensource : Ces versions utilisent Tesseract (bibliothèque tess-two). C'est un moteur entièrement open source qui fonctionne à 100 % hors ligne. Parfait pour ceux qui veulent une indépendance maximale vis-à-vis des fournisseurs.
Les coroutines et Flow sont utilisées pour les tâches asynchrones, et le stockage local des données (comme l'historique des opérations) repose sur Room et DataStore.
Pourquoi ça vaut la peine d'étudier
Si vous programmez en Kotlin, le projet est un excellent exemple de comment travailler avec des fichiers lourds et des images dans Android. Dans le code, vous pouvez trouver des implémentations de CameraX pour la numérisation de documents ou l'utilisation d'AndroidX Ink pour les annotations et signatures.
La gestion des images est implémentée de manière intéressante. Le projet utilise plusieurs bibliothèques populaires à la fois : Coil pour le chargement, Glide pour des tâches spécifiques, et uCrop pour recadrer les images avant de les insérer dans le PDF.
À qui ce projet sera utile
Si vous cherchez une application prête à l'emploi pour vous-même, PDF Toolkit est un outil honnête sans pièges cachés. Il ne demande pas l'accès à internet (la permission n'est tout simplement pas dans le manifest), ce qui signifie que vos fichiers ne peuvent physiquement pas quitter votre appareil.
Pour les développeurs, c'est un modèle d'application prêt à l'emploi avec une architecture correcte. Vous pouvez forker le dépôt et ajouter, par exemple, l'export vers d'autres formats ou un traitement spécifique des métadonnées.
Le projet est activement développé, l'auteur est ouvert aux pull requests. La seule condition : pour compiler à partir des sources, vous aurez besoin d'Android Studio Hedgehog ou plus récent et de JDK 17.
Compiler le projet est simple :
git clone https://github.com/Karna14314/Pdf_Tools.git
cd Pdf_Tools
# Если нужен полностью открытый вариант без Google-сервисов:
./gradlew assembleOpensourceRelease
Au final, nous avons un projet open source solide qui résout un vrai problème de confidentialité. Dans un monde où une application sur deux essaie de collecter des données vous concernant, des utilitaires comme celui-ci sont un souffle d'air frais.
Projets similaires