Skip to main content

PDF Export anpassen mit Header und Footer

getestet mit Version 24.0225.07

Anforderung

IchDie wollteStandard-PDF gerne die Möglichkeit haben, exportierte Daten einfach wieder in der digitalen Welt zu finden. WasSeite ist dazunicht besserwirklich geeignetansprechend, alsalso einwerden QR-Code.hier Header und Footer sowie Seitenzahlen eingefügt.

betroffene Dateien

Dateien müssen sich in der entsprechenden Struktur unterhalb des Themes befinden.
Ordner = kursiv
Dateien = fett

  • layouts
    • parts
      • export-body-start.blade.php
  • entities
    • export-menu.blade.php

Inhalte der Dateien

export-body-start.blade.php

VorDie dem ersten div-ContainerDatei muss hieram folgendesEnde eingetragenwie werden:folgt aussehen:

@inject('totp',@if 'BookStack\Access\Mfa\TotpService')

@php
($qrCodeformat = $totp->generateQrCodeSvg($page->getUrl());
$imgStr == 'data:image/svg+xml;base64,'pdf')
<style media="print">
    .print-header-footer base64_encode($qrCode){
        position: fixed;
        width: 100%;
    @endphp
}

Im.print-footer Anschluss{ kannposition: anfixed; einerbottom: beliebigen-40px; Stellewidth: das100%; Bild} an.print-header-footer-inner die{ PDFmax-width: übergeben840px; werden.
Dazumargin: muss0 folgenderauto; Abschnittcolor: hinzugefügt#666; werden:

}
@if(request().print-page-number:after {
        content: "Seite "counter(page);
    }
    @page {
        margin-top: 100px;
        margin-bottom: 80px;
    }
</style>

<div class="print-header-footer" style="top: -60px;">query('qr'))
    <div class="print-header-footer-inner">
        <div style="float: right;left; opacity: 0.8;">
            <img width=height="50" src="data:image/png;base64,{{ $imgStr }}" alt="{{ $page->getUrl(base64_encode(file_get_contents(theme_path('images/logo.png'))) }}">
        </div>
    </div>
    <div style="clear:both;"></div>
    <hr style="color: #ccc;">
</div>

<div class="print-header-footer" style="bottom: -40px;">
    <div class="print-header-footer-inner">
        <div style="float: left; opacity: 0.8; font-size: 8pt; text-align: left">
            &copy; [Footer-Text links]
        </div>
        <div style="float: right; opacity: 0.8; font-size: 8pt; text-align: right">
            <div class="print-page-number" style="opacity: 1"></div>
        </div>
    </div>
    <div style="clear:both;"></div>
</div>
@endif
export-menu.blade.php

Hier muss nun einfach nach der Zeile gesucht werden mit dem Inhalt /export/pdf.

Danach die Zeile kopieren und den String ?qr=true anhängen an die selbe Stelle.

Es sollte dann wie folgt aussehen:

 

<ul refs="dropdown@menu" class="wide dropdown-menu" role="menu">
      <li><a href="{{ $entity->getUrl('/export/html') }}" target="_blank" class="label-item"><span>{{ trans('entities.export_html') }}</span><span>.html</span></a></li>
      <li><a href="{{ $entity->getUrl('/export/pdf') }}" target="_blank" class="label-item"><span>{{ trans('entities.export_pdf') }}</span><span>.pdf</span></a></li>
      <li><a href="{{ $entity->getUrl('/export/pdf?qr=true') }}" target="_blank" class="label-item"><span>{{ trans('entities.export_pdf') }} + QR</span><span>.pdf</span></a></li>
      <li><a href="{{ $entity->getUrl('/export/plaintext') }}" target="_blank" class="label-item"><span>{{ trans('entities.export_text') }}</span><span>.txt</span></a></li>
      <li><a href="{{ $entity->getUrl('/export/markdown') }}" target="_blank" class="label-item"><span>{{ trans('entities.export_md') }}</span><span>.md</span></a></li>
  </ul>

In diesem Ausschnitt ist in Zeile 4 der neue Export Link hinzugefügt.

Screenshots

image.png