Further adjusted linked image sizes on PDF export
Further fixes for #3120, Adds DOMPDF specific adjustments to prevent full width linked images being cut-off as per last tweak. This does not fix usage in smaller cases (tables) but tested on master DOMPDF branch shows that will likely be fixed in next DOMPDF upstream release. DOMPDF fixes would break WKHTMLTOPDF presentation so system updated to conditionally apply styles.
This commit is contained in:
parent
2aace16704
commit
8b5747eae2
4 changed files with 26 additions and 5 deletions
|
@ -92,6 +92,7 @@ class ExportFormatter
|
|||
$html = view('pages.export', [
|
||||
'page' => $page,
|
||||
'format' => 'pdf',
|
||||
'engine' => $this->pdfGenerator->getActiveEngine(),
|
||||
])->render();
|
||||
|
||||
return $this->htmlToPdf($html);
|
||||
|
@ -113,6 +114,7 @@ class ExportFormatter
|
|||
'chapter' => $chapter,
|
||||
'pages' => $pages,
|
||||
'format' => 'pdf',
|
||||
'engine' => $this->pdfGenerator->getActiveEngine(),
|
||||
])->render();
|
||||
|
||||
return $this->htmlToPdf($html);
|
||||
|
@ -130,6 +132,7 @@ class ExportFormatter
|
|||
'book' => $book,
|
||||
'bookChildren' => $bookTree,
|
||||
'format' => 'pdf',
|
||||
'engine' => $this->pdfGenerator->getActiveEngine(),
|
||||
])->render();
|
||||
|
||||
return $this->htmlToPdf($html);
|
||||
|
|
|
@ -7,14 +7,15 @@ use Barryvdh\Snappy\Facades\SnappyPdf;
|
|||
|
||||
class PdfGenerator
|
||||
{
|
||||
const ENGINE_DOMPDF = 'dompdf';
|
||||
const ENGINE_WKHTML = 'wkhtml';
|
||||
|
||||
/**
|
||||
* Generate PDF content from the given HTML content.
|
||||
*/
|
||||
public function fromHtml(string $html): string
|
||||
{
|
||||
$useWKHTML = config('snappy.pdf.binary') !== false && config('app.allow_untrusted_server_fetching') === true;
|
||||
|
||||
if ($useWKHTML) {
|
||||
if ($this->getActiveEngine() === self::ENGINE_WKHTML) {
|
||||
$pdf = SnappyPDF::loadHTML($html);
|
||||
$pdf->setOption('print-media-type', true);
|
||||
} else {
|
||||
|
@ -23,4 +24,14 @@ class PdfGenerator
|
|||
|
||||
return $pdf->output();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the currently active PDF engine.
|
||||
* Returns the value of an `ENGINE_` const on this class.
|
||||
*/
|
||||
public function getActiveEngine(): string
|
||||
{
|
||||
$useWKHTML = config('snappy.pdf.binary') !== false && config('app.allow_untrusted_server_fetching') === true;
|
||||
return $useWKHTML ? self::ENGINE_WKHTML : self::ENGINE_DOMPDF;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,8 +47,15 @@
|
|||
display: block;
|
||||
}
|
||||
|
||||
@if($engine === \BookStack\Entities\Tools\PdfGenerator::ENGINE_DOMPDF)
|
||||
{{-- Fix for full width linked image sizes on DOMPDF --}}
|
||||
.page-content a > img {
|
||||
max-width: none;
|
||||
max-width: 700px;
|
||||
}
|
||||
{{-- Undoes the above for table images to prevent visually worse scenario, Awaiting next DOMPDF release for patch --}}
|
||||
.page-content td a > img {
|
||||
max-width: 100%;
|
||||
}
|
||||
@endif
|
||||
</style>
|
||||
@endif
|
|
@ -4,7 +4,7 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<title>@yield('title')</title>
|
||||
|
||||
@include('common.export-styles', ['format' => $format])
|
||||
@include('common.export-styles', ['format' => $format, 'engine' => $engine ?? ''])
|
||||
@include('common.export-custom-head')
|
||||
</head>
|
||||
<body>
|
||||
|
|
Loading…
Reference in a new issue