python生成图片和pdf,快速

1、下载安装

复制代码
pip install imgkit
pip install pdfkit

2、wkhtmltopdf工具包,下载安装

下载地址:https://wkhtmltopdf.org/downloads.html

3、生成图片

复制代码
import imgkit
path_wkimg = r'D:\app\wkhtmltopdf\bin\wkhtmltoimage.exe'  # 工具路径,安装的路径
cfg = imgkit.config(wkhtmltoimage=path_wkimg)
# 1、将html文件转为图片
options = {'encoding': 'utf8'} # 解决乱码
imgkit.from_file(r'temp.html', 'helloworld.jpg', config=cfg, options=options)

# 2、从url获取html,再转为图片
# imgkit.from_url('https://httpbin.org/ip', 'ip.jpg', config=cfg, options=options)
# 3、将字符串转为图片
# imgkit.from_string('Hello!', 'hello.jpg', config=cfg)

4、转为pdf

复制代码
import pdfkit
 
 
path_wkpdf = r'D:\app\wkhtmltopdf\bin\wkhtmltopdf.exe'  # 工具路径
cfg = pdfkit.configuration(wkhtmltopdf=path_wkpdf)
 
# 1、将html文件转为pdf
pdfkit.from_file(r'./helloworld.html', 'helloworld.pdf', configuration=cfg)
# 传入列表
pdfkit.from_file([r'./helloworld.html', r'./111.html', r'./222.html'], 'helloworld.pdf', configuration=cfg)
 
# 2、从url获取html,再转为pdf
pdfkit.from_url('https://httpbin.org/ip', 'ip.pdf', configuration=cfg)
# 传入列表
pdfkit.from_url(['https://httpbin.org/ip','https://httpbin.org/ip'], 'ip.pdf', configuration=cfg)
 
# 3、将字符串转为pdf
pdfkit.from_string('Hello!','hello.pdf', configuration=cfg)

5、a4纸张大小

复制代码
import imgkit
path_wkimg = r'D:\app\wkhtmltopdf\bin\wkhtmltoimage.exe'  # 工具路径
cfg = imgkit.config(wkhtmltoimage=path_wkimg)
# # 1、将html文件转为图片
# A4纸张大小
# options = {
#     'encoding': 'utf8', # 解决乱码
#     'width': 599,
#     'height': 845
# }
options = {
    'encoding': 'utf8',
    'width': 599,
    # 'height': 845
}
imgkit.from_file(r'temp.html', 'helloworld.jpg', config=cfg, options=options)

<!DOCTYPE html>
<html>
<head>
    <title>打印</title>
</head>
<body style="margin: 5px">
    <!--<div style="width: 599px;height: 845px">-->
    <div style="width: 599px;height: 100%">
        <div>大得</div>
        <div>大得</div>
    </div>
</body>
</html>

5、a4纸生成图片

复制代码
import imgkit
path_wkimg = r'D:\app\wkhtmltopdf\bin\wkhtmltoimage.exe'  # 工具路径
cfg = imgkit.config(wkhtmltoimage=path_wkimg)
# # 1、将html文件转为图片
# A4纸张大小
# options = {
#     'encoding': 'utf8', # 解决乱码
#     'width': 599,
#     'height': 845
# }
options = {
    'encoding': 'utf8',
    'width': 599,
    'height': 845
}
imgkit.from_file(r'temp.html', 'helloworld.jpg', config=cfg, options=options)

<!DOCTYPE html>
<html>
<head>
    <title>打印</title>
    <style>
        body {
            margin: 5px;
        }

        .container {
            width: 599px;
            height: 100%;
        }

        .row {
            height: 300px;
        }

        .row div {
            /* 允许在单词内部换行,确保长字符串能正常换行 */
            word-wrap: break-word;
            word-break: break-all;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="row">
            <div>大得6666666666669999999999999999999999999999999999999999999999999999999999999999999999977777777777777778888888888888</div>
            <div>大得</div>
        </div>
        <div class="row">
            <div>大得</div>
            <div>大得</div>
        </div>
    </div>
</body>

</html>

6、模糊问题,使用quality,zoom解决

复制代码
import imgkit
path_wkimg = r'D:\app\wkhtmltopdf\bin\wkhtmltoimage.exe'  # 工具路径
cfg = imgkit.config(wkhtmltoimage=path_wkimg)
# # 1、将html文件转为图片
# A4纸张大小
options = {
    'encoding': 'utf8',   # 乱码
    'width': 599,
    'enable-local-file-access': '',  # 允许访问本地文件
    'quality': 100,     # 提高分辨率,100最高
    'zoom': 4       # 增加缩放比例
}
imgkit.from_file(r'temp.html', 'helloworld.jpg', config=cfg, options=options)

<!DOCTYPE html>
<html>
<head>
    <title>打印</title>
</head>
<body style="margin: 5px">
    <div style="width: 599px;height: 100%">
        <div style="height: 300px;">
            <div>大得666666666666999999999999999999999</div>
            <div>大得</div>
        </div>
        <div style="height: 300px;">
            <div>大得</div>
            <div>大得</div>
        </div>
    </div>
</body>
</html>
相关推荐
IVEN_16 小时前
只会Python皮毛?深入理解这几点,轻松进阶全栈开发
python·全栈
Ray Liang17 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
AI攻城狮17 小时前
如何给 AI Agent 做"断舍离":OpenClaw Session 自动清理实践
python
千寻girling17 小时前
一份不可多得的 《 Python 》语言教程
人工智能·后端·python
AI攻城狮20 小时前
用 Playwright 实现博客一键发布到稀土掘金
python·自动化运维
曲幽21 小时前
FastAPI分布式系统实战:拆解分布式系统中常见问题及解决方案
redis·python·fastapi·web·httpx·lock·asyncio
孟健1 天前
Karpathy 用 200 行纯 Python 从零实现 GPT:代码逐行解析
python
码路飞2 天前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
曲幽2 天前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers