pdf_reading_tracker 2.1.0 copy "pdf_reading_tracker: ^2.1.0" to clipboard
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

1
likes
140
points
414
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

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/continue-reading sections. All backed by SQLite.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

alh_pdf_view, file_picker, flutter, path, path_provider, sqflite, syncfusion_flutter_pdf

More

Packages that depend on pdf_reading_tracker