Hướng dẫn pdfkit options python - tùy chọn pdfkit trăn

Hướng dẫn pdfkit options python - tùy chọn pdfkit trăn

Python 2 và 3 bao bọc cho tiện ích wkhtmltopdf để chuyển đổi HTML thành pdf bằng WebKit.

Đây là phiên bản thích nghi của Thư viện Ruby Pdfkit, rất lớn nhờ họ!

Cài đặt

  1. Cài đặt Python-PDFKit:

    $ pip install pdfkit  (or pip3 for python3)
  2. Cài đặt wkhtmltopdf:

  • Debian/Ubuntu:

    $ sudo apt-get install wkhtmltopdf
  • macOS:

    $ brew install homebrew/cask/wkhtmltopdf

Cảnh báo! Phiên bản trong repos debian/ubuntu đã giảm chức năng (vì nó được biên dịch mà không có bản vá wkhtmltopdf . Version in debian/ubuntu repos have reduced functionality (because it compiled without the wkhtmltopdf QT patches), such as adding outlines, headers, footers, TOC etc. To use this options you should install static binary from wkhtmltopdf site or you can use this script.

  • Windows và các tùy chọn khác: Kiểm tra trang chủ WKHTMLTOPDF cho trình cài đặt nhị phân

Cách sử dụng

Đối với các nhiệm vụ đơn giản:

import pdfkit

pdfkit.from_url('http://google.com', 'out.pdf')
pdfkit.from_file('test.html', 'out.pdf')
pdfkit.from_string('Hello!', 'out.pdf')

Bạn có thể truyền một danh sách với nhiều URL hoặc tệp:

pdfkit.from_url(['google.com', 'yandex.ru', 'engadget.com'], 'out.pdf')
pdfkit.from_file(['file1.html', 'file2.html'], 'out.pdf')

Ngoài ra, bạn có thể vượt qua một tệp đã mở:

with open('file.html') as f:
    pdfkit.from_file(f, 'out.pdf')

Nếu bạn muốn xử lý thêm PDF được tạo, bạn có thể đọc nó đến một biến:

# Without output_path, PDF is returned for assigning to a variable
pdf = pdfkit.from_url('http://google.com')

Bạn có thể chỉ định tất cả các tùy chọn WKHTMLTOPDF. Bạn có thể thả ‘ - trong tên tùy chọn. Nếu tùy chọn không có giá trị, không sử dụng không, sai hoặc ‘cho giá trị dict:. Đối với các tùy chọn lặp lại (bao gồm cho phép, cookie, tiêu đề tùy chỉnh, bài đăng, postfile, chạy kịch bản, thay thế), bạn có thể sử dụng danh sách hoặc một tuple. Với tùy chọn cần nhiều giá trị (ví dụ: Bí mật ủy quyền tiêu đề tiêu đề), chúng tôi có thể sử dụng 2-tuple (xem ví dụ bên dưới).

options = {
    'page-size': 'Letter',
    'margin-top': '0.75in',
    'margin-right': '0.75in',
    'margin-bottom': '0.75in',
    'margin-left': '0.75in',
    'encoding': "UTF-8",
    'custom-header': [
        ('Accept-Encoding', 'gzip')
    ],
    'cookie': [
        ('cookie-empty-value', '""')
        ('cookie-name1', 'cookie-value1'),
        ('cookie-name2', 'cookie-value2'),
    ],
    'no-outline': None
}

pdfkit.from_url('http://google.com', 'out.pdf', options=options)

Theo mặc định, PDFKit sẽ chạy WKHTMLTOPDF với tùy chọn yên tĩnh, vì trong hầu hết các trường hợp, đầu ra là không cần thiết và có thể gây ra sử dụng bộ nhớ quá mức và kết quả bị hỏng. Nếu cần nhận đầu ra wkhtmltopdf, bạn nên vượt qua verbose = true cho các cuộc gọi API:wkhtmltopdf with quiet option turned on, since in most cases output is not needed and can cause excessive memory usage and corrupted results. If need to get wkhtmltopdf output you should pass verbose=True to API calls:

pdfkit.from_url('google.com', 'out.pdf', verbose=True)

Do cú pháp lệnh WKHTMLTOPDF, các tùy chọn TOC và bìa phải được chỉ định riêng. Nếu bạn cần nắp trước TOC, hãy sử dụng tùy chọn cover_first:TOC and Cover options must be specified separately. If you need cover before TOC, use cover_first option:

toc = {
    'xsl-style-sheet': 'toc.xsl'
}

cover = 'cover.html'

pdfkit.from_file('file.html', options=options, toc=toc, cover=cover)
pdfkit.from_file('file.html', options=options, toc=toc, cover=cover, cover_first=True)

Bạn có thể chỉ định các tệp CSS bên ngoài khi chuyển đổi tệp hoặc chuỗi bằng tùy chọn CSS.

Cảnh báo đây là một cách giải quyết cho lỗi này trong wkhtmltopdf. Bạn nên thử tùy chọn theo phong cách hàng đầu tiên. This is a workaround for this bug in wkhtmltopdf. You should try –user-style-sheet option first.

$ sudo apt-get install wkhtmltopdf
0

Bạn cũng có thể vượt qua bất kỳ tùy chọn nào thông qua các thẻ meta trong HTML của bạn:

$ sudo apt-get install wkhtmltopdf
1

Cấu hình

Mỗi cuộc gọi API có một tham số cấu hình tùy chọn. Đây phải là một ví dụ của pdfkit.configuration () cuộc gọi API. Nó lấy các tùy chọn cấu hình làm tham số ban đầu. Các tùy chọn có sẵn là:pdfkit.configuration() API call. It takes the configuration options as initial paramaters. The available options are:

  • WKHTMLTOPDF - Vị trí của nhị phân wkhtmltopdf. Theo mặc định, PDFKIT sẽ cố gắng xác định vị trí này bằng cách sử dụng (trên các hệ thống loại UNIX) hoặc ở đâu (trên Windows). - the location of the wkhtmltopdf binary. By default pdfkit will attempt to locate this using which (on UNIX type systems) or where (on Windows).

  • meta_tag_prefix - tiền tố cho các thẻ meta cụ thể pdfkit - theo mặc định, đây là pdfkit- - the prefix for pdfkit specific meta tags - by default this is pdfkit-

Ví dụ - vì khi wkhtmltopdf không có trên đường dẫn $:wkhtmltopdf is not on $PATH:

$ sudo apt-get install wkhtmltopdf
2

Ngoài ra, bạn có thể sử dụng Cấu hình () CALL để kiểm tra xem WKHTMLTOPDF có mặt trong $ PATH:configuration() call to check if wkhtmltopdf is present in $PATH:

$ sudo apt-get install wkhtmltopdf
3

Xử lý sự cố

Vấn đề gỡ lỗi với thế hệ pdf

Nếu bạn đang vật lộn để tạo PDF chính xác trước tiên, bạn nên kiểm tra đầu ra wkhtmltopdf cho một số manh mối, bạn có thể nhận được nó bằng cách chuyển Verbose = true cho các cuộc gọi API:wkhtmltopdf output for some clues, you can get it by passing verbose=True to API calls:

$ sudo apt-get install wkhtmltopdf
4

Nếu bạn nhận được kết quả kỳ lạ trong PDF hoặc một số tùy chọn có vẻ như bị bỏ qua, bạn nên cố gắng chạy WKHTMLTOPDF trực tiếp để xem nó có tạo ra kết quả tương tự không. Bạn có thể nhận lệnh CLI bằng cách tạo trực tiếp lớp pdfkit.pdfkit và sau đó gọi phương thức lệnh () của nó:wkhtmltopdf directly to see if it produces the same result. You can get CLI command by creating pdfkit.PDFKit class directly and then calling its command() method:

$ sudo apt-get install wkhtmltopdf
5

Lỗi thông thường:

  • Ioerror: 'Không có WKHTMLTOPDF thực thi được tìm thấy'::

    Đảm bảo rằng bạn có wkhtmltopdf trong đường dẫn $ hoặc đặt thông qua cấu hình tùy chỉnh (xem phần trước). trong đó wkhtmltopdf trong windows hoặc wkhtmltopdf trên linux sẽ trả lại đường dẫn thực tế về nhị phân.

  • Ioerror: 'lệnh không thành công'

    Lỗi này có nghĩa là PDFKIT không thể xử lý đầu vào. Bạn có thể cố gắng trực tiếp chạy lệnh từ thông báo lỗi và xem lỗi nào gây ra lỗi (trên một số phiên bản WKHTMLTOPDF Điều này có thể là nguyên nhân do lỗi phân đoạn)

Thay đổi

  • 1.0.0
    • Theo mặc định, pdfkit hiện chuyển tùy chọn im lặng cho WKHTMLTOPDF. Bây giờ nếu bạn cần nhận đầu ra, bạn nên vượt qua Verbose = true cho các cuộc gọi API

    • Khắc phục các vấn đề khác nhau bằng cách tìm kiếm nhị phân WKHTMLTOPDF

    • Cập nhật xử lý lỗi cho wkhtmltopdf

    • Khắc phục các vấn đề khác nhau bằng cách xử lý tùy chọn

    • Xử lý tốt hơn đầu vào unicode

    • Chuyển từ Travis sang Github Action

    • Cập nhật readme

  • 0.6.1
    • Khắc phục hồi quy trên Python 3+ khi cố gắng giải mã đầu ra PDF

  • 0.6.0
    • Hỗ trợ các tùy chọn lặp lại

    • Hỗ trợ nhiều giá trị cho một số tùy chọn

    • Sửa một số trường hợp góc khi yêu cầu đơn đặt hàng đối số cụ thể

    • Một số bản sửa lỗi tương thích Python 3+

    • Cập nhật readme

  • 0.5.0
    • Khắc phục hồi quy trên Python 3+ khi cố gắng giải mã đầu ra PDF

    • Hỗ trợ các tùy chọn lặp lại

    • Hỗ trợ nhiều giá trị cho một số tùy chọn

    • Sửa một số trường hợp góc khi yêu cầu đơn đặt hàng đối số cụ thể

    • Cập nhật readme

  • 0.4.1
    • Khắc phục hồi quy trên Python 3+ khi cố gắng giải mã đầu ra PDF

    • Cập nhật readme

  • 0.4.0
    • Khắc phục hồi quy trên Python 3+ khi cố gắng giải mã đầu ra PDF

    • Hỗ trợ các tùy chọn lặp lại

    • Hỗ trợ nhiều giá trị cho một số tùy chọn

    • Sửa một số trường hợp góc khi yêu cầu đơn đặt hàng đối số cụ thể

    • Sửa lỗi

  • 0.3.0
    • Hỗ trợ Python 3

  • 0.2.4
    • Thêm lịch sử

    • Cập nhật setup.py

  • 0.2.3
    • Khắc phục cài đặt bằng setup.py

    • Cập nhật readme