Application PDF tout-en-un Android — 100 % locale, sans tracker, sans compte obligatoire.
PDF Tech regroupe 23 outils PDF dans une seule application Flutter Android. Tous les traitements s'effectuent sur l'appareil. Aucune donnée n'est transmise à un serveur, sauf action explicite de l'utilisateur (partage, export Google Drive optionnel, vérification de mise à jour anonyme via GitHub Releases).
Distribution : l'application est publiée sur GitHub Releases. Elle n'est pas distribuée via Google Play Store.
Version actuelle : 1.13.3.
23 outils intégrés :
- Lecteur PDF (zoom, recherche, signets, table des matières, mode nuit, reprise de page)
- Fusionner plusieurs PDFs
- Diviser un PDF
- Protéger par mot de passe (chiffrement AES-256)
- Déchiffrer / supprimer un mot de passe
- Pivoter des pages
- Ajouter un filigrane texte
- Créer un PDF (titres, listes, code, images, liens)
- Compresser un PDF
- Signature électronique manuscrite
- Remplir un formulaire PDF
- OCR — reconnaissance de texte avec Tesseract (modèles
fra+englocaux) - Supprimer des pages
- Réorganiser des pages
- Exporter les images d'un PDF
- Modifier les métadonnées (titre, auteur, sujet, mots-clés)
- Numéroter les pages
- Tampon (Bates, brouillon, etc.)
- En-tête / pied de page
- Extraire les images d'un PDF
- Comparer deux PDFs
- Convertir Images → PDF
- Annoter un PDF
Depuis la version 1.13.x, le picker PDF propose un explorateur de dossiers intégré :
- Mode sécurisé par défaut : utilisation du sélecteur système Android (SAF) sans accès global au stockage.
- Mode explorateur complet (optionnel) : scan direct du dossier
Downloadet navigation dans le stockage externe via une grille de dossiers colorés. Nécessite l'activation explicite dans les paramètres et la permissionMANAGE_EXTERNAL_STORAGE.
- Chiffrement des métadonnées : fichiers récents, dernières pages lues, cache de mise à jour et préférences stockés dans
FlutterSecureStorage(Keychain/Keystore). - Permission d'accès stockage optionnelle :
MANAGE_EXTERNAL_STORAGEn'est demandée que si l'utilisateur active explicitement le « mode explorateur complet » dans les paramètres. Par défaut, l'application utilise le sélecteur système Android (SAF). - Anti path-traversal :
canonicalFile+ liste blancheallowedRootscôté Kotlin pour tout accèsfile://. - Magic-bytes + cap 200 Mo : validation du type réel des fichiers ouverts (sniffing en-tête, pas seulement extension).
- FileProvider restrictif :
file_paths.xmllimité aux dossiers nécessaires,grantUriPermissionsciblé. - Build release durci : keystore dédié via variables d'environnement
PDFTECH_*, signing v2/v3 (v1 désactivée), R8 + shrinking + obfuscation. - Network Security Config strict :
usesCleartextTraffic="false", NSC ne whiteliste que les domaines GitHub et Google nécessaires. - Pas de backup ADB :
allowBackup="false",dataExtractionRulesvide. - RASP léger : avertissement à l'utilisateur si un système rooté est détecté (détection native Kotlin, non bloquante).
Politique de signalement : voir SECURITY.md. Vérification SHA-256 publiée pour chaque APK release.
| Permission | Justification |
|---|---|
INTERNET |
Vérification de mise à jour via API GitHub Releases publique (HTTPS, anonyme). Activée également si l'utilisateur choisit Google Drive (optionnel). |
MANAGE_EXTERNAL_STORAGE (optionnelle) |
Permettre à l'utilisateur de parcourir et d'ouvrir des PDFs hors sandbox de l'app (Téléchargements, Documents, WhatsApp Documents, etc.). Désactivée par défaut : le picker utilise le SAF Android. L'accès complet s'active explicitement dans les paramètres. |
READ_MEDIA_IMAGES n'est pas demandée : la sélection d'images (outil Images → PDF) passe par le SAF / file_picker qui octroie l'accès via URI éphémère.
GitHub Releases — latest — APK signé.
Site officiel : files-tech.com/pdf-tech
100 % local. Aucune télémétrie, aucune collecte de données, aucun partage. Code source ouvert sous Apache 2.0 — auditable.
Voir PRIVACY.md (EN) / PRIVACY.fr.md (FR) et TERMS.md / TERMS.fr.md (FR).
Prérequis : Flutter stable, Android SDK, JDK 17.
git clone https://github.com/gitubpatrice/files_tech_core.git
git clone https://github.com/gitubpatrice/PDF-TECH.git pdf_tech
cd pdf_tech
flutter pub get
flutter build apk --debugPour produire un APK release signé, définir les variables d'environnement de signature (le fichier android/key.properties n'est plus utilisé et ne doit jamais être versionné) :
export PDFTECH_KEY_ALIAS="..."
export PDFTECH_KEY_PASSWORD="..."
export PDFTECH_STORE_FILE="/chemin/absolu/vers/keystore.jks"
export PDFTECH_STORE_PASSWORD="..."
flutter build apk --releaseSans ces variables, flutter build apk --release échoue explicitement pour éviter qu'un APK debug ne soit livré par erreur.
All-in-one Android PDF app — 100 % local, no tracker, no mandatory account.
PDF Tech bundles 23 PDF tools into a single Flutter Android app. All processing happens on the device. No data is sent to any server unless the user explicitly chooses to (share, optional Google Drive export, anonymous update check via GitHub Releases).
Distribution : the app is published on GitHub Releases. It is not distributed through the Google Play Store.
Current version : 1.13.3.
23 built-in tools:
- PDF reader (zoom, search, bookmarks, table of contents, night mode, page resume)
- Merge multiple PDFs
- Split a PDF
- Password protect (AES-256 encryption)
- Decrypt / remove a password
- Rotate pages
- Add text watermark
- Create a PDF (headings, lists, code, images, links)
- Compress a PDF
- Handwritten electronic signature
- Fill PDF forms
- OCR — text recognition with Tesseract (local
fra+engmodels) - Delete pages
- Reorder pages
- Export images from a PDF
- Edit metadata (title, author, subject, keywords)
- Number pages
- Stamp (Bates, draft, etc.)
- Header / footer
- Extract images from a PDF
- Compare two PDFs
- Convert Images → PDF
- Annotate a PDF
From version 1.13.x, the PDF picker provides a built-in folder browser:
- Secure default mode : uses the Android system picker (SAF) without global storage access.
- Full browser mode (optional) : direct scan of the
Downloadfolder and browsing of external storage with a colored folder grid. Requires explicit activation in settings and theMANAGE_EXTERNAL_STORAGEpermission.
- Encrypted metadata : recent files, last read pages, update cache and preferences are stored in
FlutterSecureStorage(Keychain/Keystore). - Optional storage permission :
MANAGE_EXTERNAL_STORAGEis only requested if the user explicitly enables the "full file browser mode" in settings. By default, the app uses the Android system picker (SAF). - Anti path-traversal :
canonicalFile+allowedRootswhitelist on the Kotlin side for everyfile://access. - Magic-bytes + 200 MB cap : real file-type validation (header sniffing, not just extension).
- Restrictive FileProvider :
file_paths.xmllimited to required folders, targetedgrantUriPermissions. - Hardened release build : dedicated keystore via
PDFTECH_*environment variables, signing v2/v3 (v1 disabled), R8 + shrinking + obfuscation. - Strict Network Security Config :
usesCleartextTraffic="false", NSC only whitelists required GitHub and Google domains. - No ADB backup :
allowBackup="false", emptydataExtractionRules. - Light RASP : warning shown if a rooted system is detected (native Kotlin detection, non-blocking).
Disclosure policy: see SECURITY.md. SHA-256 checksum is published for every release APK.
| Permission | Justification |
|---|---|
INTERNET |
Update check via public GitHub Releases API (HTTPS, anonymous). Also used if the user chooses Google Drive (optional). |
MANAGE_EXTERNAL_STORAGE (optional) |
Let the user browse and open PDFs outside the app sandbox (Downloads, Documents, WhatsApp Documents, etc.). Disabled by default: the picker uses the Android SAF. Full access is explicitly enabled in settings. |
READ_MEDIA_IMAGES is not requested: image selection (Images → PDF tool) uses SAF / file_picker which grants access through a temporary URI.
GitHub Releases — latest — signed APK.
Official website: files-tech.com/pdf-tech
100 % local. No telemetry, no data collection, no sharing. Open-source under Apache 2.0 — auditable.
See PRIVACY.md (EN) / PRIVACY.fr.md (FR) and TERMS.md / TERMS.fr.md (FR).
Requirements: Flutter stable, Android SDK, JDK 17.
git clone https://github.com/gitubpatrice/files_tech_core.git
git clone https://github.com/gitubpatrice/PDF-TECH.git pdf_tech
cd pdf_tech
flutter pub get
flutter build apk --debugTo produce a signed release APK, set the signing environment variables (the android/key.properties file is no longer used and must never be committed):
export PDFTECH_KEY_ALIAS="..."
export PDFTECH_KEY_PASSWORD="..."
export PDFTECH_STORE_FILE="/absolute/path/to/keystore.jks"
export PDFTECH_STORE_PASSWORD="..."
flutter build apk --releaseWithout these variables, flutter build apk --release fails explicitly to prevent a debug APK from being shipped by mistake.
Apache License 2.0 — see also NOTICE and THIRD_PARTY_NOTICES.md.