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>
相关推荐
2601_962297254 分钟前
Python、Pytest、Allure、Selenium和Jenkins实现自动化测试集成实例
python·selenium·jenkins·pytest·allure
tedcloud1235 分钟前
OpenLogi 怎么搭建?用 Rust 打造一个轻量的 Logitech 外设管理工具
linux·运维·服务器·开发语言·后端·rust·开源
今天AI了吗18 分钟前
Codex 配置自定义 AI API 完整指南:从零到一接入你的专属模型
java·人工智能·python·数据分析·embedding
Tanjia_kiki23 分钟前
谷歌浏览器中F12编辑并重发请求
开发语言·前端·javascript
阿童木写作24 分钟前
跨境电商批量图片翻译与视频字幕翻译工具推荐
python·音视频
程序猿编码26 分钟前
基于GGML的C++17轻量化语音推理引擎:说话人识别与语音分析技术全解析
开发语言·c++·pytorch·深度学习·神经网络·大模型
leihefeng32 分钟前
手写数字识别:KNN vs 逻辑回归实战
python·算法·机器学习·逻辑回归·scikit-learn
SunnyDays101144 分钟前
如何使用 Python 从 Word 文档中提取图片
python·word
2601_962097361 小时前
Pathway 实时RAG新方案:抛弃Spark、Flink,生产级数据管道
python·流处理·大数据集群·实时rag·pathway
三十岁老牛再出发1 小时前
9月3日总结
python