Bouw je eigen PDF-powerhouse in Kotlin zonder data naar de cloud te sturen
Onlangs moest ik snel een zwaar PDF-document comprimeren op mijn smartphone. Ik opende Google Play, typte in de zoekbalk, en... raakte ontmoedigd. De meeste apps zijn ofwel begraven onder advertenties, vereisen een abonnement, of — erger nog — sturen je bestand naar een externe server voor verwerking. Voor documenten met persoonlijke gegevens of werkrapporten is dit simpelweg geen optie.
Op GitHub vond ik het PDF Toolkit-project van ontwikkelaar Karna14314. Het is een volledig offline hulpprogramma voor Android, geschreven in Kotlin en Jetpack Compose. Het doet alles wat betaalde alternatieven doen, maar volgt een privacy-first principe: geen internet, geen analytics en geen cloud.
Wat dit Zwitserse zakmes allemaal kan
De auteur heeft vrijwel alle basisbewerkingen die je nodig hebt bij het werken met documenten in de app verwerkt. Als we de functies per categorie opsplitsen, krijgen we een aardige lijst.
Ten eerste zijn er klassieke pagina-manipulaties. Je kunt meerdere bestanden samenvoegen tot één (Merge) of, omgekeerd, een document opsplitsen in delen. Er is een visuele editor waar je pagina's met je vinger kunt verslepen om hun volgorde te wijzigen, of simpelweg de pagina's kunt verwijderen die je niet nodig hebt. Voor zware bestanden is er compressie zonder verlies van leesbaarheid.
Ten tweede is er conversie. De app kan afbeeldingen uit je galerij omzetten naar PDF en vice versa — documentpagina's extraheren in JPG-, PNG- of WebP-formaat. Er is zelfs een ingebouwde scanfunctie: je richt de camera, de app vindt zelf de randen van de pagina, en maakt een nette scan.
Ten derde is er werk met inhoud en beveiliging. Je kunt watermerken toevoegen, wachtwoorden instellen op bestanden (of ze verwijderen als je het oude kent), en zelfs documenten ondertekenen direct op het scherm. OCR — tekstherkenning uit afbeeldingen — verdient een speciale vermelding.
Technische interne werking
Voor Android-ontwikkelaars is PDF Toolkit interessant vanwege zijn architectuur. Het project is recent, dus het gebruikt een moderne stack:
- UI: Volledig op Jetpack Compose volgens de Material Design 3-conventies.
- Architectuur: Klassieke MVVM gecombineerd met Clean Architecture. De code is netjes georganiseerd, PDF-verwerkingslogica is gescheiden van de UI-laag.
- PDF-verwerking: Gebruikt PdfBox-Android. Dit is een port van de bekende Apache-bibliotheek die betrouwbaar werkt onder de motorkap van het mobiele besturingssysteem.
- OCR (Tekstherkenning): Hier gebruikte de auteur een interessante oplossing met build flavors.
Drie build-varianten zijn beschikbaar in de repository:
- Play Store: Gebruikt Google ML Kit voor tekstherkenning. Dit maakt de APK kleiner (ongeveer 40 MB wordt gedownload bij de eerste start), maar voegt een afhankelijkheid toe van Googles proprietaire service.
- F-Droid / Opensource: Deze versies gebruiken Tesseract (tess-two-bibliotheek). Dit is een volledig open engine die 100% offline werkt. Perfect voor degenen die maximale leveranciersonafhankelijkheid willen.
Coroutines en Flow worden gebruikt voor asynchrone taken, en lokale gegevensopslag (zoals bewerkingsgeschiedenis) is gebaseerd op Room en DataStore.
Waarom het de moeite waard is om te bestuderen
Als je in Kotlin schrijft, is het project een goed voorbeeld van hoe je met zware bestanden en afbeeldingen werkt in Android. In de code vind je implementaties van CameraX voor document scannen of gebruik van AndroidX Ink voor annotaties en handtekeningen.
Afbeeldingsverwerking is interessant geïmplementeerd. Het project gebruikt tegelijkertijd verschillende populaire bibliotheken: Coil voor laden, Glide voor specifieke taken, en uCrop voor het bijsnijden van afbeeldingen voordat ze in PDF worden ingevoegd.
Voor wie is dit project nuttig
Als je op zoek bent naar een kant-en-klare app voor jezelf, is PDF Toolkit een eerlijk hulpmiddel zonder verborgen addertjes onder het gras. Het vraagt niet om internettoegang (de permissie ontbreekt simpelweg in het manifest), wat betekent dat je bestanden fysiek je apparaat niet kunnen verlaten.
Voor ontwikkelaars is dit een kant-en-klaar app-sjabloon met de juiste architectuur. Je kunt de repository forken en bijvoorbeeld export naar andere formaten of specifieke metadat Verwerking toevoegen.
Het project wordt actief ontwikkeld, de auteur staat open voor pull requests. Enige aandachtspunt: om vanaf de bron te bouwen, heb je Android Studio Hedgehog of nieuwer en JDK 17 nodig.
Het bouwen van het project is eenvoudig:
git clone https://github.com/Karna14314/Pdf_Tools.git
cd Pdf_Tools
# Если нужен полностью открытый вариант без Google-сервисов:
./gradlew assembleOpensourceRelease
Uiteindelijk hebben we een solide open source-project dat een echt privacyprobleem oplost. In een wereld waar elke andere app probeert gegevens over je te verzamelen, zijn hulpprogramma's zoals dit een verademing.
Gerelateerde projecten