Hướng dẫn wkhtmltopdf python - wkhtmltopdf python

I'm trying to convert some HTML files stored locally on my computer to PDF format through a Python script, and I've tried xhtml2pdf but I ran into countless errors and decided to stop using it.

Nội dung chính ShowShow

  • Dẫn nhập
  • Lựa chọn pdfkit ?
  • Cài đặt thư viện
  • Cài đặt wkhtmltopdf
  • Cài đặt pdfkit.
  • Sử dụng pdfkit với Python
  • Sử dụng các các chức năng mặc định.
  • Convert một trang web sang pdf
  • Convert một file html sang pdf
  • Convert một đoạn text sang pdf
  • Thêm một chút nâng cao với pdfkit
  • Thay đổi các cấu hình mặc định.
  • Xử lý trường hợp không có quyền thiết lập $path
  • Convert nhiều nội dung và chung một file.

I heard that wkhtmltopdf was a better alternative and I found a Python package that integrated well into it. Unfortunately, this package requires xvfb which cannot be installed for Windows. Is there any other way to install wkhtmltopdf for Python on Windows?

Thanks for your help!

asked Feb 4, 2012 at 21:50Feb 4, 2012 at 21:50

AmitAmitAmit

2151 gold badge2 silver badges7 bronze badges1 gold badge2 silver badges7 bronze badges

Here's wkhtmltopdf download list, windows installer included

answered Aug 1, 2012 at 12:58Aug 1, 2012 at 12:58

stuudentstuudentstuudent

3524 silver badges11 bronze badges4 silver badges11 bronze badges

This is for windows & linux

  • wkhtmltopdf [download list][1], for windows installer
  • Add the binary "Path" to env variable

    def html_to_pdf():
       with tempfile.NamedTemporaryFile(suffix='.html', delete=False) as temp:
           temp.write(html.encode('windows-1252'))
           temp.seek(0)
           pdfkit.from_file(temp.name, 'out.pdf') 
           temp.close()
           pdf = open('out.pdf', 'r+b')
           response = HttpResponse(pdf.read(), content_type='application/pdf')
           response['Content-Disposition'] = 'attachment; filename=out.pdf'
           pdf.close()
           # remove the locally created pdf file.
           os.remove(temp.name)
           return response
    

answered Mar 27, 2020 at 13:20Mar 27, 2020 at 13:20

Hướng dẫn wkhtmltopdf python - wkhtmltopdf python

Dẫn nhập

Tôi có một bài viết trước đây Sử dụng Jinja template kết hợp với Python tự động sinh file báo cáo từ biểu mẫu, bài viết tiếp theo này tôi sẽ giới thiệu với các bạn một thư viện của Python là pdfkit (dựa trên enginee của wkhtmktopdf) để thực hiện chuyển đổi file html đã tạo được sang file pdf.

Lựa chọn pdfkit ?

Cài đặt thư viện

Cài đặt wkhtmltopdf

Cài đặt thư viện

Cài đặt wkhtmltopdf

Cài đặt wkhtmltopdf

Cài đặt pdfkit.

Sử dụng pdfkit với Python

Sử dụng các các chức năng mặc định.

pip install pdfkit
7

Convert một trang web sang pdf

Convert một file html sang pdf

Convert một đoạn text sang pdf

Cài đặt pdfkit.

Sử dụng pdfkit với Python

pip install pdfkit

Sử dụng các các chức năng mặc định.

Collecting pdfkit
  Downloading pdfkit-0.6.1-py3-none-any.whl (12 kB)
Installing collected packages: pdfkit
Successfully installed pdfkit-0.6.1

Sử dụng pdfkit với Python

Sử dụng các các chức năng mặc định.

Sử dụng các các chức năng mặc định.

Convert một trang web sang pdf

Convert một file html sang pdf

>>> import pdfkit
>>> pdfkit.from_url("https://viblo.asia/newest", "url2pdf.pdf")

Convert một đoạn text sang pdf

Loading pages (1/6)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done
True

Thêm một chút nâng cao với pdfkit

Convert một file html sang pdf

Convert một đoạn text sang pdf

Thêm một chút nâng cao với pdfkit

>>> import pdfkit
>>> pdfkit.from_file('report.html', 'report.pdf')

Thay đổi các cấu hình mặc định.

Loading pages (1/6)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done
True

Xử lý trường hợp không có quyền thiết lập $path

Convert nhiều nội dung và chung một file.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Convert một đoạn text sang pdf

>>> import pdfkit
>>>  pdfkit.from_string("convert dữ liệu string sang pdf", "string.pdf")

Thay đổi các cấu hình mặc định.

Loading pages (1/6)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done
True

Xử lý trường hợp không có quyền thiết lập $path

Convert nhiều nội dung và chung một file.

pip install pdfkit
0

Kết quả thu được:

pdfkit cung cấp khá nhiều các tham số cấu hình khác dựa trên bộ tham số của wkhtmltopdf. Chúng ta sẽ làm quen với một số tham số ở phần tiếp theo.

Thêm một chút nâng cao với pdfkit

Thay đổi các cấu hình mặc định.

Pdfkit cung cấp việc thay đổi một số tham số cầu hình thường gặp giống như lúc chúng ta cấu hình in một văn bản ra máy in văn phòng:

pip install pdfkit
1

Collecting pdfkit
  Downloading pdfkit-0.6.1-py3-none-any.whl (12 kB)
Installing collected packages: pdfkit
Successfully installed pdfkit-0.6.1
3: Khổ giấy của file pdf sau khi convert. Mặc định là A4, có thể thay đổi thành cách giá trị Letter, A5,...

Collecting pdfkit
  Downloading pdfkit-0.6.1-py3-none-any.whl (12 kB)
Installing collected packages: pdfkit
Successfully installed pdfkit-0.6.1
4: Mặc định là khổ giấy xoay dọc (Portrait), có thể thay đổi sang xoay ngang (Landscape)

Collecting pdfkit
  Downloading pdfkit-0.6.1-py3-none-any.whl (12 kB)
Installing collected packages: pdfkit
Successfully installed pdfkit-0.6.1
5: Hiển thị log trong quá trình convert sang pdf. Giá trị ưng với các level đặt log (INFO, WARNING,...). Thường đặt '' trên production để tránh lỗi hiển thị terminal.

Collecting pdfkit
  Downloading pdfkit-0.6.1-py3-none-any.whl (12 kB)
Installing collected packages: pdfkit
Successfully installed pdfkit-0.6.1
6: Dots Per Inch - Độ đậm nét của ký tự trên file pdf. Mặc định là 96. Tham số này không nên thay đổi. Với Windows, UNIX thì wkhtmltopdf sẽ reset về 96pdi, nếu chuyển qua convert trên máy OSX thì mới có thể tăng số lượng dpi lên được.

Collecting pdfkit
  Downloading pdfkit-0.6.1-py3-none-any.whl (12 kB)
Installing collected packages: pdfkit
Successfully installed pdfkit-0.6.1
7: Giãn cách từ vị trí các mép tương ứng đến phần dữ liệu đầu tiên của nội dung của file. Tùy theo nhu cầu mà chúng ta thay đổi hoặc giữ nguyên mặc định.

Các tham số khác (enable/disable css, javascript, ...), các bạn có thể tham khảo thêm từ help của wkhtmltopdf

pip install pdfkit
2

Xử lý trường hợp không có quyền thiết lập $path

Đôi khi bạn không có quyền thực hiện set $PATH trên hệ thống mà vẫn muốn dùng luôn pdfkit, pdfkit sẽ cung cấp một tham số để bạn thực hiện trỏ đường dẫn đến vị trí cài đặt wkhtmltopdf.

Để xem đường dẫn của thư viện wkhtmltopdf, trên Unix, bạn gõ

pip install pdfkit
3

/usr/local/bin/wkhtmltopdf

Trên windows thì dùng tính năng search để tìm xem file wkhtmltopdf.exe ở đâu. Sao chép đường

pip install pdfkit
4

Việc trỏ config trực tiếp này sẽ giúp chúng ta ignore được các lỗi:

IOError: 'No wkhtmltopdf executable found' OSError: 'No wkhtmltopdf executable found'

Convert nhiều nội dung và chung một file.

Đây là một tính năng khá hay của pdfkit. Dưới đây là một ví dụ, thực hiện nối ghép các trang web vào một file cuối cùng.

pip install pdfkit
5

Các bạn có thể làm tương tự với các function

Collecting pdfkit
  Downloading pdfkit-0.6.1-py3-none-any.whl (12 kB)
Installing collected packages: pdfkit
Successfully installed pdfkit-0.6.1
8,
Collecting pdfkit
  Downloading pdfkit-0.6.1-py3-none-any.whl (12 kB)
Installing collected packages: pdfkit
Successfully installed pdfkit-0.6.1
9


Một bài viết ngắn giới thiệu một thư viện nho nhỏ. Cảm ơn các bạn đã đọc bài của tôi!