A cross-platform .NET application that displays text from PDFs or web pages one word at a time at a configurable speed.
- Load text from PDF files or web pages
- Smart content extraction from web pages
- Configure reading speed (words per minute)
- Customize font family and size
- Context view to see surrounding text while reading
- Pause, resume, and stop reading
- Reading progress indicator
- Cross-platform (Windows, macOS, Linux)
- .NET 9.0 SDK or later
- Avalonia UI (v11.0.7) - Cross-platform UI framework
- itext7 (v8.0.2) - For PDF parsing
- HtmlAgilityPack (v1.11.59) - For web page parsing
- MessageBox.Avalonia (v3.1.5.1) - For dialog boxes
- Clone or download this repository
- Build and run the application:
cd SpeedReader dotnet run
- Select the source type (PDF or Web Page)
- For PDF: Click "Browse" to select a PDF file, or enter the path manually
- For Web Pages: Enter the full URL (e.g., https://example.com/article)
- The application will analyze the page and identify potential content areas
- You can select which content area to read from
- Configure the font family, font size, and reading speed (words per minute)
- Toggle the context view on/off to see surrounding text while reading
- Click "Start" to begin reading
- Use "Pause" to pause reading and "Stop" to stop completely
The application includes a context view feature that shows the surrounding text while focusing on one word at a time:
- The current word is displayed prominently in the center
- The surrounding text is shown in the background with reduced opacity
- The current word's position is highlighted in the context text
- Toggle the context view on or off using the switch in the top-right corner
The application includes a smart content extraction feature for web pages:
- Automatically identifies main content areas using common patterns
- Detects articles, main content sections, and text-rich areas
- Allows you to preview and select which content to read
- Filters out navigation, headers, footers, and other non-content elements
- For web pages, the quality of text extraction depends on the structure of the website. Some websites may not extract cleanly.
- Very large PDF files may take some time to process.
- Add text preprocessing to improve readability
- Support for additional file formats (e.g., EPUB, DOCX)
- Visual selection of content regions on web pages
- Save and load reading preferences
- Text highlighting options
- Themes and color customization
<!-- WebView with selection overlay -->
<Panel Grid.Row="0">
<WebView x:Name="WebPreview" />
<Canvas x:Name="SelectionOverlay" />
</Panel>
<!-- Controls -->
<StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Center" Margin="10">
<Button Content="Auto-Detect Content" Margin="5" />
<Button Content="Clear Selection" Margin="5" />
<Button Content="Extract Selected" Margin="5" />
<Button Content="Cancel" Margin="5" />
</StackPanel>
</Grid>