Python实现PDF与多种图片格式(PNG, JPG, BMP, EMF, SVG)之间的相互转换

nuclear2011 2025-03-19 11:08:34编程技术
490

在当今数字化时代,PDF(Portable Document Format)和图片文件作为两种常见的文档格式,各自具有独特的优势和应用场景。PDF文件因其跨平台性、易于阅读和打印等特点,在商务、教育、出版等领域得到了广泛应用;而图片文件则以其直观、生动的表现形式,在网页设计、社交媒体、广告宣传等方面发挥着重要作用。然而,在实际应用中,我们经常会遇到需要将PDF转换为图片或将图片转换为PDF的需求,以便更好地满足不同的使用场景和需求。本文将详细介绍如何使用Python实现PDF与多种图片格式(包括PNG、JPG、BMP、EMF、SVG)之间的相互转换,旨在为读者提供一种高效、便捷的解决方案,帮助大家更好地处理和管理这两种文档格式。

一、介绍

PDF和图片是我们日常生活和工作中常用的文件格式。有时候,我们可能需要将PDF和图片进行格式互转来满足不同的应用场景和使用需求。例如,将PDF转换为图片更有利于在网页上或幻灯片中展示文件内容,而将图片转换为PDF可以将多个图片整合到一个文档中,方便进行文档归档、电子书制作、打印或共享等操作。这篇文章将探讨如何使用Python实现PDF与多种图片格式之间的相互转换。

二、安装Python库

我们需要借助Python类库来实现PDF与图片格式互转。本文使用的类库是Spire.PDF for Python,它可以把多种图片格式转换为PDF,也可以把PDF转换成多种图片格式。安装过程比较简单,使用pip命令即可:

pip install Spire.PDF

下面我们来看如何借助这个库实现PDF和图片互转。

三、Python实现多种图片格式转PDF

图片转PDF可以有不同的场景,比如我们可以把单张图片转换为PDF,也可以把多张图片转换为一个PDF。下面将分别介绍这两种场景。

1、单张图片转换为PDF

将单张图片转换为PDF的原理是将图片绘制到PDF,下面是大概步骤:

  • 新建PDF。

  • 加载图片,获取图片的宽高。

  • 添加一个与图片宽高一致的页面到PDF。

  • 把图片绘制到页面上。

  • 保存文档。

代码:

from spire.pdf.common import *
from spire.pdf import *
 
# 创建PdfDocument实例
doc = PdfDocument()
 
# 删除页边距
doc.PageSettings.SetMargins(0.0)
 
# 加载一张图片
image = PdfImage.FromFile("C:/Users/Administrator/Desktop/image.jpg")
 
# 获取图片的宽度和高度
width = image.PhysicalDimension.Width
height = image.PhysicalDimension.Height
 
# 添加页面到PDF,设置页面的宽度和高度与图片一致
page = doc.Pages.Add(SizeF(width, height))       
 
# 把图片绘制到页面上
page.Canvas.DrawImage(image, 0.0, 0.0, width, height)
 
# 保存文档
doc.SaveToFile("图片转PDF.pdf")
doc.Close()

注意,上面的代码适用于PNG/JPG/BMP/EMF等格式,但不适用于SVG。如果需要将SVG转换为PDF,参考以下代码:

from spire.pdf.common import *
from spire.pdf import *
 
# 创建PdfDocument实例
doc = PdfDocument()
# 加载SVG
doc.LoadFromSvg("测试.svg")
 
# 保存SVG为PDF
doc.SaveToFile("SVG转PDF.pdf", FileFormat.PDF)
doc.Close()

2、多张图片转换为一个PDF

多张图片转PDF的原理与单张图片转PDF一样,就是添加多个页面到PDF,然后依次将每个图片绘制到对应页面上去。步骤与上面类似,此处省略。

代码:

from spire.pdf.common import *
from spire.pdf import *
import os
 
# 创建PdfDocument实例
doc = PdfDocument()
 
# 删除页边距
doc.PageSettings.SetMargins(0.0)
 
# 指定图片文件夹路径
image_dir = "C:/Users/Administrator/Desktop/图片/"
 
# 遍历文件夹中的图片
for fileName in os.listdir(image_dir):
    image_path = os.path.join(image_dir, fileName)
 
    # 加载图片
    image = PdfImage.FromFile(image_path)    
    # 获取图片宽高
    width = image.PhysicalDimension.Width
    height = image.PhysicalDimension.Height
 
    # 添加一个与图片宽高一致的页面到PDF
    page = doc.Pages.Add(SizeF(width, height))
 
    # 把图片绘制到页面上
    page.Canvas.DrawImage(image, 0.0, 0.0, width, height)
      
# 保存文档
doc.SaveToFile("多张图片转PDF.pdf")
doc.Dispose()

四、Python实现PDF转多种图片格式

除了把多种图片格式转换为PDF,我们也可以把PDF转换为PNG/JPG/BMP/EMF/SVG等多种图片格式。

将PDF转换为PNG/JPG/BMP/EMF的大致步骤如下:

  • 加载PDF。

  • 遍历文档页面。

  • 将每个页面转换为图片。

下面是将PDF转换为PNG/JPG/BMP/EMF的代码:

from spire.pdf.common import *
from spire.pdf import *
 
# 创建PdfDocument实例
doc = PdfDocument()
# 加载PDF文档
doc.LoadFromFile("测试.pdf")
 
# 遍历文档页面
for i in range(doc.Pages.Count):
    # 将每个页面分别转换为图片(要转换到其他的图片格式,修改图片后缀即可)
    fileName = "输出/图片-{0:d}.png".format(i)
    with doc.SaveAsImage(i) as imageS:
        imageS.Save(fileName)
 
doc.Close()

如要将PDF转换为SVG,则不需要遍历页面,加载文档后,可以直接使用类库提供的方法来转换,此外还可以设置转换的SVG的尺寸:

from spire.pdf.common import *
from spire.pdf import *
 
# 创建PdfDocument实例
doc = PdfDocument()
# 加载PDF文档
doc.LoadFromFile("测试.pdf")
 
# 指定转换的SVG文件的尺寸
doc.ConvertOptions.SetPdfToSvgOptions(600.0, 600.0)
 
# 将每个页面分别转换为SVG
doc.SaveToFile("PDF转SVG.svg", FileFormat.SVG)
doc.Close()

总结

本文详细介绍了使用Python实现PDF与多种图片格式互转的方法,通过安装Spire.PDF for Python库,我们可以轻松地将PDF文件转换为各种图片格式,或将图片文件转换为PDF。这一过程不仅操作简便,而且支持多种格式,满足了不同场景下的需求。无论是需要将PDF内容以图片形式展示在网页上,还是将多张图片整合成一个PDF文档进行分享或打印,本文提供的方法都能轻松应对。通过本文的介绍和实践,相信读者已经掌握了PDF与图片互转的基本技能,能够在实际工作中更加高效地处理和管理这两种文档格式。

Python PDF 图片格式转换
THE END
蜜芽
故事不长,也不难讲,四字概括,毫无意义。

相关推荐

Python yield 用法大全:轻松掌握生成器与迭代器设计
在Python中,yield关键字是构建生成器的核心工具,它通过状态保存机制实现了高效的内存管理和惰性计算。与传统的迭代器实现相比,yield能将迭代器设计从复杂的类定义简化为直...
2025-09-15 编程技术
547

基于Python的旅游数据分析可视化系统【2026最新】
本研究成功开发了基于Python+Django+Vue+MySQL的旅游数据分析可视化系统,实现了从数据采集到可视化展示的全流程管理。系统采用前后端分离架构,前端通过Vue框架构建响应式界...
2025-09-13 编程技术
572

手把手教你用Python读取txt文件:从基础到实战的完整教程
Python作为数据处理的利器,文件读写是其基础核心功能。掌握txt文件读取不仅能处理日志、配置文件等常见场景,更是理解Python文件I/O的基石。本文ZHANID工具网将从基础语法到...
2025-09-12 编程技术
543

Python Flask 入门指南:从零开始搭建你的第一个 Web 应用
Flask作为 Python 中最轻量级且灵活的 Web 框架之一,特别适合初学者快速上手 Web 应用开发。本文将带你一步步了解如何在本地环境中安装 Flask、创建一个简单的 Web 应用,并...
2025-09-11 编程技术
532

Python 如何调用 MediaPipe?详细安装与使用指南
MediaPipe 是 Google 开发的跨平台机器学习框架,支持实时处理视觉、音频和文本数据。本文脚本之家将系统讲解 Python 环境下 MediaPipe 的安装、配置及核心功能调用方法,涵盖...
2025-09-10 编程技术
575

基于Python开发一个利率计算器的思路及示例代码
利率计算是金融领域的基础需求,涵盖贷款利息、存款收益、投资回报等场景。传统计算依赖手工公式或Excel表格,存在效率低、易出错等问题。Python凭借其简洁的语法和强大的数学...
2025-09-09 编程技术
515