diff --git a/app/controllers/contents/courseware.php b/app/controllers/contents/courseware.php
index 2e27077660bfb7594436df6f8b6e6eb5c593ab82..340800678b4886cdb1ef14416e6290c2923711d2 100755
--- a/app/controllers/contents/courseware.php
+++ b/app/controllers/contents/courseware.php
@@ -441,10 +441,10 @@ class Contents_CoursewareController extends AuthenticatedController
         $sidebar->addWidget($actions);
     }
 
-    public function pdf_export_action($element_id)
+    public function pdf_export_action($element_id, $with_children)
     {
         $element = \Courseware\StructuralElement::findOneById($element_id);
 
-        $this->render_pdf($element->pdfExport($this->user), trim($element->title).'.pdf');
+        $this->render_pdf($element->pdfExport($this->user, $with_children), trim($element->title).'.pdf');
     }
 }
diff --git a/app/controllers/course/courseware.php b/app/controllers/course/courseware.php
index 9ef96616fb32527149dec40e52bbb1fde013360f..0e609e7f9cbaf5b54b9442cfe09167cc118ff3fa 100755
--- a/app/controllers/course/courseware.php
+++ b/app/controllers/course/courseware.php
@@ -100,11 +100,11 @@ class Course_CoursewareController extends AuthenticatedController
         }
     }
 
-    public function pdf_export_action($element_id)
+    public function pdf_export_action($element_id, $with_children)
     {
         $element = \Courseware\StructuralElement::findOneById($element_id);
 
-        $this->render_pdf($element->pdfExport($this->user), trim($element->title).'.pdf');
+        $this->render_pdf($element->pdfExport($this->user, $with_children), trim($element->title).'.pdf');
     }
 
     private function setIndexSidebar(): void
diff --git a/lib/models/Courseware/StructuralElement.php b/lib/models/Courseware/StructuralElement.php
index ba1563e143424ab075847d3793c8821ca0c959db..b135e4a135af0a048d17892c7d12689f0a047aa1 100755
--- a/lib/models/Courseware/StructuralElement.php
+++ b/lib/models/Courseware/StructuralElement.php
@@ -715,7 +715,7 @@ SQL;
         }
     }
 
-    public function pdfExport($user)
+    public function pdfExport($user, bool $with_children = false)
     {
         $doc = new \ExportPDF('P', 'mm', 'A4', true, 'UTF-8', false);
         $doc->setHeaderTitle(_('Courseware'));
@@ -734,31 +734,34 @@ SQL;
             return $doc;
         }
 
-        $doc->writeHTML($this->getElementPdfExport());
+        $doc->writeHTML($this->getElementPdfExport('', $with_children, $user));
 
         return $doc;
     }
 
-    private function getElementPdfExport(string $parent_name = '', bool $with_children = false)
+    private function getElementPdfExport(string $parent_name = '', bool $with_children, $user)
     {
+        if (!$this->canRead($user)) {
+            return '';
+        }
         if ($parent_name !== '') {
             $parent_name .= ' / ';
         }
         $html = '<h1>' . $parent_name . $this->title . '</h1>';
         $html .= $this->getContainerPdfExport();
         if ($with_children) {
-            $html .= $this->getChildrenPdfExport($parent_name);
+            $html .= $this->getChildrenPdfExport($parent_name, $with_children, $user);
         }
 
         return $html;
     }
 
-    private function getChildrenPdfExport(string $parent_name)
+    private function getChildrenPdfExport(string $parent_name, bool $with_children, $user)
     {
         $children = self::findBySQL('parent_id = ?', [$this->id]);
         $html = '';
         foreach ($children as $child) {
-            $html .= $child->getElementPdfExport($parent_name . $this->title);
+            $html .= $child->getElementPdfExport($parent_name . $this->title, $with_children, $user);
         }
 
         return $html;
diff --git a/resources/vue/components/courseware/CoursewareExportWidget.vue b/resources/vue/components/courseware/CoursewareExportWidget.vue
index dabc3ae735e493df080e861c7e6f6a96fe9ceb72..7b55a7898cb9a2cfb4ebf1dbaff89a6610f191bc 100644
--- a/resources/vue/components/courseware/CoursewareExportWidget.vue
+++ b/resources/vue/components/courseware/CoursewareExportWidget.vue
@@ -6,9 +6,9 @@
             </button>
         </li>
         <li v-if="showExportPdf" class="cw-export-widget-export-pdf">
-            <a :href="pdfExportURL" target="_blank">
+            <button @click="pdfElement">
                 <translate>Seite als pdf-Dokument exportieren</translate>
-            </a>
+            </button>
         </li>
         <li v-if="showOer" class="cw-export-widget-oer">
             <button @click="oerElement">
@@ -36,16 +36,6 @@ export default {
             oerTitle: 'oerTitle',
             userIsTeacher: 'userIsTeacher',
         }),
-        pdfExportURL() {
-            if (this.context.type === 'users') {
-                return STUDIP.URLHelper.getURL('dispatch.php/contents/courseware/pdf_export/' + this.structuralElement.id);
-            }
-            if (this.context.type === 'courses') {
-                return STUDIP.URLHelper.getURL('dispatch.php/course/courseware/pdf_export/' + this.structuralElement.id);
-            }
-
-            return '';
-        },
         canEdit() {
             if (!this.structuralElement) {
                 return false;
@@ -77,11 +67,15 @@ export default {
     methods: {
         ...mapActions({
             showElementExportDialog: 'showElementExportDialog',
+            showElementPdfExportDialog: 'showElementPdfExportDialog',
             showElementOerDialog: 'showElementOerDialog',
         }),
         exportElement() {
             this.showElementExportDialog(true);
         },
+        pdfElement() {
+            this.showElementPdfExportDialog(true);
+        },
         oerElement() {
             this.showElementOerDialog(true);
         }
diff --git a/resources/vue/components/courseware/CoursewareStructuralElement.vue b/resources/vue/components/courseware/CoursewareStructuralElement.vue
index e1bfd938cad0e9a41deb1b43d5147c6313997a0c..9276ba7dcba5bd243397381e71ccb762aa9a0037 100755
--- a/resources/vue/components/courseware/CoursewareStructuralElement.vue
+++ b/resources/vue/components/courseware/CoursewareStructuralElement.vue
@@ -403,6 +403,28 @@
                     </template>
                 </studip-dialog>
 
+                <studip-dialog
+                    v-if="showPdfExportDialog"
+                    :title="textExport.title"
+                    :confirmText="textExport.confirm"
+                    confirmClass="accept"
+                    :closeText="textExport.close"
+                    closeClass="cancel"
+                    height="350"
+                    @close="showElementPdfExportDialog(false)"
+                    @confirm="pdfExportCurrentElement"
+                >
+                    <template v-slot:dialogContent>
+                        <translate> Hiermit exportieren Sie die Seite "%{ currentElement.attributes.title }" als PDF-Datei.</translate>
+                            <div class="cw-element-export">
+                                <label>
+                                    <input type="checkbox" v-model="pdfExportChildren" />
+                                    <translate>Unterseiten exportieren</translate>
+                                </label>
+                            </div>
+                    </template>
+                </studip-dialog>
+
                 <studip-dialog
                     v-if="showOerDialog"
                     height="600"
@@ -559,6 +581,7 @@ export default {
             },
             exportRunning: false,
             exportChildren: false,
+            pdfExportChildren: false,
             oerChildren: true,
             containerList: [],
             isDragging: false,
@@ -589,6 +612,7 @@ export default {
             showEditDialog: 'showStructuralElementEditDialog',
             showAddDialog: 'showStructuralElementAddDialog',
             showExportDialog: 'showStructuralElementExportDialog',
+            showPdfExportDialog: 'showStructuralElementPdfExportDialog',
             showInfoDialog: 'showStructuralElementInfoDialog',
             showDeleteDialog: 'showStructuralElementDeleteDialog',
             showOerDialog: 'showStructuralElementOerDialog',
@@ -1040,6 +1064,7 @@ export default {
             showElementEditDialog: 'showElementEditDialog',
             showElementAddDialog: 'showElementAddDialog',
             showElementExportDialog: 'showElementExportDialog',
+            showElementPdfExportDialog: 'showElementPdfExportDialog',
             showElementInfoDialog: 'showElementInfoDialog',
             showElementDeleteDialog: 'showElementDeleteDialog',
             showElementOerDialog: 'showElementOerDialog',
@@ -1209,6 +1234,22 @@ export default {
             this.showElementExportDialog(false);
         },
 
+        pdfExportCurrentElement() {
+            this.showElementPdfExportDialog(false);
+            let url = '';
+            let withChildren = this.pdfExportChildren ? '/1' : '/0';
+            if (this.context.type === 'users') {
+                url = STUDIP.URLHelper.getURL('dispatch.php/contents/courseware/pdf_export/' + this.structuralElement.id + withChildren);
+            }
+            if (this.context.type === 'courses') {
+                url = STUDIP.URLHelper.getURL('dispatch.php/course/courseware/pdf_export/' + this.structuralElement.id + withChildren);
+            }
+
+            if (url) {
+                window.open(url , '_blank').focus();
+            }
+        },
+
         async publishCurrentElement() {
             this.exportToOER(this.currentElement, { withChildren: this.oerChildren });
         },
diff --git a/resources/vue/store/courseware/courseware.module.js b/resources/vue/store/courseware/courseware.module.js
index 5a6e479620ef63b38766522e3bf6af0571df2929..b266d3a406fd6d21ecae978928cd4dc17729ac2e 100755
--- a/resources/vue/store/courseware/courseware.module.js
+++ b/resources/vue/store/courseware/courseware.module.js
@@ -32,6 +32,7 @@ const getDefaultState = () => {
         showStructuralElementEditDialog: false,
         showStructuralElementAddDialog: false,
         showStructuralElementExportDialog: false,
+        showStructuralElementPdfExportDialog: false,
         showStructuralElementInfoDialog: false,
         showStructuralElementDeleteDialog: false,
         showStructuralElementOerDialog: false,
@@ -153,6 +154,9 @@ const getters = {
     showStructuralElementExportDialog(state) {
         return state.showStructuralElementExportDialog;
     },
+    showStructuralElementPdfExportDialog(state) {
+        return state.showStructuralElementPdfExportDialog;
+    },
     showStructuralElementInfoDialog(state) {
         return state.showStructuralElementInfoDialog;
     },
@@ -782,6 +786,10 @@ export const actions = {
         context.commit('setShowStructuralElementExportDialog', bool);
     },
 
+    showElementPdfExportDialog(context, bool) {
+        context.commit('setShowStructuralElementPdfExportDialog', bool);
+    },
+
     showElementInfoDialog(context, bool) {
         context.commit('setShowStructuralElementInfoDialog', bool);
     },
@@ -1250,6 +1258,10 @@ export const mutations = {
         state.showStructuralElementExportDialog = showExport;
     },
 
+    setShowStructuralElementPdfExportDialog(state, showPdfExport) {
+        state.showStructuralElementPdfExportDialog = showPdfExport;
+    },
+
     setShowStructuralElementInfoDialog(state, showInfo) {
         state.showStructuralElementInfoDialog = showInfo;
     },