diff --git a/aleksis/apps/kort/forms.py b/aleksis/apps/kort/forms.py
index 39781a61c83837dc42e6a4c63672d14a39f82b81..7abb6517ddfdab34f8c70a01cdd8e0e5a225c287 100644
--- a/aleksis/apps/kort/forms.py
+++ b/aleksis/apps/kort/forms.py
@@ -9,6 +9,13 @@ from aleksis.apps.kort.models import Card, CardLayout, CardLayoutMediaFile, Card
 
 
 class CardForm(forms.ModelForm):
+    printer = forms.ModelChoiceField(
+        queryset=None,
+        label=_("Card Printer"),
+        help_text=_("Select a printer to directly print the newly issued card."),
+        required=False,
+    )
+
     class Meta:
         model = Card
         fields = ["person", "valid_until", "layout"]
@@ -28,6 +35,13 @@ class CardForm(forms.ModelForm):
         super().__init__(*args, **kwargs)
         self.fields["layout"].required = True
 
+        layouts = CardLayout.objects.all()
+        if layouts.count() == 1:
+            self.fields["layout"].initial = layouts.first()
+
+        printers = CardPrinter.objects.all()
+        self.fields["printer"].queryset = printers
+
 
 class CardPrinterForm(forms.ModelForm):
     layout = Layout(
diff --git a/aleksis/apps/kort/views.py b/aleksis/apps/kort/views.py
index 26d7a8667a1ff856d8820816b18ef79b714f4a34..d6181110b7df5aff5e9a1fc8ef820e747087cac8 100644
--- a/aleksis/apps/kort/views.py
+++ b/aleksis/apps/kort/views.py
@@ -70,6 +70,28 @@ class CardCreateView(PermissionRequiredMixin, RevisionMixin, AdvancedCreateView)
     success_message = _("The card has been created successfully.")
     success_url = reverse_lazy("cards")
 
+    def form_valid(self, form: CardForm) -> HttpResponse:
+        response = super().form_valid(form)
+        if form.cleaned_data.get("printer"):
+            printer = form.cleaned_data["printer"]
+            try:
+                job = self.object.print_card(printer)
+                messages.success(
+                    self.request,
+                    _(
+                        "The print job #{} for the card {} on "
+                        "the printer {} has been created successfully."
+                    ).format(job.pk, self.object.person, printer.name),
+                )
+            except ValueError as e:
+                messages.error(
+                    self.request,
+                    _(
+                        "The print job couldn't be started because of the following error: {}"
+                    ).format(e),
+                )
+        return response
+
 
 class CardDeleteView(PermissionRequiredMixin, RevisionMixin, AdvancedDeleteView):
     """View used to delete a card."""