美文网首页python
pdfkit + wkhtmltopdf

pdfkit + wkhtmltopdf

作者: Medivh_ | 来源:发表于2017-12-04 21:47 被阅读36次

    更多关注:
    http://www.mknight.cn

    wkhtmltopdf

    关于wkhtmltopdf的简介:

    • wkhtmltopdf主要用于HTML生成PDF。
    • pdfkit是基于wkhtmltopdf的python封装,支持URL,本地文件,文本内容到PDF的转换,其最终还是调用wkhtmltopdf命令。是目前接触到的python生成pdf效果较好的。

    pdfkit

    关于pdfkit的简介:
    Python和wkhtmltopdf使用webkit引擎将html转变为PDF文件。

    Intsall

    setup 1

    • yum
    yum install wkhtmltopdf
    
    • 如果yum找不到,可以手动下载tar.xz文件
    wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
    tar -xvf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
    cd wkhtmltox/bin
    cp ./* /usr/sbin/
    

    setup 2

    pip install pdfkit
    

    setup 3

    [root@xxx tmp]# wkhtmltopdf -V
    wkhtmltopdf 0.12.4 (with patched qt)
    

    使用

    input 方式

    支持url/file/string的导入。

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

    支持list

    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')
    

    options

    自定义设置

    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-name1', 'cookie-value1'),
            ('cookie-name2', 'cookie-value2'),
        ],
        'no-outline': None,
        'outline-depth': 10,
    }
    
    pdfkit.from_url('http://google.com', 'out.pdf', options=options)
    

    引用css

    # Single CSS file
    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)
    

    支持中文字符

    • 需要找一台有安装了中文字体的电脑复制一份字体文件(就是/usr/share/fonts下的文件),然后操作就可以了。
    • 需要在html的字符集设置为utf8
    <head><meta charset="UTF-8"></head>
    

    参考资料

    https://pypi.python.org/pypi/pdfkit
    https://wkhtmltopdf.org/index.html

    相关文章

      网友评论

        本文标题:pdfkit + wkhtmltopdf

        本文链接:https://www.haomeiwen.com/subject/qbufixtx.html