惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tailwind CSS Blog
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 【当耐特】
The Cloudflare Blog
博客园 - 聂微东
博客园 - 司徒正美
量子位
博客园 - 三生石上(FineUI控件)
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
G
Google Developers Blog
Apple Machine Learning Research
Apple Machine Learning Research
罗磊的独立博客
酷 壳 – CoolShell
酷 壳 – CoolShell
Y
Y Combinator Blog
S
SegmentFault 最新的问题
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
Google DeepMind News
Google DeepMind News
Blog — PlanetScale
Blog — PlanetScale
有赞技术团队
有赞技术团队
A
About on SuperTechFans

又耳笔记

用AI挣钱之AI建站:二维码生成器工具 用AI挣钱之AI建站:https://markdowntopdf.top Cloudflare Workers实战番外一:用Static Assets托管网站,告别传统方案 Cloudflare Workers实战(五):不止JavaScript,拥抱Python与Rust Cloudflare Workers实战(四):托管和分发静态文件 Cloudflare Workers实战(三):实现认证、重定向与缓存 Cloudflare Workers实战(二):动态修改后端响应 Cloudflare Workers实战(一):随心所欲操作客户端请求 Cloudflare workers不完全指南 使用n8n创作短篇小说 水果风波:信任的代价 rust网络框架Pingora源码阅读3 rust网络框架Pingora源码阅读2 rust网络框架Pingora源码阅读1 Pingora快速入门教程1之总览 Rust模板引擎askama快速入门引擎 使用Loco快速搭建自己的后台系统 用Rust发一封图文并茂的邮件 Rust小项目: 写一个简单的恶意流量阻断器 Rust小项目: 写一个简单的网页爬虫 Rust命令行库Clap快速入门教程 Rust小项目:用Rust写一个端口扫描器 Rust真全栈开发快速入门 rust声明宏快速入门教程 Rust文本处理快速入门教程 RUST web框架axum快速入门教程6之测试 白嫖免费的Rust在线运行时shuttle RUST web框架axum快速入门教程5之中间件 用Rust来做以太坊开发5之事件日志及签名 《英语语法分解大全》读后感
用Python将PDF文件转换成图片
About 又耳宁 关于技术与股票的一些零碎想法 · 2024-06-08 · via 又耳笔记

这个问题其实不是太复杂,可以通过在线的工具或者付费的工具完成,但是在线服务需要将文件上传到别人手里,而付费工具一般需要买会员,仅仅用一下就开个会员实在麻烦,再者批量搞起来也不方便,所以搜索了一下相关代码,代码是Python语言。

安装依赖

首先安装Python依赖

这个Python包依赖一个poppler的二进制文件, 所以windows可以去https://github.com/oschwartz10612/poppler-windows/releases/ 下载最新的版本, 解压到某个目录,比如C:\Users\Administor\workspace\poppler-24.02.0, 然后将C:\Users\YE\workspace\poppler-24.02.0\Library\bin目录加到PATH环境变量里面。

上面的准备工作完成之后就可以运行代码了,代码如下。

from os import path
from pdf2image import convert_from_path

pdf_path = "example.pdf"
filename = ".".join(path.basename(pdf_path).split(".")[:-1])
images = convert_from_path(pdf_path)

for index, image in enumerate(images):
    # 当然了,你可以可以将格式设置成其他格式, 比如png
    image.save(f'{filename}-{index}.jpg')

这样你就获得了跟PDF页数一致的一组图片。

将PDF转成一张图片

有时候我们可能还需要将这些图片合在一起,那么可以参考以下代码.

from os import path

from PIL import Image
from pdf2image import convert_from_path

pdf_path = "example.pdf"
filename = ".".join(path.basename(pdf_path).split(".")[:-1])
images = convert_from_path(pdf_path)
# 计算图片的总高度
total_height = sum([img.height for img in images])
# 计算图片的最大宽度
total_width = max([img.width for img in images])
# 创建一个空格image对象
output_image = Image.new(images[0].mode, (total_width, total_height))

upper = 0
for index, img in enumerate(images):
    # 我们以左上角作为起始点进行粘贴
    output_image.paste(img, (index, upper))
    upper += img.height

# 保存
output_image.save(f"{filename}.png")

小结

小工具用Python还是很顺手的,第三方库多且语法简单。

参考链接