クラウドにデータを送らずにKotlinで独自のPDFパワーハウスを構築する方法
最近、スマートフォンの重いPDFドキュメントを素早く圧縮する必要がありました。Google Playを開き、検索欄に打ち込むと...げんなりしました。大半のアプリ要么は広告の海に埋もれ,要么はサブスクリプションが必要,または最悪の場合,ファイルを処理するためにサードパーティのサーバーに送信する必要があります。個人データや業務レポートを含むドキュメントにとっては,これは単なる選択肢の問題ではありません。
GitHubで,开发者Karna14314によるPDF Toolkitプロジェクトを見つけました。KotlinとJetpack Composeで書かれた,Android向けの完全にオフライン対応のユーティリティです。有料替代品と同じことをすべて実行できますが,プライバシーファーストの原則に従っています:インターネットなし,解析なし,クラウドなし。
この瑞士軍刀何ができるのか
著者は,ドキュメント操作時に必要なほぼすべての基本機能をアプリに詰め込みました。機能をカテゴリ別に分類すると,相当なリストになります。
まず,古典的なページ操作です。複数のファイルを1つにマージ(Merge)したり,逆にドキュメントを分割したりできます。視覚的なエディタでは,指でページをドラッグして順序を変更したり,不要なページを削除したりできます。重いファイル向けには,可読性を損なわない圧縮機能も 있습니다。
次に,変換です。アプリではギャラリーからPDFへの画像変換とその逆(jpg、png、webp形式でドキュメントページを抽出)が可能です。組み込みのスキャン機能も值得一提:カメラを向けると,アプリが自動でページのエッジを検出し,整ったスキャンを生成します。
第三に,コンテンツ作業とセキュリティです。透かしの追加,ファイルへのパスワード設定(古いパスワードがわかれば解除も可能),画面上での直接署名もできます。OCR(画像からのテキスト認識)は特筆 заслуживает отдельного упоминания.
技術的内部構造
Android開発者にとって,PDF Toolkitはアーキテクチャの点で興味深いです。プロジェクトは新しいので,モダンなスタックを使用しています:
- UI:Material Design 3の規約に従い,完全にJetpack Composeで構築。
- アーキテクチャ:Clean Architectureと組み合わせたクラシックなMVVM。コードは整理されており,PDF処理ロジックはUI層から分離されています。
- PDF処理:PdfBox-Androidを使用。これは有名なApacheライブラリの移植版で,モバイルOSの上で確実に動作します。
- OCR(テキスト認識):ここではビルドフレーバーを使用した興味深いソリューションを採用しています。
リポジトリでは3つのビルドバリアントが利用可能です:
- Play Store:テキスト認識にGoogle ML Kitを使用。これによりAPKが小さくなります(初回の起動時に約40MBがダウンロードされます)が,Googleのproprietaryサービスへの依存が発生します。
- F-Droid / Opensource:これらのバージョンではTesseract(tess-twoライブラリ)を使用。これは完全にオープンなエンジンで,100%オフラインで動作します。ベンダーへの依存を最小限に抑えたい人に最適です。
非同期タスクにはCoroutinesとFlowを使用し,当地データ存储(操作履歴など)はRoomとDataStoreに依存しています。
学ぶ価値がある理由
Kotlinで書いているなら,このプロジェクトはAndroidでの重いファイルと画像の扱い方の素晴らしい例です。コードでは,ドキュメントスキャン用のCameraXや注釈・署名用のAndroidX Inkの実装が見つかります。
画像処理の実装も興味深いです。プロジェクトでは複数の人気ライブラリを同時に使用しています:読み込みにCoil,特定のタスクにGlide,PDFに挿入する前の画像切り抜きにuCrop。
誰にとって有用か
自分用の готовыйアプリを探しているなら,PDF Toolkitは隠れたトラップのない正直なツールです。インターネットアクセスを要求しません(manifestに単に許可がないため),つまりファイルが物理的にデバイスから離れることがありません。
開発者にとって,这是適切なアーキテクチャを備えた готовыйアプリテンプレートです。リポジトリをforkして,例えば他のフォーマットへのエクスポートや特定のメタデータ処理などを追加できます。
プロジェクトは активно разрабатывается,著者はpull requestsにオープンです。唯一の注意点:ソースからビルドするには,Android Studio Hedgehog以降とJDK 17が必要です。
プロジェクトのビルドは簡単です:
git clone https://github.com/Karna14314/Pdf_Tools.git
cd Pdf_Tools
# Если нужен полностью открытый вариант без Google-сервисов:
./gradlew assembleOpensourceRelease
結局のところ,これは実際のプライバシーの問題を解決する堅実なオープンソースプロジェクトです。ほとんどのアプリがデータを収集しようとする世界で,このようなユーティリティは新鮮な風です。
関連プロジェクト