当前位置: 首页 > news >正文

Python一步到位实现图像转PDF自动化处理详解


什么是 img2pdf 库?

img2pdf 是一个 Python 库,它可以让你轻松地把多张图像转换为 PDF 文件。它支持多种图像格式,如 JPG, PNG, GIF, BMP 等,并且可以自动调整图像的大小和方向,以适应 PDF 的页面大小和方向。它还可以让你设置 PDF 的元数据,如标题,作者,主题等。

640?wx_fmt=png&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

为什么要使用 img2pdf 库?

有时候,你可能需要把一些图像文件整理成一个 PDF 文件,以便于打印,分享或存档。例如,你可能想把一些扫描的文档,照片或漫画转换为 PDF 文件。或者,你可能想把一些数据可视化的图表或报告转换为 PDF 文件。使用 img2pdf 库,你可以快速地完成这些任务,而不需要安装其他的软件或工具。

如何安装 img2pdf 库?

要使用 img2pdf 库,你首先需要安装 Python 环境。如果你还没有安装 Python,请参考这里的教程。安装好 Python 后,你可以使用 pip 命令来安装 img2pdf 库。在命令行中输入以下命令:

pip install img2pdf

等待安装完成后,你就可以开始使用 img2pdf 库了。

如何使用 img2pdf 库?

要使用 img2pdf 库,你只需要导入它,并调用它的 write_pdf 函数。这个函数接受两个参数:一个是图像文件的列表,一个是输出的 PDF 文件名。例如,如果你有三张图像文件:cat.jpgdog.jpgbird.jpg,并且想把它们转换为一个名为 animals.pdf 的 PDF 文件,你可以写以下代码:

640?wx_fmt=png&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

import img2pdfimages = ["cat.jpg", "dog.jpg", "bird.jpg"]
output = "animals.pdf"# 创建一个PDF文件 并以二进制方式写入
with open(output, "wb") as f:# convert函数 用来转PDFwrite_content = img2pdf.convert(images)f.write(write_content) # 写入文件
print("转换成功!") # 提示语

运行这段代码后,你就会在当前目录下看到一个名为 animals.pdf 的文件。打开它,你就会看到三张图像按照顺序排列在不同的页面上。

640?wx_fmt=png&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

如果你想调整图像在 PDF 中的大小和方向,你可以使用 write_pdf 函数的可选参数来设置。例如,如果你想让所有的图像都都横向显示,你可以写以下代码:

import img2pdf
from PIL import Image# List of image file paths
image_paths = ["cat.jpg", "dog.jpg", "bird.jpg"]
output = "animals.pdf"# Function to resize and rotate images
def resize_and_rotate_image(image_path):# Open the image using PILimage = Image.open(image_path)# Rotate the image to landscape orientationimage = image.rotate(90, expand=True)# Return the modified imageimage.save("new—"+image_path)return "new—"+image_path# List to store modified images
modified_images = []# Loop through each image path
for path in image_paths:# Resize and rotate the imagemodified_image = resize_and_rotate_image(path)modified_images.append(modified_image)# Convert modified images to PDF
pdf_bytes = img2pdf.convert(modified_images)# Save the PDF to a file
with open(output, "wb") as f:f.write(pdf_bytes)

运行这段代码后,你就会得到一个不同的 PDF 文件,其中所有的图像都都横向显示。

640?wx_fmt=png&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

总结

在这篇教程中,我们学习了如何使用 Python 中的 img2pdf 库,只用几行代码就把多张图像转换为 PDF 文件。同时还学习了如何调整图像在 PDF 中的大小和方向,以及如何设置 PDF 的元数据。希望这篇教程对你有用,如果你有任何问题或建议,请在下方留言。谢谢!

相关文章:

Python一步到位实现图像转PDF自动化处理详解

什么是 img2pdf 库? img2pdf 是一个 Python 库,它可以让你轻松地把多张图像转换为 PDF 文件。它支持多种图像格式,如 JPG, PNG, GIF, BMP 等,并且可以自动调整图像的大小和方向,以适应 PDF 的页面大小和方向。它还可以…...

基于IDEA集成环境---Nacos安装

Nacos服务器是独立安装部署的,因此我们需要下载最新的Nacos服务端程序,下载地址:https://github.com/alibaba/nacos。 将文件进行解压,得到以下内容: 直接将其拖入到项目文件夹下,便于我们一会在IDEA内部…...

使用 puppeteer 加载 html 文件来运行 js 文件

遇到一个需求, 在浏览器环境下来运行 js sdk 文件, 这个 js 文件是不能运行在 nodejs 环境下的; 所以通过 puppeteer 无头浏览器来运行代码获取对应的结果。 首先是安装插件 puppeteer,然后创建一个项目, 我这里是express; 这里是主要的代码。 const p…...

Java 操作 Excel:生成数据、设置单元格样式、设置数据有效性(hutool)

必读信息 该篇文章,主要通过 Java 代码对 Excel 文件的常用操作,包括:生成表格、修改单元格样式、设置数据有效性。 该篇文章,在官网文献下增加个人的看法和理解,如文中有出现不符、错误或需要补充的地方&#xff0c…...

YOLOv5算法改进(11)— 主干网络介绍(MobileNetV3、ShuffleNetV2和GhostNet)

前言:Hello大家好,我是小哥谈。主干网络通常指的是深度学习中的主干模型,通常由多个卷积层和池化层组成,用于提取输入数据的特征。在训练过程中,主干网络的参数会被不断优化以提高模型的准确性。YOLOv5算法中的主干网络可以有多种替换方案,为了后面讲解的方便,本篇文章就…...

ideal远程Debug部署在服务器上的服务详解

ideal远程Debug部署在服务器上的服务详解 一 简介二 ideal配置步骤第一步:点击Edit Configurations选项添加远程连接第二步:配置Remote JVM debug参数第三步:服务的启动参数中添加第二步生成的命令并重新启动服务第四步:ideal启动…...

基于SSM的校园音乐平台系统

基于SSM的校园音乐平台系统~ 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 登录界面 管理员界面 歌手管理 歌曲管理 摘要 校园音乐平台系统(Campus Mu…...

07_03文件系统怎么玩的

文件系统 Linux将文件系统分为了两层:VFS(虚拟文件系统)、具体文件系统,如下图所示: VFS(Virtual Filesystem Switch)称为虚拟文件系统或虚拟文件系统转换,是一个内核软件层&#…...

php实战案例记录(24)不要键名只保留值的算法

php中对数组 $originalArray array( “name” > “John”, “age” > 25, “city” > “New York” )仅去除键名保留值的算法是什么 array_values() 函数 在 PHP 中,你可以使用 array_values() 函数来去掉数组的键名。该函数会返回一个新数组&#xff0c…...

【交付高质量,用户高增长】-用户增长质量保证方法论 | 京东云技术团队

前言 俗话说,“测试是质量的守护者”,但单凭测试本身却远远不够。大多数情况下,测试像“一面镜子”,照出系统的面貌,给开发者提供修改代码的依据,这个“照镜子”的过程,就是质量评估的过程&…...

LMI FocalSpec 3D线共焦传感器 使用笔记1

一.硬件介绍 以上特别注意: 屏蔽线必须接地,因为在现场实际调试中,使用软件调试发现经常 弹窗 传感器丢失警告!! 以上 Position LED 的灯被钣金挡住,无法查看异常现象,能否将指示灯设置在软件界面上? 需要确认是软触发还是硬触发,理论上 硬触发比软触发速度要快.(我们目前使用…...

四、RocketMQ发送普通消息、批量消息和延迟消息

Producer发送普通消息的方式 1.同步发送消息 同步消息代表发送端发送消息到broker之后,等待消息发送结果后,再次发送消息 实现步骤 创建生产端,声明在哪个生产组注册NameServer地址构建Message实体,指定topic、tag、body启动…...

idea自定义 postfix completion提高编码效率

postfix completion的使用 详情见&#xff1a; https://www.cnblogs.com/expiator/p/17380495.html 自定义 postfix completion List、 String 初始化list&#xff1a; key: list表达式&#xff1a; List<$EXPR$> $END$List new ArrayList<>();字符串判空&…...

解锁学习电路设计的正确姿势!

...

【Linux】 ps命令使用

作为一个后端的程序员&#xff0c;我们经常用到ps -ef | grep XXX 到底什么事ps呢。 下面我们一起学习一下吧、 ps &#xff08;英文全拼&#xff1a;process status&#xff09;命令用于显示当前进程的状态&#xff0c;类似于 windows 的任务管理器。 ps命令 -Linux手册页 …...

打造高效的分布式爬虫系统:利用Scrapy框架实现

在大数据时代的今天&#xff0c;爬虫系统成为了获取和分析海量数据的重要工具。本文将介绍如何使用Scrapy框架来构建一个高效的分布式爬虫系统&#xff0c;以加速数据采集过程和提高系统的可扩展性。 Scrapy框架简介 Scrapy是一个基于Python的强大的开源网络爬虫框架&#xff…...

SpringCloud组件Ribbon的IRule的问题排查

最近很久没有写文章啦&#xff0c;刚好遇到了一个问题&#xff0c;其实问题也挺简单&#xff0c;但是还是得对源码有一定了解才能够发现。 最近在实现一个根据请求流量的标签&#xff0c;将请求转发到对应的节点&#xff0c;其实和俗称的灰度请求有点相似&#xff0c; 实现思…...

比较完整一些chatGPT项目代码(权威)

https://gitee.com/zccbbg/chatgpt-springboot-service yml中的配置文件无法读取&#xff0c;前端访问比较困难。...

Python - 生成二维码、条形码

二维码 import qrcode# 要生成的文本或链接 data "要生成的文本或链接"# 创建QR码对象 qr qrcode.QRCode(version1, # 版本号&#xff0c;通常设置为1error_correctionqrcode.constants.ERROR_CORRECT_L, # 错误修正级别box_size10, # 每个小方块的像素大小bor…...

8+纯生信,多组机器学习+分型探讨黑色素瘤发文思路。

今天给同学们分享一篇泛癌多组机器学习分型的生信文章“Comprehensive characterisation of immunogenic cell death in melanoma revealing the association with prognosis and tumor immune microenvironment”&#xff0c;这篇文章于2022年9月23日发表在Front Immunol 期刊…...

云计算算力价格波动:行业重构与竞争新格局

云计算价格反转&#xff1a;从价格战到集体涨价2025年4月&#xff0c;阿里云率先发起价格战&#xff0c;京东云、腾讯云、华为云等纷纷跟进&#xff0c;“最高降幅达60%”的口号让行业陷入价格混战。然而&#xff0c;到了2026年3月&#xff0c;市场风向突变&#xff0c;谷歌云、…...

告别模糊边界!用Monodepth2实战KITTI深度估计,详解自动掩码与最小重投影损失

告别模糊边界&#xff01;用Monodepth2实战KITTI深度估计&#xff0c;详解自动掩码与最小重投影损失 深度估计是计算机视觉领域的一项基础任务&#xff0c;它试图从2D图像中恢复出3D场景的几何信息。在自动驾驶、机器人导航、增强现实等应用中&#xff0c;准确的深度感知至关重…...

别再只跑例程了!深入解析ESP32S3的Camera模块:从DVP时序到图像缓冲区的底层逻辑

深入解析ESP32S3的Camera模块&#xff1a;从DVP时序到图像缓冲区的底层逻辑 当你在ESP32S3上成功运行了第一个Camera例程&#xff0c;看到LCD屏幕上显示出模糊的测试图像时&#xff0c;那种成就感可能很快就会被新的疑问取代&#xff1a;为什么图像有时会卡顿&#xff1f;为什么…...

上篇:那个隔墙听声的侦探——AI中的隐马尔可夫模型到底是什么,以及它为什么被发明出来

想象一下这样的场景&#xff1a;你被关在一间屋子里&#xff0c;隔壁房间有一个人在扔硬币。但你看不到那个房间&#xff0c;也看不到那个人&#xff0c;更看不到硬币。你唯一能做的&#xff0c;就是竖起耳朵听——每隔一段时间&#xff0c;你能听到一个声音&#xff1a;“叮”…...

3步搞定电脑风扇噪音!FanControl风扇控制软件完全指南,让你的电脑从此安静如新!

3步搞定电脑风扇噪音&#xff01;FanControl风扇控制软件完全指南&#xff0c;让你的电脑从此安静如新&#xff01; 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项…...

高效学挖漏洞!全网最全平台汇总 + 零基础到精通指南,一篇搞定所有

一、众测平台(国内) 名称网址漏洞盒子https://www.vulbox.com/火线安全平台https://www.huoxian.cn/漏洞银行https://www.bugbank.cn/360漏洞众包响应平台https://src.360.net/补天平台&#xff08;奇安信&#xff09;https://www.butian.net/春秋云测https://zhongce.ichunqi…...

实战应用:基于编译原理,利用快马AI构建你的首个代码压缩工具

实战应用&#xff1a;基于编译原理&#xff0c;利用快马AI构建你的首个代码压缩工具 最近在学习编译原理&#xff0c;发现这门看似高深的学科其实离我们日常开发很近。比如代码压缩工具&#xff0c;就是编译原理技术的典型应用场景。今天就用InsCode(快马)平台来快速实现一个简…...

Springboot 整合 SaToken 实现高效鉴权与动态路由拦截实战

1. 为什么选择SaToken做权限管理&#xff1f; 第一次接触SaToken是在去年重构一个内部管理系统时。当时项目用的是Spring Security&#xff0c;配置繁琐不说&#xff0c;光是解决一个"记住我"功能就折腾了两天。后来偶然发现这个国产框架&#xff0c;只用三行代码就实…...

C# Random.Next() vs NextDouble():不同场景下的随机数生成指南

C# Random.Next() vs NextDouble()&#xff1a;不同场景下的随机数生成指南 在游戏开发、模拟实验、密码学等众多领域&#xff0c;随机数生成都是不可或缺的核心功能。C#开发者通常第一时间想到的就是System.Random类&#xff0c;但你是否真正了解Next()和NextDouble()这些方法…...

别再死记硬背了!用Python+OpenCV动手复现计算机视觉核心算法(边缘检测/图像分割实战)

用PythonOpenCV实战复现计算机视觉核心算法&#xff1a;从理论到代码的跨越 计算机视觉作为人工智能领域最炙手可热的方向之一&#xff0c;其核心算法构成了这门学科的骨架。但很多学习者在掌握理论知识后&#xff0c;面对实际项目仍感到无从下手——公式记住了&#xff0c;原理…...