Py之pdfkit:pdfkit的简介、安装和使用方法、案例应用之详细攻略

Py之pdfkit:pdfkit的简介、安装和使用方法、案例应用之详细攻略Py 之 pdfkit pdfkit 的简介 安装和使用方法 案例应用之详细攻略目录 pdfkit 的简介 pdfkit 的安装和使用方法 pdfkit 的案例应用 pdfkit 的简介 pdfkit 是 Python

大家好,欢迎来到IT知识分享网。

Py之pdfkit:pdfkit的简介、安装和使用方法、案例应用之详细攻略

目录

pdfkit的简介

pdfkit的安装和使用方法

pdfkit的案例应用

1、基础任务

2、指定所有wkhtmltopdf选项

3、在转换文件或字符串时

4、配置

5、调试PDF生成问题

6、常见错误


pdfkit的简介

pdfkit是Python 2 和 3 的封装器,用于使用 Webkit 将 HTML 转换为 PDF 的 wkhtmltopdf 实用工具。pdfkit是 Ruby PDFKit 库的改编版本。

pdfkit的安装和使用方法

pip install pdfkit pip install -i https://mirrors.aliyun.com/pypi/simple pdfkit

pdfkit的案例应用

1、基础任务

# 对于简单的任务:import pdfkitpdfkit.from_url('http://google.com', '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,可以将其读取到一个变量中:# 没有output_path,PDF将被返回以便分配给一个变量pdf = pdfkit.from_url('http://google.com')

2、指定所有wkhtmltopdf选项

可以指定所有wkhtmltopdf选项。您可以在选项名称中省略“ – ”。如果选项没有值,请使用None、False或‘’作为字典值。对于可重复的选项(包括allow、cookie、custom-header、post、postfile、run-script、replace等),您可以使用列表或元组。对于需要多个值的选项(例如 -custom-header Authorization secret),我们可以使用一个2元组(见下面的示例)。

# 可以指定所有wkhtmltopdf选项。您可以在选项名称中省略“ - ”。如果选项没有值,请使用None、False或‘’作为字典值。对于可重复的选项(包括allow、cookie、custom-header、post、postfile、run-script、replace等),您可以使用列表或元组。对于需要多个值的选项(例如 -custom-header Authorization secret),我们可以使用一个2元组(见下面的示例)。
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)

# 默认情况下,PDFKit将使用安静选项运行wkhtmltopdf,因为在大多数情况下不需要输出,并且可能会导致过多的内存使用和损坏的结果。 如果需要获取wkhtmltopdf输出,您应该在API调用中传递verbose=True:
pdfkit.from_url('google.com', 'out.pdf', verbose=True)

# 由于wkhtmltopdf命令语法,TOC和Cover选项必须分开指定。如果需要在TOC之前提供封面,请使用cover_first选项:
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)


3、在转换文件或字符串时

# 在转换文件或字符串时,您可以通过css选项指定外部CSS文件。
# 警告:这是对wkhtmltopdf中此bug的一个解决方法。您应该首先尝试--user-style-sheet选项。
# 单个CSS文件
css = 'example.css'
pdfkit.from_file('file.html', options=options, css=css)

# 多个CSS文件
css = ['example.css', 'example2.css']
pdfkit.from_file('file.html', options=options, css=css)


# 可以通过HTML中的meta标签传递任何选项:
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


# 配置
'''
每个API调用都需要一个可选的配置参数。这应该是pdfkit.configuration() API调用的实例。它将配置选项作为初始参数。可用的选项是:
wkhtmltopdf - wkhtmltopdf二进制文件的位置。默认情况下,pdfkit将尝试使用which(对于UNIX类型系统)或where(对于Windows)来定位它。
meta_tag_prefix - pdfkit特定meta标签的前缀 - 默认情况下是pdfkit-
示例 - 当wkhtmltopdf不在$PATH中时:
'''
config = pdfkit.configuration(wkhtmltopdf='/opt/bin/wkhtmltopdf')
pdfkit.from_string(html_string, output_file, configuration=config)

# 可以使用configuration()调用来检查wkhtmltopdf是否存在于$PATH中:
try:
  config = pdfkit.configuration()
  pdfkit.from_string(html_string, output_file)
except OSError:
  #不在PATH中

# 故障排除
'''
调试PDF生成问题
如果您在生成正确的PDF方面遇到困难,首先应检查wkhtmltopdf输出以获取一些线索,您可以通过将verbose=True传递给API调用来获得它:
'''
pdfkit.from_url('http://google.com', 'out.pdf', verbose=True)


# 在PDF中获得奇怪的结果或某个选项似乎被忽略,您应该尝试直接运行wkhtmltopdf,看看是否产生相同的结果。您可以通过直接创建pdfkit.PDFKit类,然后调用其command()方法来获得CLI命令:
import pdfkit
r = pdfkit.PDFKit('html', 'string', verbose=True)
print(' '.join(r.command()))
# 尝试运行wkhtmltopdf来创建PDF
output = r.to_pdf()


# 常见错误:
IOError:'找不到wkhtmltopdf可执行文件':
确保您的$PATH中有wkhtmltopdf,或者通过自定义配置(参见前面的部分)设置。在Windows中,where wkhtmltopdf或在Linux中which wkhtmltopdf应该返回二进制文件的实际路径。

IOError:"命令失败"
这个错误意味着PDFKit无法处理输入。您可以尝试直接从错误消息中运行一个命令,并查看是什么错误导致了失败(在某些wkhtmltopdf版本中,这可能是由分段错误引起的)


4、配置

# 在转换文件或字符串时,您可以通过css选项指定外部CSS文件。
# 警告:这是对wkhtmltopdf中此bug的一个解决方法。您应该首先尝试--user-style-sheet选项。
# 单个CSS文件
css = 'example.css'
pdfkit.from_file('file.html', options=options, css=css)

# 多个CSS文件
css = ['example.css', 'example2.css']
pdfkit.from_file('file.html', options=options, css=css)


# 可以通过HTML中的meta标签传递任何选项:
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


# 配置
'''
每个API调用都需要一个可选的配置参数。这应该是pdfkit.configuration() API调用的实例。它将配置选项作为初始参数。可用的选项是:
wkhtmltopdf - wkhtmltopdf二进制文件的位置。默认情况下,pdfkit将尝试使用which(对于UNIX类型系统)或where(对于Windows)来定位它。
meta_tag_prefix - pdfkit特定meta标签的前缀 - 默认情况下是pdfkit-
示例 - 当wkhtmltopdf不在$PATH中时:
'''
config = pdfkit.configuration(wkhtmltopdf='/opt/bin/wkhtmltopdf')
pdfkit.from_string(html_string, output_file, configuration=config)

# 可以使用configuration()调用来检查wkhtmltopdf是否存在于$PATH中:
try:
  config = pdfkit.configuration()
  pdfkit.from_string(html_string, output_file)
except OSError:
  #不在PATH中

5、调试PDF生成问题

# 故障排除
'''
调试PDF生成问题
如果您在生成正确的PDF方面遇到困难,首先应检查wkhtmltopdf输出以获取一些线索,您可以通过将verbose=True传递给API调用来获得它:
'''
pdfkit.from_url('http://google.com', 'out.pdf', verbose=True)


# 在PDF中获得奇怪的结果或某个选项似乎被忽略,您应该尝试直接运行wkhtmltopdf,看看是否产生相同的结果。您可以通过直接创建pdfkit.PDFKit类,然后调用其command()方法来获得CLI命令:
import pdfkit
r = pdfkit.PDFKit('html', 'string', verbose=True)
print(' '.join(r.command()))
# 尝试运行wkhtmltopdf来创建PDF
output = r.to_pdf()

6、常见错误


# 常见错误:
IOError:'找不到wkhtmltopdf可执行文件':
确保您的$PATH中有wkhtmltopdf,或者通过自定义配置(参见前面的部分)设置。在Windows中,where wkhtmltopdf或在Linux中which wkhtmltopdf应该返回二进制文件的实际路径。

IOError:"命令失败"
这个错误意味着PDFKit无法处理输入。您可以尝试直接从错误消息中运行一个命令,并查看是什么错误导致了失败(在某些wkhtmltopdf版本中,这可能是由分段错误引起的)


免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/134343.html

(0)
上一篇 2025-07-12 22:26
下一篇 2025-07-12 22:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信