diff --git a/aleksis/apps/alsijil/frontend/index.js b/aleksis/apps/alsijil/frontend/index.js
index 47a85edf511cdcd6dd4a0b43ff4ef013e4924f25..8af9024f8ea4d470224a10f6e15eded692469386 100644
--- a/aleksis/apps/alsijil/frontend/index.js
+++ b/aleksis/apps/alsijil/frontend/index.js
@@ -62,6 +62,14 @@ export default {
             fullWidth: true,
           },
         },
+        {
+          path: "print/group/:groupId/",
+          component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
+          name: "alsijil.coursebook_print",
+          props: {
+            byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
+          },
+        },
       ],
     },
     {
diff --git a/aleksis/apps/alsijil/tasks.py b/aleksis/apps/alsijil/tasks.py
index a7020dc103961fb9792221b925afc6f5453f18a4..72fc90353d9934d2d4c5b307b2cec1fad03c14ef 100644
--- a/aleksis/apps/alsijil/tasks.py
+++ b/aleksis/apps/alsijil/tasks.py
@@ -1,3 +1,5 @@
+from typing import Optional
+
 from copy import deepcopy
 from datetime import date, timedelta
 
@@ -16,8 +18,18 @@ from .models import ExtraMark
 
 
 @recorded_task
-def generate_full_register_printout(group: int, file_object: int, recorder: ProgressRecorder):
-    """Generate a full register printout as PDF for a group."""
+def generate_full_register_printout(
+        group: int,
+        file_object: int,
+        recorder: ProgressRecorder,
+        include_cover: Optional[bool] = True,
+        include_abbreviations: Optional[bool] = True,
+        include_members_table: Optional[bool] = True,
+        include_teachers_and_subjects_table: Optional[bool] = True,
+        include_person_overviews: Optional[bool] = True,
+        include_coursebook: Optional[bool] = True
+):
+    """Generate a configurable register printout as PDF for a group."""
     context = {}
 
     _number_of_steps = 8
diff --git a/aleksis/apps/alsijil/urls.py b/aleksis/apps/alsijil/urls.py
index cd7367ce84973bb4eb62791e9ce5b2c7eb3a5f85..72445e60bac3e2a8992fce6495f5dbb1b31bf0d3 100644
--- a/aleksis/apps/alsijil/urls.py
+++ b/aleksis/apps/alsijil/urls.py
@@ -3,6 +3,11 @@ from django.urls import path
 from . import views
 
 urlpatterns = [
+    path(
+        "coursebook/print/group/<int:id_>",
+        views.register_for_group,
+        name="register_for_group"
+    ),
     path("group_roles/", views.GroupRoleListView.as_view(), name="group_roles"),
     path("group_roles/create/", views.GroupRoleCreateView.as_view(), name="create_group_role"),
     path(
diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py
index 75f0e1b06d6dfe14380047fe8a6d1221109bcf21..9ba39738fd49b08e8c92909d48207a34ffea0d45 100644
--- a/aleksis/apps/alsijil/views.py
+++ b/aleksis/apps/alsijil/views.py
@@ -1,4 +1,4 @@
-from typing import Any, Dict
+from typing import Any, Dict, Optional
 
 from django.db.models import Q
 from django.http import HttpRequest, HttpResponse
@@ -42,7 +42,9 @@ from .tasks import generate_full_register_printout
 @permission_required(
     "alsijil.view_full_register_rule", fn=objectgetter_optional(Group, None, False)
 )
-def full_register_group(request: HttpRequest, id_: int) -> HttpResponse:
+def register_for_group(request: HttpRequest, id_: int) -> HttpResponse:
+    """Show a configurable register printout as PDF for a group."""
+
     group = get_object_or_404(Group, pk=id_)
 
     file_object = PDFFile.objects.create()
@@ -52,7 +54,16 @@ def full_register_group(request: HttpRequest, id_: int) -> HttpResponse:
 
     redirect_url = f"/pdfs/{file_object.pk}"
 
-    result = generate_full_register_printout.delay(group.pk, file_object.pk)
+    result = generate_full_register_printout.delay(
+        group=group.pk,
+        file_object=file_object.pk,
+        include_cover=request.GET.get("cover", True),
+        include_abbreviations=request.GET.get("abbreviations", True),
+        include_members_table=request.GET.get("members_table", True),
+        include_teachers_and_subjects_table=request.GET.get("teachers_and_subjects_table", True),
+        include_person_overviews=request.GET.get("person_overviews", True),
+        include_coursebook=request.GET.get("coursebook", True)
+    )
 
     back_url = request.GET.get("back", "")
     back_url_is_safe = url_has_allowed_host_and_scheme(
@@ -66,8 +77,8 @@ def full_register_group(request: HttpRequest, id_: int) -> HttpResponse:
     return render_progress_page(
         request,
         result,
-        title=_("Generate full register printout for {}").format(group),
-        progress_title=_("Generate full register printout …"),
+        title=_("Generate register printout for {}").format(group),
+        progress_title=_("Generate register printout …"),
         success_message=_("The printout has been generated successfully."),
         error_message=_("There was a problem while generating the printout."),
         redirect_on_success_url=redirect_url,