1

环境和准备工作

python3安装好以后,直接:

pip3 install -i https://mirrors.aliyun.com/pypi/simple/ py3office
环境准备若有问题,可以访问: https://zxl20070701.github.io/notebook/#/life/office/python3/...

单个文件

直接转图片

比如我们有一个pdf文件:demo.pdf,希望转成图片:

#!/usr/bin/python3
# coding=utf-8

from py3office import pdf

pdf.toImage("./demo.pdf", "./")

运行之后,就可以看见当前目录下多了一张图片:demo.jpg。

修改图片名称

那如果想自定义生成后的图片名称怎么办?比如图片名称希望是picture.jpg,修改代码为:

#!/usr/bin/python3
# coding=utf-8

from py3office import pdf

def getName(name, texts, index, total):
    return "picture"
pdf.toImage("./demo.pdf", "./", getName)

根据pdf内容确定图片名称

有时候,我们图片的名称可能希望根据pdf中的内容进行确定,比如pdf截图如下:

修改一下代码如下,打印一下当前pdf中的内容:

#!/usr/bin/python3
# coding=utf-8

from py3office import pdf
from py3office import handler

def getName(name, texts, index, total):
    handler.printList(texts)
    return "picture"
pdf.toImage("./demo.pdf", "./", getName)

打印结果如下:

[0] 介绍
[1] 你可以用来干什么?
[2] VISLite 贡献指南
[3] 你可以用来干什么?
[4] 顾名思义,这是一个轻量级的数据可视化资源库,所以,我们的目
[5] 标是:帮助你更快速、简单、高效的开发出任意的可视化业务产品。
[6] 当然,这并不是一件非常容易的事情,但我们会逐步完善和改进。
[7] 常用的算法
[8] 我们通过提供可视化常用的算法来帮助你绘制复杂图表。比如下面
......

比如我们想取[2] VISLite 贡献指南为图片名称,那么代码就变成了:

#!/usr/bin/python3
# coding=utf-8

from py3office import pdf
from py3office import handler

def getName(name, texts, index, total):
    return texts[2]
pdf.toImage("./demo.pdf", "./", getName)

这样,pdf就被转成了图片:VISLite 贡献指南.jpg。

批量处理

比如当前目录下有一个文件夹pdf,里面有很多pdf文件,目录结构如下:

- pdf
    - 身份证(正面).pdf
    - 身份证(正面).pdf
    - 银行卡
        - 中国银行卡.pdf

我们希望把其中的所有pdf都变成图片(保持原来的目录结构):

#!/usr/bin/python3
# coding=utf-8

from py3office import pdf
from py3office import handler

sourcePath = "./pdf"
targetPath = "./image"

def doit(fileInfo):
    if fileInfo["path"].endswith(".pdf"):

        def getName(name, texts, index, total):
            return name

        pdf.toImage(
            fileInfo["path"],
            fileInfo["folder"].replace(sourcePath, targetPath),
            getName,
        )


handler.listFile(sourcePath, doit)

运行后会在当前目录多一个文件夹image,目录结构如下:

- image
    - 身份证(正面).jpg
    - 身份证(正面).jpg
    - 银行卡
        - 中国银行卡.jpg
温馨提示:对于单个文件中对图片名称的说明,这里类似的直接修改getName返回值也是可行的。

zxl20070701
136 声望14 粉丝