Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách chuyển đổi HTML sang pdf bằng cách sử dụng wkhtmltopdf trong Django hoặc python. Đây là tệp pdf mà tôi đang tạo trong hướng dẫn này. Đầu tiên, chúng ta sẽ tìm hiểu cách cài đặt wkhtmltopdf và thiết lập cái này cho dự án Django hoặc python của bạn
wkhtmltopdf là gì?
wkhtmltopdf là trình bao bọc để chuyển đổi tệp HTML thành PDF
Yêu cầu
1. Truy cập trang web sau https. //wkhtmltopdf. tổ chức/tải xuống. html và tải xuống trình cài đặt wkhtmltopdf. Tôi đang tải xuống trình cài đặt wkhtmltopdf 64 bit vì tôi đang sử dụng máy Windows. Tập tin wkhtmltox. exe sẽ được tải xuống bằng cách nhấp vào 64 bit [hoặc bất kỳ]
2. Chạy wkhtmltox. exe để khởi chạy cài đặt. Trong tình huống của tôi, tôi đang thiết lập các tệp tại C/Program Files/wkhtmltopdf
3. Bây giờ điều hướng đến thư mục C/Program Files/wkhtmltopdf/bin. Sao chép wkhtmltopdf. exe và dán nó vào thư mục gốc của dự án Django của bạn.
4. cài đặt pdfkit. pip cài đặt pdfkit
Tạo PDF từ HTML
Thêm tệp HTML vào thư mục mẫu dự án Django mà bạn muốn chuyển đổi thành pdf. Tệp HTML của tôi là pdf_template. html. Bạn có thể tải về từ đây
Đầu ra của tệp HTML trên sẽ như thế này
Lượt xem. py
Bây giờ trong quan điểm của bạn. py thêm mã để chuyển đổi HTML sang PDF
# views.py
from django.conf import settings
from django.template.loader import get_template
from django.http import HttpResponse
import os
import pdfkit
# path to your wkhtmltopdf.exe file
wkhtml_to_pdf = os.path.join[
settings.BASE_DIR, "wkhtmltopdf.exe"]
def resume_pdf[request, *args, **kwargs]:
options = {
'page-size': 'A4',
'page-height': "13in",
'page-width': "10in",
'margin-top': '0in',
'margin-right': '0in',
'margin-bottom': '0in',
'margin-left': '0in',
'encoding': "UTF-8",
'no-outline': None
}
template_path = 'pdf_template.html'
template = get_template[template_path]
context = {"name": "Areeba Seher"}
html = template.render[context]
config = pdfkit.configuration[wkhtmltopdf=wkhtml_to_pdf]
pdf = pdfkit.from_string[html, False, configuration=config, options=options]
# Generate download
response = HttpResponse[pdf, content_type='application/pdf']
response['Content-Disposition'] = 'attachment; filename="resume.pdf"'
# print[response.status_code]
if response.status_code != 200:
return HttpResponse['We had some errors ' + html + '
']
return response
url. py
Thêm URL của chế độ xem trong url. py
# urls.py
from django.urls import path
from .views import resume_pdf
urlpatterns = [
......
path['resume-pdf', resume_pdf, name="resume-pdf"],
......
]
Bây giờ hãy truy cập localhost/sơ yếu lý lịch-pdf. Tệp HTML của bạn sẽ được chuyển đổi và tải xuống thành pdf
Ghi chú. Đối với wkhtmltopdf, tôi thích sử dụng HTML CSS tùy chỉnh hơn. Nhưng bạn cũng có thể sử dụng bootstrap
Cách thêm ngắt trang trong wkhtmltopdf
Bạn có thể sử dụng các lớp CSS này để thêm dấu ngắt trang và giữ nội dung lại với nhau
.keep-together {
page-break-inside: avoid;
}
.break-before {
page-break-before: always;
}
.break-after {
page-break-after: always;
}
I am heading on 2nd page
Nguồn. StackOverflow
Đó là tất cả. Nếu bạn thấy nó hữu ích thì hãy thể hiện tình yêu và sự ủng hộ bằng cách vỗ tay hoặc mua cà phê cho tôi. Và đừng quên chia sẻ nó với bạn bè của bạn. Trong trường hợp có bất kỳ vấn đề gì, bạn có thể bình luận tại đây hoặc bạn cũng có thể liên hệ trực tiếp với tôi thông qua LinkedIn của tôi
Những bài viết liên quan
HTML sang hình ảnh trong Django/Python
Tôi sẽ rất cảm kích nếu bạn đăng ký kênh YouTube của tôi, Let's Code More
⋅ 6 bình luận đã được đăng
Tháng một. 27, 2023, 11. 44p. m. - hochzeit
Wow, bố cục blog tuyệt vời. Bạn đã viết blog được bao lâu rồi? . Giao diện tổng thể của trang web của bạn thật tuyệt vời, chưa nói đến nội dung
Hồi đápTháng một. 28, 2023, 10. 24 giờ. m. – Areeba Seher
Tôi rât cảm kich; . Vui lòng cho tôi biết nếu bạn muốn mua chủ đề này
Hồi đápTháng một. 11, 2023, 8. 22 một. m. -nupcias
¡Me encanta este post. Leo tu blog muy a menudo y siempre ofreces grandes textos. Lo compartí en Facebook y a mis seguidores les encantó. ¡Seguid con el buen trabajo
Tháng một. 11, 2023, 8. 26 một. m. – Areeba Seher
Cảm ơn bạn rất nhiều vì đã đánh giá cao và chia sẻ bài đăng trên blog của tôi trên Facebook của bạn. ❤️
Hồi đápTháng mười hai. 23, 2022, 9 a. m. - hochzeitszeremonie
Đó thực sự là một thông tin thú vị và hữu ích. Tôi hài lòng rằng bạn chỉ cần chia sẻ thông tin hữu ích này với chúng tôi. Hãy giữ cho chúng tôi được cập nhật như thế này. Cám ơn vì đã chia sẻ