使用Python將HTML轉成PDF

2021-09-07 22:16:14 字數 3043 閱讀 2879

主要使用的是wkhtmltopdf的python封裝——pdfkit

1. install python-pdfkit:

$ pip install pdfkit
2. install wkhtmltopdf:

$ sudo apt-get install wkhtmltopdf
sudo yum intsall wkhtmltopdf
brew install caskroom/cask/wkhtmltopdf
乙個簡單的例子:

import pdfkit

pdfkit.from_url('', 'out.pdf')

pdfkit.from_file('test.html', 'out.pdf')

pdfkit.from_string('hello!', 'out.pdf')

你也可以傳遞乙個url或者檔名列表:

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

pdfkit.from_file(['file1.html', 'file2.html'], 'out.pdf')

也可以傳遞乙個開啟的檔案:

with open('file.html') as f:

pdfkit.from_file(f, 'out.pdf')

如果你想對生成的pdf作進一步處理, 你可以將其讀取到乙個變數中:

# 設定輸出檔案為false,將結果賦給乙個變數

pdf = pdfkit.from_url('', false)

你可以制定所有的 wkhtmltopdf選項. 你可以移除選項名字前面的 '--' .如果選項沒有值, 使用none, falseor*作為字典值:

options = 

pdfkit.from_url('', 'out.pdf', options=options)

預設情況下, pdfkit 將會顯示所有的wkhtmltopdf輸出. 如果你不想看到這些資訊,你需要傳遞乙個quiet選項:

options = 

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

由於wkhtmltopdf的命令語法 ,toccover選項必須分開指定:

toc = 

cover = 'cover.html'

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

當你轉換檔案、或字串的時候,你可以通過css選項指定擴充套件的 css 檔案。

# 單個 css 檔案

css = 'example.css'

pdfkit.from_file('file.html', options=options, css=css)

# multiple css files

css = ['example.css', 'example2.css']

pdfkit.from_file('file.html', options=options, css=css)

你也可以通過你的html中的meta tags傳遞任意選項:

body = """

hello world!

"""pdfkit.from_string(body, 'out.pdf') #with --page-size=legal and --orientation=landscape

每個api呼叫都有乙個可選的引數。這應該是pdfkit.configuration()api 呼叫的乙個例項. 採用configuration 選項作為初始化引數。可用的選項有:

示例 :針對wkhtmltopdf不在系統路徑中(不在$path裡面):

config = pdfkit.configuration(wkhtmltopdf='/opt/bin/wkhtmltopdf'))

pdfkit.from_string(html_string, output_file, configuration=config)

確保 wkhtmltopdf 在你的系統路徑中($path), 會通過 configuration進行了配置 (詳情看上文描述)。 在windows系統中使用where wkhtmltopdf命令 或 在 linux系統中使用which wkhtmltopdf會返回 wkhtmltopdf二進位制可執行檔案所在的確切位置.

確保兩項:

1)、你的系統中有中文字型

2)、在html中加入

下面是我隨便寫的乙個html**:

item....

1 衣服

$241.10

化妝品$30.00

食物$730.40

total

$1001.50

下面是生成的pdf截圖

另:

python將json資料轉成字典

做文字分類的時候,給定的資料集是json格式的,用jieba分詞需要用字典,而且給定的資料集只需要其中的兩個字段。所以第一步就是將json資料轉成只包含所需兩個欄位的字典 import json f open data test.json r encoding utf 8 for line in f...

將首頁轉成靜態html頁的asp檔案

此程式只能將首頁轉成靜態 真對乙個頁面 將createhtml.asp檔案上傳到 你的空間存放首頁檔案 index.asp 的目錄下 錄入 直接開啟createhtml.asp接提示操作就可以了 如果沒有轉成功可將createhtml.asp更名試一下 如 改成z.asp 錄入 直接開啟z.asp ...

使用jackson將Map轉成Json字串

這裡主要是用 com fasterxml jackson databind suppresswarnings resource public string writevalueasstring object value throws jsonprocessingexception 例如 map ma...