diff --git a/internal/handlers/koreader.go b/internal/handlers/koreader.go index 438df42..e7b3461 100644 --- a/internal/handlers/koreader.go +++ b/internal/handlers/koreader.go @@ -457,6 +457,14 @@ func (h *KOReaderHandler) updateProgressForBook(c *echo.Context, deviceID pgtype mediaItem, err := h.db.GetMediaItem(ctx, mediaItemID) if err != nil { log.Printf("Bookhoard: CRE→CFI failed to get media item: %v", err) + } else if mediaItem.FormatGroup == string(wsync.FormatGroupFixedLayout) || + mediaItem.FormatGroup == string(wsync.FormatGroupComicArchive) { + // Image-based fixed content (fixed-layout comic EPUBs, PDF, + // comic archives) has no extractable text, so CRE→CFI conversion + // cannot succeed. The page index (page/total_pages) is the + // canonical locator. Keep the incoming xpointer for device-native + // restore; the web reader restores by page. + log.Printf("Bookhoard: CRE→CFI skipped for %s format", mediaItem.FormatGroup) } else if h.libraryService == nil { log.Printf("Bookhoard: CRE→CFI libraryService is nil, skipping conversion") } else {