פיתוח אפליקציית קורא ספרים אלקטרוניים למובייל
יצירת קורא פשוט שפותח EPUB היא משימה של שבוע. יצירת קורא שנעים לשימוש היא סיפור אחר. גלילה חלקה של פרקים ארוכים, עיבוד נכון של CSS מ-EPUB3, סנכרון מיקום קריאה בין מכשירים, מצב לילה ללא פגמים — כל אחד מהפרטים הללו דורש פתרונות אישיים. לדוגמה, גופנים מותאמים אישית מ-EPUB3 דורשים נרמול נתיבי CSS, וסנכרון דורש פתרון התנגשויות לפי חותמת זמן.
בחירת מחסנית העיבוד והסנכרון הנכונה חוסכת עד 60% מזמן הניפוי. אנו משתמשים ב-Readium Toolkit — ספרייה מוכחת שמפעילה קוראים מרכזיים (LitRes, Storytel). בחירה זו מבטיחה תמיכה יציבה ב-EPUB 2/3, PDF, ספרי שמע, ו-LCP DRM מובנה. עם ניסיון מלמעלה מ-10 פרויקטי קוראים, אנו מוכנים להציע ארכיטקטורה אופטימלית.
פורמטים ועיבוד
פורמטים עיקריים: EPUB 2/3, PDF, FB2. MOBI ו-AZW3 לפי בקשה.
מדוע Readium היא הבחירה הטובה ביותר לעיבוד EPUB?
EPUB הוא ארכיון ZIP המכיל HTML/CSS/XML. עיבוד מקורי דורש שכבת ביניים. Readium היא התקן דה-פקטו לקוראים ניידים עם קוד פתוח. היא תומכת ב-EPUB 2/3, PDF, ספרי שמע, ו-LCP DRM. Readium Swift Toolkit (iOS) ו-Readium Kotlin Toolkit (Android) משמשים את LitRes Library, Storytel, ורבים אחרים. Readium מעבדת EPUB דרך WKWebView/WebView מובנה עם הזרקת מנוע JavaScript משלה. זה נותן תמיכה מלאה ב-CSS של ספרים, כולל גופנים מותאמים אישית וטיפוגרפיה מורכבת.
// iOS — открытие книги через Readium
let publication = try await streamer.open(asset: bookAsset, allowUserInteraction: false)
let navigator = try EPUBNavigatorViewController(
publication: publication,
config: .init(
editingActions: EditingAction.defaultActions,
fontOverrides: userSettings.fontOverrides
)
)השוואת מהירות: Readium מעבדת EPUB פי 2 מהר יותר מאשר מפענח WebView מותאם אישית עם הזרקת CSS ללא אופטימיזציות.
כיצד לטפל ב-PDF ו-FB2?
ב-iOS — PDFKit (טבעי, מהיר, תומך בהערות). ב-Android — PdfRenderer (מובנה, בסיסי) או PdfiumAndroid למסמכים מורכבים עם גרפיקה וקטורית. עבור FB2, אנו משתמשים במפענח XML מותאם אישית עם עיבוד דרך TextView (Android) / AttributedString (iOS). או המרה ל-EPUB בשרת או במכשיר באמצעות fb2c או לוגיקה דמוית Calibre.
| פורמט | עיבוד | תמיכה בהערות | מורכבות |
|---|---|---|---|
| EPUB 2/3 | Readium (WKWebView/WebView) | כן | בינונית |
| PDFKit (iOS) / Pdfium (Android) | כן | נמוכה | |
| FB2 | מפענח XML מותאם אישית | לא (הדגשה בסיסית) | גבוהה |
הגדרות קריאה
גופן, גודל, ריווח שורות, שוליים, ערכת נושא (בהיר/כהה/ספיה) — נשמרים מקומית ב-UserDefaults / SharedPreferences ומיושמים דרך הזרקת CSS לתוך Readium:
val preferences = EPUBPreferences(
fontFamily = FontFamily.GEORGIA,
fontSize = Percentage(1.2),
lineHeight = Double(1.5),
theme = Theme.SEPIA
)
navigator.submitPreferences(preferences)חשוב: ערכת הנושא של האפליקציה וערכת הנושא של הקורא הן נפרדות. אם משתמש קורא במצב כהה אך מחליף את המערכת לבהיר, הקורא לא אמור לשנות את הערכת נושא אוטומטית. הגדרות הקורא עצמאיות מהגדרות המערכת.
התקדמות וסימניות
מיקום קריאה נוכחי — Locator בטרמינולוגיה של Readium. זהו אובייקט עם href (נתיב פרק), progression (0.0–1.0 בתוך פרק), וקטע טקסט לשיקום מדויק לאחר עדכוני ספר.
סימניות, הערות, הדגשות — נשמרות ב-Room / Core Data כ-Annotation(bookId, locator, text, color, note).
כיצד לסנכרן התקדמות בין מכשירים?
אם יש צורך בסנכרון, המיקום וההערות נשלחים לשרת בכל שינוי. WorkManager / BGTaskScheduler שולחים שינויים מצטברים כאשר הרשת זמינה. התנגשויות נפתרות לפי חותמת זמן: המיקום המאוחר יותר מנצח. Readium תומכת ב-OPDS Annotations — אם השרת תומך בכך, הסנכרון כמעט חינם.
אנו מבטיחים שסנכרון לא יגרום לאובדן נתונים: אנו בודקים על 10+ מכשירים בו זמנית.
ספרייה והורדות
ספרים נשמרים ב-Files (iOS) / filesDir (Android) — לא ב-cacheDir, אחרת מערכת ההפעלה עלולה למחוק אותם כשהמקום נמוך. ב-iOS 16+ ניתן להשתמש ב-FileManager עם ubiquityContainerIdentifier לסנכרון קבצים ב-iCloud.
הורדה דרך URLSession.downloadTask (iOS) / DownloadManager (Android) עם תמיכה בחידוש (resumeData). התקדמות מוצגת בספרייה. חיפוש טקסט מלא בתוך EPUB — דרך הוספת כל טקסט הפרקים לאינדקס בטבלת FTS4/FTS5 של Room.
בעיות טיפוסיות ופתרונות
גופנים מותאמים אישית מ-EPUB3 (@font-face) נכשלים בטעינה אם נתיב ה-CSS משתמש ב-../Fonts/ — יש צורך בנרמול נתיבים. WKWebView ב-iOS חותך דפים ארוכים אם isScrollEnabled = false — נדרשת הגדרת פגינציה נכונה. PDF עם גופני CJK מוטמעים ב-PdfRenderer של Android נותן פגמי עיבוד, ולכן אנו משתמשים ב-Pdfium. עבור כל מקרה יש לנו כלים פנימיים: מנרמל נתיבי CSS, הגדרת פגינציה אוטומטית של WKWebView, ומזהה גופני CJK למעבר ל-Pdfium.
מה כלול בפיתוח
- ארכיטקטורת אפליקציה ובחירת מחסנית עיבוד.
- התאמת UI/UX ל-iOS ו-Android.
- שילוב Readium Toolkit ל-EPUB/PDF ומפענח FB2.
- הגדרת סנכרון התקדמות והערות דרך שרת.
- יישום הגדרות קריאה (גופן, ערכת נושא, שוליים).
- בדיקות על מכשירים פיזיים (לפחות 10 דגמים).
- תיעוד API ובנייה, קוד מקור והעברת גישה.
- 6 חודשי תמיכה חינם לאחר השחרור.
לוחות זמנים
| שלב | משך |
|---|---|
| קורא בסיסי עם EPUB/PDF, הגדרות, סימניות | 3–5 שבועות |
| אפליקציה מלאה עם סנכרון, חיפוש טקסט מלא, הערות, תמיכה במספר פורמטים | 8–10 שבועות |
העלות נקבעת לאחר הגדרת סט הפורמטים ודרישות הסנכרון. קבלו ייעוץ — נמצא את הפתרון האופטימלי. הזמינו פיתוח קורא עם אחריות לאיכות: אנו מספקים 6 חודשי תמיכה חינם לאחר השחרור.







