Я работаю над преобразованием HTML в PDF, мой HTML содержит классы bootstrap:
Я пробовал два подхода:
- Использование PDFkit
- weasyprint
Ниже мой HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="pdfcss.css">
</head>
<body>
<div class="container-fluid">
<h1>Hello World!</h1>
<p>Resize the browser window to see the effect.</p>
<p>The columns will automatically stack on top of each other when the screen is less than 768px wide.</p>
<div class="row">
<div class="col-sm-4" style="background-color:lavender;">.col-sm-4</div>
<div class="col-sm-4" style="background-color:lavenderblush;">.col-sm-4</div>
<div class="col-sm-4" style="background-color:lavender;">.col-sm-4</div>
</div>
</div>
</body>
</html>
Использование PDKkit:
import pdfkit
css = 'pdfcss.css'
pdfkit.from_file('test_test.html', '/tmp/out.pdf',css=css)
Получен следующий результат в формате PDF введите описание изображения здесь
Используя weasyprint:
from weasyprint import HTML, CSS
HTML(string='<!DOCTYPE html> <html lang="en"> <head> <title>Bootstrap Example</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href=""> </head> <body> <div class="container-fluid"> <h1>Hello World!</h1> <p>Resize the browser window to see the effect.</p> <p>The columns will automatically stack on top of each other when the screen is less than 768px wide.</p> <div class="row"> <div class="col-sm-4" style="background-color:lavender;">.col-sm-4</div> <div class="col-sm-4" style="background-color:lavenderblush;">.col-sm-4</div> <div class="col-sm-4" style="background-color:lavender;">.col-sm-4</div> </div> </div> </body> </html>').write_pdf("/tmp/out.pdf", stylesheets=['/var/www/html/NTAsset-Repo/NtAsset/NtAseetWepApp/website/static/pdfcss.css'])
В обоих случаях CSS не применяется к PDF,
Пожалуйста, помогите мне с этим.