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>
相关推荐
JavaPub-rodert5 分钟前
我把 OpenAI 协议塞进了 Go 工具库:go-commons 开始支持 AI 了
开发语言·人工智能·golang
caimouse5 分钟前
ReactOS 图形系统分析(23):引擎内存管理 — mem.c
c语言·开发语言
caimouse5 分钟前
ReactOS 图形系统分析(15):窗口对象 — EWNDOBJ(engwindow.c)
c语言·开发语言
青 春 记 忆9 分钟前
零基础入门python07:让程序记住数据——JSON文件和异常处理
开发语言·windows·python·json·python3.11
清水白石00819 分钟前
Python 如何设计一个线程安全的缓存?从锁策略、LRU 到工程化实战
python·安全·缓存
qq_225891746623 分钟前
基于Flask的城市地铁客流量数据预测系统设计与实现
后端·python·flask
W_3260030 分钟前
Python 常用标准 / 第三方库:random、tqdm、turtle、jieba 用法
开发语言·python
OptimizationMaster36 分钟前
Python对视频文件分类,“横屏”和“竖屏”
python·视频
XLYcmy42 分钟前
PDF论文处理器 - 功能总结
数据库·python·pdf·csv·pymupdf·dify·文本分割