208 lines
5.2 KiB
Markdown
208 lines
5.2 KiB
Markdown
# EbookReader API Quick Reference
|
|
|
|
This is a quick reference for the `EbookReader` class API.
|
|
|
|
## Import
|
|
|
|
```python
|
|
from pyWebLayout.layout.ereader_application import EbookReader
|
|
```
|
|
|
|
## Constructor
|
|
|
|
```python
|
|
EbookReader(
|
|
page_size=(800, 1000), # Page dimensions (width, height)
|
|
margin=40, # Page margin in pixels
|
|
background_color=(255, 255, 255), # Background RGB color
|
|
line_spacing=5, # Line spacing in pixels
|
|
inter_block_spacing=15, # Block spacing in pixels
|
|
bookmarks_dir="ereader_bookmarks", # Bookmark directory
|
|
buffer_size=5 # Number of pages to cache
|
|
)
|
|
```
|
|
|
|
## Loading & Book Info
|
|
|
|
| Method | Returns | Description |
|
|
|--------|---------|-------------|
|
|
| `load_epub(path)` | `bool` | Load an EPUB file |
|
|
| `is_loaded()` | `bool` | Check if book is loaded |
|
|
| `get_book_info()` | `dict` | Get book metadata and stats |
|
|
|
|
## Navigation
|
|
|
|
| Method | Returns | Description |
|
|
|--------|---------|-------------|
|
|
| `get_current_page()` | `PIL.Image` | Get current page as image |
|
|
| `next_page()` | `PIL.Image` or `None` | Navigate forward |
|
|
| `previous_page()` | `PIL.Image` or `None` | Navigate backward |
|
|
| `render_to_file(path)` | `bool` | Save current page to file |
|
|
|
|
## Position Management
|
|
|
|
| Method | Returns | Description |
|
|
|--------|---------|-------------|
|
|
| `save_position(name)` | `bool` | Save current position |
|
|
| `load_position(name)` | `PIL.Image` or `None` | Load saved position |
|
|
| `list_saved_positions()` | `List[str]` | List all saved positions |
|
|
| `delete_position(name)` | `bool` | Delete a saved position |
|
|
| `get_position_info()` | `dict` | Get detailed position info |
|
|
| `get_reading_progress()` | `float` | Get progress (0.0-1.0) |
|
|
|
|
## Chapter Navigation
|
|
|
|
| Method | Returns | Description |
|
|
|--------|---------|-------------|
|
|
| `get_chapters()` | `List[Tuple[str, int]]` | Get list of chapters |
|
|
| `get_chapter_positions()` | `List[Tuple[str, RenderingPosition]]` | Get chapters with positions |
|
|
| `jump_to_chapter(chapter)` | `PIL.Image` or `None` | Jump to chapter by title or index |
|
|
| `get_current_chapter_info()` | `dict` or `None` | Get current chapter info |
|
|
|
|
## Font & Styling
|
|
|
|
| Method | Returns | Description |
|
|
|--------|---------|-------------|
|
|
| `get_font_size()` | `float` | Get current font scale |
|
|
| `set_font_size(scale)` | `PIL.Image` | Set font scale (0.5-3.0) |
|
|
| `increase_font_size()` | `PIL.Image` | Increase font by 10% |
|
|
| `decrease_font_size()` | `PIL.Image` | Decrease font by 10% |
|
|
| `set_line_spacing(pixels)` | `PIL.Image` | Set line spacing |
|
|
| `set_inter_block_spacing(pixels)` | `PIL.Image` | Set block spacing |
|
|
|
|
## Cleanup
|
|
|
|
| Method | Returns | Description |
|
|
|--------|---------|-------------|
|
|
| `close()` | `None` | Close reader and save position |
|
|
|
|
## Context Manager
|
|
|
|
```python
|
|
with EbookReader() as reader:
|
|
reader.load_epub("book.epub")
|
|
# ... use reader
|
|
# Automatically closes and saves position
|
|
```
|
|
|
|
## Minimal Example
|
|
|
|
```python
|
|
from pyWebLayout.layout.ereader_application import EbookReader
|
|
|
|
# Create and load
|
|
reader = EbookReader(page_size=(800, 1000))
|
|
reader.load_epub("book.epub")
|
|
|
|
# Navigate
|
|
page = reader.get_current_page()
|
|
page.save("page1.png")
|
|
reader.next_page()
|
|
|
|
# Save position
|
|
reader.save_position("bookmark1")
|
|
|
|
# Close
|
|
reader.close()
|
|
```
|
|
|
|
## Common Patterns
|
|
|
|
### Reading through a book
|
|
|
|
```python
|
|
with EbookReader() as reader:
|
|
reader.load_epub("book.epub")
|
|
|
|
page_num = 1
|
|
while True:
|
|
page = reader.get_current_page()
|
|
if not page:
|
|
break
|
|
|
|
page.save(f"page_{page_num:03d}.png")
|
|
|
|
if not reader.next_page():
|
|
break # End of book
|
|
|
|
page_num += 1
|
|
```
|
|
|
|
### Chapter-based navigation
|
|
|
|
```python
|
|
reader = EbookReader()
|
|
reader.load_epub("book.epub")
|
|
|
|
# List chapters
|
|
chapters = reader.get_chapters()
|
|
for title, idx in chapters:
|
|
print(f"Chapter {idx}: {title}")
|
|
|
|
# Jump to chapter
|
|
reader.jump_to_chapter(2) # By index
|
|
reader.jump_to_chapter("Chapter 3") # By title
|
|
```
|
|
|
|
### Font size adjustment
|
|
|
|
```python
|
|
reader = EbookReader()
|
|
reader.load_epub("book.epub")
|
|
|
|
# Simple increase/decrease
|
|
reader.increase_font_size()
|
|
reader.decrease_font_size()
|
|
|
|
# Or set specific scale
|
|
reader.set_font_size(1.5) # 150% size
|
|
```
|
|
|
|
### Position persistence
|
|
|
|
```python
|
|
# Save multiple bookmarks
|
|
reader.save_position("chapter_1_start")
|
|
reader.next_page()
|
|
reader.next_page()
|
|
reader.save_position("interesting_quote")
|
|
|
|
# List all bookmarks
|
|
bookmarks = reader.list_saved_positions()
|
|
|
|
# Load a bookmark
|
|
reader.load_position("chapter_1_start")
|
|
|
|
# Delete a bookmark
|
|
reader.delete_position("old_bookmark")
|
|
```
|
|
|
|
## Position Format
|
|
|
|
Positions are stored as JSON in `{bookmarks_dir}/{document_id}_bookmarks.json`:
|
|
|
|
```json
|
|
{
|
|
"chapter_index": 0,
|
|
"block_index": 42,
|
|
"word_index": 15,
|
|
"table_row": 0,
|
|
"table_col": 0,
|
|
"list_item_index": 0,
|
|
"remaining_pretext": null,
|
|
"page_y_offset": 0
|
|
}
|
|
```
|
|
|
|
Positions remain valid across:
|
|
- Font size changes
|
|
- Line spacing changes
|
|
- Page size changes
|
|
- Block spacing changes
|
|
|
|
## See Also
|
|
|
|
- `examples/README_EREADER.md` - Full documentation with examples
|
|
- `examples/simple_ereader_example.py` - Simple usage example
|
|
- `examples/ereader_demo.py` - Comprehensive feature demo
|