pdf_reading_tracker 2.1.0
pdf_reading_tracker: ^2.1.0 copied to clipboard
A complete Flutter PDF reader package — renders PDFs, tracks reading progress, manages bookmarks, supports PDF merge and split operations, lets users pick PDFs from their device, and shows recent/cont [...]
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