pdf_reading_tracker
A complete Flutter PDF Reader and PDF Operations package.
Render PDFs, track reading progress, manage bookmarks, upload PDFs from the device, continue reading from where users left off, merge PDFs, split PDFs, and persist everything locally using SQLite.
Built on top of:
- ALH PDF View (Rendering)
- SQLite (Persistence)
- Syncfusion PDF (PDF Operations)
Features
PDF Reading
- PDF rendering via ALH PDF View
- Horizontal page navigation
- Double-tap zoom support
- Jump to page navigation
- Resume from last opened page
- Multi-PDF support
User PDF Management
- Pick PDFs from device storage
- Persistent PDF library
- Continue Reading dashboard
- Recent PDFs section
- Automatic PDF restoration after app restart
Reading Progress
- Automatic progress tracking
- Accurate progress percentage calculation
- Resume from last page
- SQLite-backed persistence
- Works across uploaded, merged, and split PDFs
Bookmarks
- Add bookmarks
- Remove bookmarks
- Bookmark persistence
- Bookmark support for uploaded PDFs
- Bookmark support for merged PDFs
- Bookmark support for split PDFs
PDF Operations
- Merge multiple PDFs
- Split PDFs into smaller files
- Isolate-based PDF processing
- Typed exception handling
- Syncfusion PDF powered operations
Architecture
- Offline-first design
- SQLite-backed persistence
- Service-based architecture
- Flutter package friendly
- Extensible for future PDF features
Platform Support
| Android | iOS |
|---|---|
| ✅ | ✅ |
Installation
dependencies:
pdf_reading_tracker: ^2.1.0
Android Setup
The package depends on ALH PDF View which uses JitPack internally.
Add JitPack to your Android repositories.
build.gradle
allprojects {
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
settings.gradle.kts
dependencyResolutionManagement {
repositoriesMode.set(
RepositoriesMode.FAIL_ON_PROJECT_REPOS
)
repositories {
google()
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}
Import
import 'package:pdf_reading_tracker/pdf_reading_tracker.dart';
PDF Reader Widget
The easiest way to use the package.
PdfReadingTrackerViewer(
pdfId: 'clean_architecture_v1',
pdfTitle: 'Clean Architecture',
assetPath: 'assets/docs/clean_architecture.pdf',
)
Advanced Reader Configuration
PdfReadingTrackerViewer(
pdfId: 'clean_architecture_v1',
pdfTitle: 'Clean Architecture',
assetPath: 'assets/docs/clean_architecture.pdf',
showAppBar: true,
showBottomBar: true,
showBookmarkFab: true,
swipeHorizontal: true,
enableDoubleTap: true,
onPageChanged: (page, totalPages) {
print('Current page: $page');
},
theme: PdfViewerTheme(
appBarBackgroundColor: Colors.indigo,
appBarForegroundColor: Colors.white,
),
)
Progress Tracking API
Save Progress
await PdfReadingTracker.saveProgress(
ReadingProgress.create(
pdfId: 'pdf_001',
currentPage: 25,
totalPages: 100,
title: 'Flutter Notes',
),
);
Get Progress
final progress =
await PdfReadingTracker.getProgress('pdf_001');
Get All Progress
final allProgress =
await PdfReadingTracker.getAllProgress();
Bookmark API
Add Bookmark
await PdfReadingTracker.addBookmark(
Bookmark.create(
pdfId: 'pdf_001',
page: 25,
note: 'Important concept',
),
);
Get Bookmarks
final bookmarks =
await PdfReadingTracker.getBookmarks('pdf_001');
Remove Bookmark
await PdfReadingTracker.removeBookmark(bookmarkId);
PDF Merge
Merge multiple PDF files into a single PDF.
final mergedPdfPath =
await PdfMergeService.merge(
inputPaths: [
pdf1,
pdf2,
pdf3,
],
);
Returns:
/path/to/merged.pdf
PDF Split
Split a PDF into multiple smaller PDFs.
final files =
await PdfSplitService.split(
pdfPath: sourcePdf,
pagesPerFile: 25,
);
Returns:
[
part1.pdf,
part2.pdf,
part3.pdf,
]
Error Handling
try {
await PdfMergeService.merge(
inputPaths: [pdf1, pdf2],
);
} on PdfMergeException catch (e) {
print(e);
}
try {
await PdfSplitService.split(
pdfPath: sourcePdf,
pagesPerFile: 25,
);
} on PdfSplitException catch (e) {
print(e);
}
Example Application
The package includes a complete example application demonstrating:
- PDF Reader
- Multiple PDFs
- Reading Progress
- Bookmark Persistence
- PDF Merge
- PDF Split
Roadmap
Upcoming Features:
- Upload User PDF
- Recent PDFs
- Continue Reading Dashboard
- Jump To Page
- Text Search
- Text Highlighting
- PDF Annotation
- Extract Pages
- Delete Pages
- Rotate Pages
- Password Protected PDFs
- Thumbnail Navigation
License
MIT License