PDF случайное массивное белое пространство, добавленное между блоками HTML
У меня проблема с созданием HTML шаблона для сгенерированного PDF файла. Проблема заключается в том, что между блоками HTML случайно появляются огромные белые пробелы. Никакие стили не могут заставить это произойти. Я пробовал использовать page-break, но это тоже ничего не дало. Проблема также в том, что это не происходит, когда я пытаюсь сохранить PDF с помощью скрипта, который открывает опцию печати браузера с назначением для сохранения в PDF , как это. Это происходит только тогда, когда я пытаюсь сгенерировать PDF файл заранее как здесь . Вы можете видеть слева огромное белое пространство, случайно сгенерированное как здесь. PDF генерируется с помощью WheesyPrint.
<div>
<h2>Zdjęcia funkcji w standardzie:</h2>
<p class='m-0 p-0'><small>*Zdjęcie podlądowe. Wyposażenie może się różnić w zależności od modelu wózka oraz
producenta</small></p>
<div style="display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;page-break-before:avoid;">
{{ wheelchair|function_photos_pdf:'standards' }}
</div>
</div>
<div>
<h2>Zdjęcia funkcji w opcji:</h2>
<p class='m-0 p-0'><small>*Zdjęcie podlądowe. Wyposażenie może się różnić w zależności od modelu wózka oraz
producenta</small></p>
<div style="display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;page-break-before:avoid;">
{{ wheelchair|function_photos_pdf:'optionals' }}
</div>
</div>
Вот код, в котором генерируются белые пробелы, и, чтобы вы знали, я пробовал использовать и не использовать page-break-before. Первый скриншот показывает этот метод:
response = render(request, 'pdf/wheelchair_report_pdf.html', context)
А второй, который не работает, это:
response = generate_pdf(request, 'pdf/wheelchair_report_pdf.html', context, f'formularz_wozkow_{slugify(str(wheelchair))}')
а generate_pdf работает вот так:
def generate_pdf(request, template_path: str, context: dict = None, filename: str = 'pdf_file.pdf'):
"""Generate pdf."""
if context is None:
context = {}
# Rendered
html_template = render_to_string(template_path, context)
css = [
CSS(filename='/static/css/pdf.css'),
'https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css',
]
html = HTML(string=html_template, base_url=request.build_absolute_uri(), url_fetcher=weasyprint_local_fetcher)
result = html.write_pdf(stylesheets=css, presentational_hints=True)
# Creating http response
response = HttpResponse(content_type='application/pdf;')
response['Content-Disposition'] = f'inline; filename={filename}'
response['Content-Transfer-Encoding'] = 'binary'
with tempfile.NamedTemporaryFile(delete=True) as output:
output.write(result)
output.flush()
output = open(output.name, 'rb')
response.write(output.read())
return response
Дайте мне знать, если вам нужно что-то еще от меня, чтобы помочь