文档转PDF
这里是利用WPS进行转换,要先安装WPS。
安装依赖
1 | pip install pypiwin32 |
代码
1 | #!/usr/bin/python |
PDF转图片
方式1
fitz
1 | pip install fitz |
顺序转换
1 | import fitz |
结果
1 | 时间差:16.93852996826172 |
多线程
方式1我切换为多线程依旧作用不大
1 | import fitz |
转换时间没有减少反而增多了,用时17s。
原因在于Python的多线程是伪多线程,同时只能有一个线程运行。
多进程
方式1改为多进程
1 | import fitz |
这样转换时间大幅缩短,用时不到4s。
方式2
安装poppler
https://blog.alivate.com.au/poppler-windows/
添加bin对应目录到环境变量
注意
如果调用方法传入poppler_path参数,则不用设置环境变量。
https://github.com/Belval/pdf2image
安装依赖
1 | pip install pdf2image |
转换代码
1 | from pdf2image import convert_from_path, convert_from_bytes |
转换时间对比
PDF页数 | 是否带水印 | 方式1(s) | 方式2(s) | 方式2-4线程(s) |
---|---|---|---|---|
1 | 否 | 0.0596313 | 0.1325932 | 0.1315048 |
2 | 是 | 0.2342085 | 0.2125386 | 0.1481465 |
145 | 否 | 23.7634431 | 16.4102064 | 5.3497324 |
448 | 否/纯文字 | 20.5313859 | 30.8443124 | 8.4962063 |
结论
- 转换速度方式2在页面少的时候时间稍长,但是一旦页码多的时候方式2优势就比较明显。
- 两种都能正常转换带水印的文档。
- 如果文档都是纯文字GBK的时候,方式1转换正常,而方式2乱码。