Skip to content

akshitharsola/QuickPDF

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QuickPDF - Professional Android PDF Viewer

A fast, professional PDF viewer for Android with industry-standard zoom capabilities. QuickPDF provides flawless PDF reading experience with advanced zoom functionality while maintaining a lightweight footprint under 10MB.

Features

Core Features

  • Native PDF Rendering: Uses Android's built-in PdfRenderer API for fast, efficient rendering
  • Professional Zoom Engine: Industry-standard PhotoView library for flawless zoom and pan
  • Smart Navigation: Intelligent page navigation that doesn't interfere with zoomed content reading
  • Perfect Text Reading: Zoom to any level and pan freely without accidental page changes
  • Advanced Gesture Support: Pinch-to-zoom, double-tap, and smooth panning with 60fps performance
  • File Browser Integration: Open PDFs from any source (WhatsApp, email, cloud storage)
  • Reliable Recent Files: URI-based file management for consistent cross-session access
  • Multiple View Modes: Fit-to-width, fit-to-page, and original size with animated transitions

Advanced Features

  • Professional Zoom Controls: Floating overlay with real-time zoom percentage display
  • Smart Touch Handling: Context-aware navigation that prevents interference during reading
  • Enhanced PDF Validation: MIME type + magic number detection for reliable file recognition
  • Optimized Performance: 60fps zoom throttling and hardware-accelerated rendering
  • Material Design: Clean, intuitive interface with AppCompat compatibility
  • Universal File Support: Opens PDFs from any source with robust error handling

Technical Implementation

Architecture

  • MVVM Pattern: Modern Android architecture with ViewModels and LiveData
  • Room Database: Local storage for recent files and bookmarks
  • Kotlin: 100% Kotlin codebase for better performance and safety
  • ViewPager2: Smooth page navigation with efficient memory usage
  • Material Components: Latest Material Design 3 components

Performance Optimizations

  • Professional Zoom Library: PhotoView 2.3.0 for industry-standard performance
  • 60fps Zoom Operations: Smooth, lag-free zoom with hardware acceleration
  • Intelligent Touch Management: Smart gesture delegation between zoom and navigation
  • Memory Efficient: Optimized bitmap handling with PhotoView's advanced caching
  • Background Threading: File operations and rendering happen off the main thread
  • Debounced Events: Reduced CPU overhead during zoom interactions

Permissions

  • Storage Access: Read external storage permission for accessing PDF files
  • File System Access: Uses Android's Storage Access Framework for secure file access

Development

Prerequisites

  • Android Studio Arctic Fox or later
  • Android SDK 24+ (Android 7.0)
  • Kotlin 1.9.24+

Building the Project

git clone <repository-url>
cd QuickPDF
./gradlew build

Running Tests

./gradlew test                     # Unit tests
./gradlew connectedAndroidTest    # Instrumented tests

Project Structure

app/src/main/java/com/example/quickpdf/
├── data/                          # Data layer
│   ├── model/                     # Data models (RecentFile, Bookmark)
│   └── repository/                # Repository pattern implementation
├── ui/                           # UI layer
│   ├── adapters/                 # RecyclerView adapters
│   ├── custom/                   # Professional zoom components
│   │   └── ProfessionalZoomableImageView.kt  # PhotoView-based zoom
│   ├── MainActivity.kt           # Main file browser screen
│   ├── PdfViewerActivity.kt      # Professional PDF viewing screen
│   └── ViewModels & Factories    # MVVM architecture components
├── utils/                        # Utility classes
│   ├── FileUtil.kt              # Enhanced PDF validation
│   ├── PdfRendererUtil.kt       # Robust PDF rendering
│   └── PermissionUtil.kt        # Permission management
└── QuickPDFApplication.kt        # Application class

Dependencies

Core Dependencies

  • AndroidX Core KTX
  • AndroidX AppCompat
  • Material Components
  • AndroidX Activity & Fragment KTX
  • AndroidX Lifecycle (ViewModel & LiveData)
  • AndroidX ViewPager2
  • AndroidX RecyclerView
  • AndroidX ConstraintLayout
  • AndroidX Navigation
  • AndroidX DocumentFile
  • AndroidX Preference KTX
  • Kotlinx Coroutines

Professional Zoom

  • PhotoView 2.3.0: Industry-standard zoom library for flawless pan and zoom

Database

  • AndroidX Room (Runtime, KTX, Compiler)

Testing

  • JUnit
  • AndroidX Test (JUnit & Espresso)

Target Requirements

  • App Size: Under 10MB
  • Minimum SDK: Android 7.0 (API 24)
  • Target SDK: Android 15 (API 35)
  • Java Version: 11

Compatibility

  • Android Versions: 7.0 to 15+ (API 24+)
  • Screen Sizes: Optimized for phones and tablets
  • Orientations: Portrait and landscape support
  • Themes: Light and dark theme support

Performance Benchmarks

  • Cold Start: < 2 seconds
  • PDF Loading: < 3 seconds for typical documents
  • Zoom Performance: 60fps smooth operation
  • Memory Usage: Optimized with PhotoView's advanced bitmap management
  • Gesture Response: < 16ms for immediate touch feedback
  • Page Rendering: < 500ms per page with retry mechanism

Privacy & Security

  • No Network Access: App works completely offline
  • No Data Collection: No analytics or tracking
  • Local Storage Only: All data stored locally on device
  • Secure File Access: Uses Android's Storage Access Framework

Contributors

This project was developed collaboratively:

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/new-feature)
  3. Commit your changes (git commit -am 'Add new feature')
  4. Push to the branch (git push origin feature/new-feature)
  5. Create a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Roadmap

Version 1.0 - Part 1 ✅ (Completed)

  • Core PDF viewing functionality
  • Basic zoom and navigation
  • File management and recent files
  • Material Design interface

Version 1.0 - Part 2 ✅ (Completed - June 29, 2025)

  • Professional zoom engine with PhotoView
  • Fixed page navigation interference during reading
  • Enhanced PDF validation and file management
  • Real-time zoom controls and indicators
  • Optimized performance and smooth 60fps zoom

Version 1.1 (Coming Soon)

  • Text search functionality
  • Page thumbnails grid view
  • Bookmark system with persistent storage
  • Advanced settings panel

Version 1.2 (Future)

  • Annotation support
  • Split-screen viewing
  • Cloud storage integration
  • Print functionality

Support

For bug reports and feature requests, please create an issue on the GitHub repository.

Acknowledgments

  • PhotoView Library: Chris Banes' PhotoView for professional zoom functionality
  • Android's PdfRenderer API: For native PDF processing capabilities
  • Material Design team: For design guidelines and components
  • AndroidX team: For modern Android development components
  • JitPack: For reliable library distribution

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages