ai_pdf_reader 0.0.5 copy "ai_pdf_reader: ^0.0.5" to clipboard
ai_pdf_reader: ^0.0.5 copied to clipboard

A Flutter package for PDF reading, text extraction, TTS audio playback, offline summary generation, and reading progress tracking.

AI PDF Reader #

A powerful Flutter package for loading PDF files, extracting readable text, playing the content with text-to-speech, highlighting reading progress, and tracking the last read character index in real time.

This package is designed for developers who want to add a clean and interactive PDF audio reader experience to their Flutter apps with minimal setup.


✨ Features #

  • 📄 Upload and load PDF files
  • 🔍 Extract text from text-based PDFs
  • 🔊 Read PDF content aloud using Text-to-Speech
  • 🟢 Highlight current reading progress in text view
  • 📌 Track the last read character index
  • 👁️ Optional built-in PDF viewer
  • 🎚️ Adjustable speech rate, pitch, and volume
  • 🌍 Language selection support
  • 📊 Show PDF details like:
    • file name
    • page count
    • character count
    • reading percentage
    • last read character index
  • 🧩 Reusable controller-based architecture
  • 📱 Easy integration inside any Flutter app
  • Generate offline extractive summaries from PDF text
  • Works without a backend for text extraction and local summary generation

📸 What This Package Provides #

With ai_pdf_reader, users can:

  • pick a PDF file from device storage
  • view PDF details instantly
  • listen to the extracted text as audio
  • see live reading progress
  • optionally show or hide the PDF viewer
  • monitor the exact character position reached during reading

This makes it ideal for:

  • accessibility-focused apps
  • study apps
  • reading assistant apps
  • document reader apps
  • productivity tools

🚀 Installation #

Add this to your pubspec.yaml:

dependencies:
  ai_pdf_reader: ^0.0.5

Then run:

flutter pub get

Import the package in your Dart file:

import 'package:ai_pdf_reader/pdf_audio_reader.dart';

Create a controller:


late final PdfAudioReaderController controller;

@override
void initState() {
  super.initState();
  controller = PdfAudioReaderController(
    initialLanguage: 'en-US',
    showPdfViewerInitially: true,
  );
}

@override
void dispose() {
  controller.dispose();
  super.dispose();
}

Attach the package widget to your screen:


import 'package:flutter/material.dart';
import 'package:ai_pdf_reader/pdf_audio_reader.dart';

class DemoPage extends StatefulWidget {
  const DemoPage({super.key});

  @override
  State<DemoPage> createState() => _DemoPageState();
}

class _DemoPageState extends State<DemoPage> {
  late final PdfAudioReaderController controller;

  @override
  void initState() {
    super.initState();
    controller = PdfAudioReaderController(
      initialLanguage: 'en-US',
      showPdfViewerInitially: true,
    );
  }

  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('AI PDF Reader'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(12),
        child: PdfAudioReaderView(
          controller: controller,
          allowPdfViewerToggle: true,
          showUploadButton: true,
          showProgressText: true,
        ),
      ),
    );
  }
}

Example #

import 'package:flutter/material.dart';
import 'package:ai_pdf_reader/pdf_audio_reader.dart';

class DemoPage extends StatefulWidget {
  const DemoPage({super.key});

  @override
  State<DemoPage> createState() => _DemoPageState();
}

class _DemoPageState extends State<DemoPage> {
  late final PdfAudioReaderController controller;

  @override
  void initState() {
    super.initState();
    controller = PdfAudioReaderController(
      initialLanguage: 'en-US',
      showPdfViewerInitially: true,
    );
  }

  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('AI PDF Reader'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(12),
        child: PdfAudioReaderView(
          controller: controller,
          allowPdfViewerToggle: true,
          showUploadButton: true,
          showProgressText: true,
        ),
      ),
    );
  }
}

Access Reading Progress #

You can access the current reading state directly from the controller.

Get the last read character index:

final int lastIndex = controller.state.lastReadCharacterIndex;

Get reading percentage:

final double progress = controller.state.progressPercent;

Get extracted text:

final String text = controller.state.extractedText;

Check whether audio is currently playing

final bool isSpeaking = controller.state.isSpeaking;

It can also generate offline PDF Summery

final String summary = LocalPdfSummarizer.summarize(
  controller.state.extractedText,
  maxSentences: 5,
);

print(summary);

Built-in Controls #

The package includes built-in controls for:

  • Upload PDF
  • Read Aloud
  • Stop Reading
  • Show / Hide PDF Viewer
  • Change Language
  • Adjust Speech Rate
  • Adjust Pitch
  • Adjust Volume

UI Highlights #

The built-in widget includes:

  • an attractive top control panel
  • PDF details section
  • optional PDF viewer
  • reading progress section
  • live highlighted spoken text
  • current word display
  • last read character index display
1
likes
120
points
75
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Flutter package for PDF reading, text extraction, TTS audio playback, offline summary generation, and reading progress tracking.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

file_picker, flutter, flutter_tts, syncfusion_flutter_pdf, syncfusion_flutter_pdfviewer

More

Packages that depend on ai_pdf_reader