97 lines
2.9 KiB
Python
97 lines
2.9 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Simple example showing the most common EbookReader usage.
|
|
|
|
This script loads an EPUB and allows you to navigate through it,
|
|
saving each page as an image.
|
|
|
|
Usage:
|
|
python simple_ereader_example.py book.epub
|
|
"""
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# Add parent directory to path to import pyWebLayout
|
|
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|
|
|
from dreader.application import EbookReader
|
|
|
|
|
|
def main():
|
|
if len(sys.argv) < 2:
|
|
print("Usage: python simple_ereader_example.py book.epub")
|
|
sys.exit(1)
|
|
|
|
epub_path = sys.argv[1]
|
|
|
|
# Create reader and load EPUB
|
|
print(f"Loading: {epub_path}")
|
|
reader = EbookReader(page_size=(800, 1000))
|
|
|
|
if not reader.load_epub(epub_path):
|
|
print("Failed to load EPUB")
|
|
sys.exit(1)
|
|
|
|
# Get book information
|
|
info = reader.get_book_info()
|
|
print(f"\nBook: {info['title']}")
|
|
print(f"Author: {info['author']}")
|
|
print(f"Total blocks: {info['total_blocks']}")
|
|
|
|
# Get chapters
|
|
chapters = reader.get_chapters()
|
|
print(f"Chapters: {len(chapters)}")
|
|
if chapters:
|
|
print("\nChapter list:")
|
|
for title, idx in chapters[:10]: # Show first 10
|
|
print(f" {idx}: {title}")
|
|
if len(chapters) > 10:
|
|
print(f" ... and {len(chapters) - 10} more")
|
|
|
|
# Navigate through first 10 pages
|
|
print("\nRendering first 10 pages...")
|
|
for i in range(10):
|
|
page = reader.get_current_page()
|
|
if page:
|
|
filename = f"page_{i+1:03d}.png"
|
|
reader.render_to_file(filename)
|
|
|
|
# Show progress
|
|
progress = reader.get_reading_progress()
|
|
chapter_info = reader.get_current_chapter_info()
|
|
chapter_name = chapter_info['title'] if chapter_info else "N/A"
|
|
|
|
print(f" Page {i+1}: {filename} (Progress: {progress*100:.1f}%, Chapter: {chapter_name})")
|
|
|
|
# Move to next page
|
|
if not reader.next_page():
|
|
print(" Reached end of book")
|
|
break
|
|
|
|
# Save current position
|
|
reader.save_position("stopped_at_page_10")
|
|
print("\nSaved position as 'stopped_at_page_10'")
|
|
|
|
# Example: Jump to a chapter (if available)
|
|
if len(chapters) >= 2:
|
|
print(f"\nJumping to chapter: {chapters[1][0]}")
|
|
reader.jump_to_chapter(1)
|
|
reader.render_to_file("chapter_2_start.png")
|
|
print(" Saved to: chapter_2_start.png")
|
|
|
|
# Example: Increase font size
|
|
print("\nIncreasing font size...")
|
|
reader.increase_font_size()
|
|
reader.render_to_file("larger_font.png")
|
|
print(f" Font size now: {reader.get_font_size():.1f}x")
|
|
print(" Saved to: larger_font.png")
|
|
|
|
# Close reader (saves current position automatically)
|
|
reader.close()
|
|
print("\nDone! Current position saved automatically.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|