欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)將HTML轉(zhuǎn)成PDF的方法分析

 更新時(shí)間:2019年05月04日 12:38:50   作者:Tacey Wong  
這篇文章主要介紹了Python實(shí)現(xiàn)將HTML轉(zhuǎn)成PDF的方法,結(jié)合實(shí)例形式分析了Python基于pdfkit模塊實(shí)現(xiàn)HTML轉(zhuǎn)換成PDF文件的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Python實(shí)現(xiàn)將HTML轉(zhuǎn)成PDF的方法。分享給大家供大家參考,具體如下:

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

安裝

1. Install python-pdfkit:

$ pip install pdfkit

2. Install wkhtmltopdf:

  • Debian/Ubuntu:
$ sudo apt-get install wkhtmltopdf

  • Redhat/CentOS
sudo yum intsall wkhtmltopdf

  • MacOS
brew install Caskroom/cask/wkhtmltopdf

使用

一個(gè)簡(jiǎn)單的例子:

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

你也可以傳遞一個(gè)url或者文件名列表:

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

也可以傳遞一個(gè)打開的文件:

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

如果你想對(duì)生成的PDF作進(jìn)一步處理, 你可以將其讀取到一個(gè)變量中:

# 設(shè)置輸出文件為False,將結(jié)果賦給一個(gè)變量
pdf = pdfkit.from_url('http://google.com', False)

你可以制定所有的 wkhtmltopdf 選項(xiàng) <http://wkhtmltopdf.org/usage/wkhtmltopdf.txt>. 你可以移除選項(xiàng)名字前面的 '--' .如果選項(xiàng)沒有值, 使用None, Falseor * 作為字典值:

  options = {
    'page-size': 'Letter',
    'margin-top': '0.75in',
    'margin-right': '0.75in',
    'margin-bottom': '0.75in',
    'margin-left': '0.75in',
    'encoding': "UTF-8",
    'no-outline': None
  }
  pdfkit.from_url('http://google.com', 'out.pdf', options=options)

默認(rèn)情況下, PDFKit 將會(huì)顯示所有的 wkhtmltopdf 輸出. 如果你不想看到這些信息,你需要傳遞一個(gè) quiet 選項(xiàng):

  options = {
    'quiet': ''
    }
  pdfkit.from_url('google.com', 'out.pdf', options=options)

由于wkhtmltopdf的命令語法 , TOC 和 Cover 選項(xiàng)必須分開指定:

  toc = {
    'xsl-style-sheet': 'toc.xsl'
  }
  cover = 'cover.html'
  pdfkit.from_file('file.html', options=options, toc=toc, cover=cover)

當(dāng)你轉(zhuǎn)換文件、或字符串的時(shí)候,你可以通過css選項(xiàng)指定擴(kuò)展的 CSS 文件。

  # 單個(gè) 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傳遞任意選項(xiàng):

  body = """
    <html>
     <head>
      <meta name="pdfkit-page-size" content="Legal"/>
      <meta name="pdfkit-orientation" content="Landscape"/>
     </head>
     Hello World!
     </html>
    """
  pdfkit.from_string(body, 'out.pdf') #with --page-size=Legal and --orientation=Landscape

配置

每個(gè)API調(diào)用都有一個(gè)可選的參數(shù)。這應(yīng)該是pdfkit.configuration()API 調(diào)用的一個(gè)實(shí)例. 采用configuration 選項(xiàng)作為初始化參數(shù)??捎玫倪x項(xiàng)有:

  • wkhtmltopdf ——wkhtmltopdf二進(jìn)制文件所在的位置。默認(rèn)情況下pdfkit 會(huì)嘗試使用which (在類UNIX系統(tǒng)中) 或 where (在Windows系統(tǒng)中)來判斷.
  • meta_tag_prefix -- pdfkit的前綴指定 meta tags(元標(biāo)簽) - 默認(rèn)情況是pdfkit-

示例 :針對(duì)wkhtmltopdf不在系統(tǒng)路徑中(不在$PATH里面):

config = pdfkit.configuration(wkhtmltopdf='/opt/bin/wkhtmltopdf'))
pdfkit.from_string(html_string, output_file, configuration=config)

問題

  • IOError: 'No wkhtmltopdf executable found':

確保 wkhtmltopdf 在你的系統(tǒng)路徑中($PATH), 會(huì)通過 configuration進(jìn)行了配置 (詳情看上文描述)。 在Windows系統(tǒng)中使用where wkhtmltopdf命令 或 在 linux系統(tǒng)中使用 which wkhtmltopdf 會(huì)返回 wkhtmltopdf二進(jìn)制可執(zhí)行文件所在的確切位置.

  • IOError: 'Command Failed'

如果出現(xiàn)這個(gè)錯(cuò)誤意味著 PDFKit不能處理一個(gè)輸入。你可以嘗試直接在錯(cuò)誤信息后面直接運(yùn)行一個(gè)命令來查看是什么導(dǎo)致了這個(gè)錯(cuò)誤 (某些版本的 wkhtmltopdf會(huì)因?yàn)槎五e(cuò)誤導(dǎo)致處理失?。?/p>

  • 正常生成,但是出現(xiàn)中文亂碼

確保兩項(xiàng):

1)、你的系統(tǒng)中有中文字體

2)、在html中加入<meta charset="UTF-8">

下面是我隨便寫的一個(gè)HTML表格:

<html>
<head><meta charset="UTF-8"></head>
<body>
<table width="400" border="1">
 <tr>
 <th align="left">Item....</th>
 <th align="right">1</th>
 </tr>
 <tr>
 <td align="left">衣服</td>
 <td align="right">$241.10</td>
 </tr>
 <tr>
 <td align="left">化妝品</td>
 <td align="right">$30.00</td>
 </tr>
 <tr>
 <td align="left">食物</td>
 <td align="right">$730.40</td>
 </tr>
 <tr>
 <th align="left">tOTAL</th>
 <th align="right">$1001.50</th>
 </tr>
</table>
</body>
</html>

下面是生成的PDF截圖

另:https://pdfcrowd.com/#convert_by_input

更多Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python文件與目錄操作技巧匯總》、《Python編碼操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python中shape計(jì)算矩陣的方法示例

    Python中shape計(jì)算矩陣的方法示例

    這篇文章主要介紹了Python中shape計(jì)算矩陣的方法,涉及Python數(shù)學(xué)運(yùn)算相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-04-04
  • 使用Python實(shí)現(xiàn)圖片和base64轉(zhuǎn)換工具

    使用Python實(shí)現(xiàn)圖片和base64轉(zhuǎn)換工具

    這篇文章主要為大家詳細(xì)介紹了如何使用Python中的base64模塊編寫一個(gè)工具,可以實(shí)現(xiàn)圖片和Base64編碼之間的轉(zhuǎn)換,感興趣的小伙伴可以了解下
    2025-02-02
  • Python3.4學(xué)習(xí)筆記之常用操作符,條件分支和循環(huán)用法示例

    Python3.4學(xué)習(xí)筆記之常用操作符,條件分支和循環(huán)用法示例

    這篇文章主要介紹了Python3.4常用操作符,條件分支和循環(huán)用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python3.4常見的數(shù)學(xué)運(yùn)算、邏輯運(yùn)算操作符,條件分支語句,循環(huán)語句等功能與基本用法,需要的朋友可以參考下
    2019-03-03
  • python字典的常用方法總結(jié)

    python字典的常用方法總結(jié)

    在本篇文章里小編給大家整理的是關(guān)于python字典的常用方法以及相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們參考下。
    2019-07-07
  • 探索Python?Furl高性能URL構(gòu)建解析和操作功能實(shí)例

    探索Python?Furl高性能URL構(gòu)建解析和操作功能實(shí)例

    本文將提供關(guān)于Python?Furl的全面指南,包括安裝和配置、基本概念、URL解析、URL構(gòu)建、查詢參數(shù)操作、片段處理、實(shí)際應(yīng)用場(chǎng)景以及豐富的示例代碼
    2024-01-01
  • Python進(jìn)階之利用+和*進(jìn)行列表拼接

    Python進(jìn)階之利用+和*進(jìn)行列表拼接

    在我們學(xué)習(xí)python的過程中,有一個(gè)非常常見的語法,那就是利用+和*進(jìn)行序列的拼接以及其他操作。今天就帶大家從使用+和*進(jìn)行拼接出發(fā)認(rèn)識(shí)一個(gè)大家非常容易犯的代碼錯(cuò)誤。話不多說我們開始吧
    2023-04-04
  • 使用Python實(shí)現(xiàn)照片按照日期自動(dòng)分類的操作指南

    使用Python實(shí)現(xiàn)照片按照日期自動(dòng)分類的操作指南

    最近準(zhǔn)備把近幾年手機(jī)里面存儲(chǔ)的照片按年份分類存儲(chǔ)到硬盤里面,不知不覺累積了4000多張照片,人工一張張分類實(shí)在是太費(fèi)時(shí)間、也容易出錯(cuò),所以本文給大家介紹了使用Python實(shí)現(xiàn)照片按照日期自動(dòng)分類的操作指南,需要的朋友可以參考下
    2025-08-08
  • 通過Django Admin+HttpRunner1.5.6實(shí)現(xiàn)簡(jiǎn)易接口測(cè)試平臺(tái)

    通過Django Admin+HttpRunner1.5.6實(shí)現(xiàn)簡(jiǎn)易接口測(cè)試平臺(tái)

    這篇文章主要介紹了通過Django Admin+HttpRunner1.5.6實(shí)現(xiàn)簡(jiǎn)易接口測(cè)試平臺(tái),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 利用PyQt5+Matplotlib 繪制靜態(tài)/動(dòng)態(tài)圖的實(shí)現(xiàn)代碼

    利用PyQt5+Matplotlib 繪制靜態(tài)/動(dòng)態(tài)圖的實(shí)現(xiàn)代碼

    這篇文章主要介紹了利用PyQt5+Matplotlib 繪制靜態(tài)/動(dòng)態(tài)圖的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 如何用Python Beautiful?Soup解析HTML內(nèi)容

    如何用Python Beautiful?Soup解析HTML內(nèi)容

    Beautiful Soup是一種Python的解析庫(kù),主要用于解析和處理HTML/XML內(nèi)容,詳細(xì)介紹Beautiful Soup的使用方式和應(yīng)用場(chǎng)景,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05

最新評(píng)論