
PDF 文件中通常包含重要的图片信息,例如图表、流程图、扫描件等。对于开发者来说,掌握如何使用 Python 从 PDF 文件中提取图片,不仅能让图片内容得到复用(例如自动生成报告或制作演示文档),还可以将这些图片进一步应用于机器学习、图片识别(OCR)或文档分析等任务中。
本文将详细介绍如何使用Python和 Spire.PDF for Python 库从 PDF 文件中高效地提取图片。主要包括以下内容:
在开始使用 Spire.PDF 提取图片之前,请确保你的开发环境已准备好。
请确保计算机上已安装 Python。建议使用最新的稳定版本,以获得更好的兼容性与性能表现。
Spire.PDF 是一款功能强大的 PDF 操作库,支持创建、编辑、合并、签名、提取内容等多种操作。
安装该库最简单的方式是通过 pip 包管理器。打开命令提示符或终端,运行以下命令即可完成安装:
pip install Spire.PDF
Spire.PDF for Python 提供了 PdfImageHelper 类,用于从 PDF 文档中提取图片信息。通过简单的几行代码,即可从指定页面或整个文档中批量获取嵌入的所有图片。
以下示例展示如何从 PDF 文件的第一页中提取所有图片,并将它们保存到本地文件夹中。
from spire.pdf.common import *
from spire.pdf import *
# 创建 PdfDocument 实例
pdf = PdfDocument()
# 加载 PDF 文件
pdf.LoadFromFile("示例文件.pdf")
# 获取第一页
page = pdf.Pages[0]
# 创建 PdfImageHelper 实例
imageHelper = PdfImageHelper()
# 获取该页的图片信息列表
imageInfo = imageHelper.GetImagesInfo(page)
# 遍历所有图片并保存
for i in range(0, len(imageInfo)):
imageInfo[i].Image.Save(f"输出/图片-{i}.png")
# 释放资源
pdf.Dispose()
代码说明:
输出结果:
程序会将 PDF 第一页中的所有图片提取出来,并按顺序保存为 图片-0.png、图片-1.png 等文件。

如果希望一次性获取整个 PDF 文件中的所有图片,只需遍历文件的所有页面,并依次从每一页中提取图片。
from spire.pdf.common import *
from spire.pdf import *
# 创建 PdfDocument 实例
pdf = PdfDocument()
# 加载 PDF 文件
pdf.LoadFromFile("示例文件.pdf")
# 创建 PdfImageHelper 实例
imageHelper = PdfImageHelper()
# 遍历所有页面
index = 0
for i in range(0, pdf.Pages.Count):
page = pdf.Pages[i]
imageInfo = imageHelper.GetImagesInfo(page)
for j in range(0, len(imageInfo)):
imageInfo[j].Image.Save(f"输出/全文图片-{index}.png")
index += 1
# 关闭文档
pdf.Close()
输出结果:
代码会自动遍历整个 PDF 文档,将每页中的所有图片依次保存为单独文件。这对于需要批量提取文档中图片内容的场景非常实用。

Spire.PDF 支持将提取的图片保存为多种常见的图片格式,如 PNG、JPG、BMP、TIFF 等。
你可以根据需要选择合适的保存格式,不同格式在用途上各有优劣:
| 格式 | 适用场景 | 特点说明 |
|---|---|---|
| JPG/JPEG | 照片、扫描文档 | 占用空间小,但多次压缩可能导致质量下降 |
| PNG | 图表、截图、网页图片 | 支持透明背景,画质高但体积较大 |
| BMP | Windows 临时文件、图片编辑 | 几乎无压缩,体积较大,不适合网络传输 |
| TIFF | 档案保存、打印、OCR 输入 | 支持多页,适合长期存档或文本识别 |
| EMF | 矢量图编辑 | 可在 Illustrator、Inkscape 等软件中继续编辑 |
如果你的目标是高质量图表或透明背景图片,建议选择 PNG;若是扫描件或照片类型的内容,可选 JPG 来平衡质量与体积。
A1: Spire.PDF 提供免费版和商业版两种。免费版可处理最多 10 页的 PDF 文件;若需要解除限制或用于商业项目,可该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。试用许可证。
A2: 当然可以。只需指定要提取的页码索引即可。例如,以下代码可提取第 2 至第 5 页的图片(注意页码索引从 0 开始):
for i in range(1, 5):
page = pdf.Pages[i]
imageInfo = imageHelper.GetImagesInfo(page)
# 按前述方法保存图片
A3: 可以。对于扫描 PDF 文件,可在提取图片后,结合 Spire.OCR for Python 库对图片执行 OCR 识别,从而提取文字内容。
详细步骤可参考教程:Python 从图片中提取文字。
通过 Python 实现 PDF 图片提取,不仅能更高效地复用文件中的视觉内容,还能为数据分析、报告生成及 OCR 识别等自动化任务提供支持。借助 Spire.PDF for Python,开发者能够以简洁的代码快速完成单个页面或整个 PDF 文件中的图片提取,从而让 PDF 数据的利用更加灵活和智能。
此外,作为一个多功能的 PDF 文档处理库,Spire.PDF 不仅能提取图片,还能实现以下高级功能:
在处理和分析 PDF 文档时,有时候需要获取特定文本或图片的坐标信息。这些坐标信息可以帮助我们定位、提取和处理 PDF 中的特定元素。这篇文章将介绍如何使用 Spire.PDF for Python 和 Python 获取 PDF 中文本或图片的坐标信息。
本教程需要用到 Spire.PDF for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.PDF
如果您不清楚如何安装,请参考此教程: 如何在 Windows 中安装 Spire.PDF for Python
使用 Spire.PDF 处理现有的 PDF 文档时,坐标的原点位于页面的左上角。X 轴从原点水平向右延伸,Y 轴从原点垂直向下延伸(如下图所示)。

要查找 PDF 文档中特定文本的坐标,需要先使用 PdfTextFinder.Find() 方法定位目标文本在特定页面上的所有实例。找到这些实例后,使用 PdfTextFragment.Positions 属性即可获取文本实例的精确(X,Y)坐标。
获取 PDF 中指定文本的坐标的步骤如下:
from spire.pdf.common import *
from spire.pdf import *
# 创建 PdfDocument 对象
doc = PdfDocument()
# 加载 PDF 文档
doc.LoadFromFile("示例.pdf")
# 获取特定页面
page = doc.Pages.get_Item(0)
# 创建 PdfTextFinder 对象
textFinder = PdfTextFinder(page)
# 指定查找条件
findOptions = PdfTextFindOptions()
findOptions.Parameter = TextFindParameter.IgnoreCase
findOptions.Parameter = TextFindParameter.WholeWord
textFinder.Options = findOptions
# 在页面中搜索字符串 "汽车"
findResults = textFinder.Find("销售")
# 获取结果的第一个实例
result = findResults[0]
# 获取第一个实例的 X,Y 坐标
x = int(result.Positions[0].X)
y = int(result.Positions[0].Y)
with open("文本坐标.txt", "w", encoding="utf-8") as file:
file.write(f"找到的文本的第一个实例的坐标为: ({x}, {y})")
doc.Dispose()

Spire.PDF for Python 提供了 PdfImageHelper 类,允许用户从 PDF 文件的特定页面中提取图片的详细信息。提取后,可以利用 PdfImageInfo.Bounds 属性来获取图片的(X,Y)坐标。
获取 PDF 中指定图片的坐标的步骤如下:
from spire.pdf.common import *
from spire.pdf import *
# 创建 PdfDocument 对象
doc = PdfDocument()
# 加载 PDF 文档
doc.LoadFromFile("示例.pdf")
# 获取第一页
page = doc.Pages[0]
# 创建 PdfImageHelper 对象
imageHelper = PdfImageHelper()
# 从页面获取图片信息
imageInformation = imageHelper.GetImagesInfo(page)
# 获取第一个图片的 X,Y 坐标
x = int(imageInformation[0].Bounds.X)
y = int(imageInformation[0].Bounds.Y)
print("图片的坐标为:", (x, y))
doc.Dispose()

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Word 中的图表能够直观地展示数据的分布、趋势和比例等,可以帮助读者更快速、准确地理解分析数据提高效率。在 Spire.Doc 中,同样支持如微软 Word 涵盖的各种图表类型。在本文中,您将学习如何使用 Spire.Doc for Java 在 Word 文档中创建柱状图表,饼型图表和气泡图表。
首先,您需要在 Java 程序中添加 Spire.Doc.jar 文件作为依赖项。JAR 文件可以从此链接下载。如果您使用 Maven,则可以将以下代码添加到项目的 pom.xml 文件中,从而轻松地在应用程序中导入 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.doc</artifactId>
<version>14.9.5</version>
</dependency>
</dependencies>
使用 Paragraph.appendChart(ChartType. Column, float width, float height) 方法将添加柱状图表,以下是具体步骤:
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import com.spire.doc.fields.shapes.charts.*;
public class createChart
{
public static void main(String[] args)
{
// 创建Document 实例
Document document = new Document();
// 添加Section节
Section section = document.addSection();
// 添加段落并设置段落文本
section.addParagraph().appendText("柱状图表:");
// 添加新段落以添加图表
Paragraph newPara = section.addParagraph();
// 在段落中添加指定宽度和高度(单位为point)的柱状图表
ShapeObject shape = newPara.appendChart(ChartType.Column, 500, 300);
// 获取图表对象
Chart chart = shape.getChart();
// 清除默认数据
chart.getSeries().clear();
// 向图表添加数据系列,包括系列名称、类别名称和系列值
chart.getSeries().add("Java 测试系列",
new String[] { "Word", "PDF", "Excel", "PPT", },
new double[] { 790000, 850000, 610000, 400000 });
chart.getSeries().add("NET 测试系列",
new String[] { "Word", "PDF", "Excel", "PPT" },
new double[] { 1500000, 9000012, 900000, 720000 });
// 设置图表标题
chart.getTitle().setText("汇总");
// 设置 Y 轴数据格式
chart.getAxisY().getNumberFormat().setFormatCode("#,##0");
// 设置图例位置
chart.getLegend().setPosition(LegendPosition.Bottom);
// 保存文档
document.saveToFile("柱状图表.docx", FileFormat.Docx_2016);
// 释放文档对象
document.dispose();
}
}

使用 Paragraph.appendChart(ChartType.Pie, float width, float height) 方法将添加饼型图表,以下是具体步骤:
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import com.spire.doc.fields.shapes.charts.*;
public class createChart
{
public static void main(String[] args)
{
// 创建Document 实例
Document document = new Document();
// 添加Section节
Section section = document.addSection();
// 添加段落并设置段落文本
section.addParagraph().appendText("饼型图表:");
// 添加新段落以添加图表
Paragraph newPara = section.addParagraph();
// 在段落中添加指定宽度和高度(单位为point)的饼型图表
ShapeObject shape = newPara.appendChart(ChartType.Pie, 500, 300);
// 获取图表对象
Chart chart = shape.getChart();
// 清除默认数据
chart.getSeries().clear();
// 向图表添加数据系列,包括系列名称、类别名称和系列值
chart.getSeries().add("NET 系列",
new String[] { "Word", "PDF", "Excel", "PPT" },
new double[] { 150, 200, 140, 120 });
// 设置图表标题
chart.getTitle().setText("测试");
// 设置图例位置
chart.getLegend().setPosition(LegendPosition.Right);
// 保存文档
document.saveToFile("饼型图表.docx", FileFormat.Docx_2016);
// 释放文档对象
document.dispose();
}
}

使用 Paragraph.appendChart(ChartType.Bubble, float width, float height) 方法将添加气泡图表,以下是具体步骤:
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import com.spire.doc.fields.shapes.charts.*;
public class createChart
{
public static void main(String[] args)
{
// 创建Document 实例
Document document = new Document();
// 添加Section节
Section section = document.addSection();
// 添加段落并设置段落文本
section.addParagraph().appendText("气泡图表:");
// 添加新段落以添加图表
Paragraph newPara = section.addParagraph();
// 在段落中添加指定宽度和高度(单位为point)的气泡图表
ShapeObject shape = newPara.appendChart(ChartType.Bubble, 500, 300);
// 获取图表对象
Chart chart = shape.getChart();
// 清除默认数据
chart.getSeries().clear();
// 向图表添加数据系列,包括系列名称、系列值
ChartSeries series1 = chart.getSeries().add("系列",
new double[] { 2.9, 3.5, 1.1, 4.0, 4.0 },
new double[] { 1.9, 8.5, 2.1, 6.0, 1.5 },
new double[] { 9.0, 4.5, 2.5, 8.0, 5.0 });
// 设置图表标题
chart.getTitle().setText("测试");
// 保存文档
document.saveToFile("气泡图表.docx", FileFormat.Docx_2016);
// 释放文档对象
document.dispose();
}
}

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
给 PowerPoint 添加动画能够增强演示的视觉吸引力,突出重点信息,并帮助观众更好地理解复杂概念。动画效果可以引导观众的注意力,使演示内容更加生动和动态,提升整个演示文稿的专业性和记忆点。在本文中,我们将演示如何使用 Spire.Presentation for Python 在 Python 中给 PowerPoint 文档里的形状添加动画,以及获取动画效果信息。
本教程需要用到 Spire.Presentation for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.Presentation
如果您不确定如何安装,请参考此教程: 如何在 Windows 中安装 Spire.Presentation for Python
Spire.Presentation for Python 提供了 IShape.Slide.Timeline.MainSequence.AddEffect(IShape,AnimationEffectType) 方法用于来给指定形状添加特定的动画效果;提供了 AnimationEffect.SetStartEndParagraph (int startParaIndex, int endParaIndex) 来将指定的动画效果设置给形状中指定段落。
具体步骤如下:
from spire.presentation.common import *
from spire.presentation import *
# 定义输出文件路径和名称
outputFile = "output.pptx"
# 创建一个新的演示文稿对象
ppt = Presentation()
# 获取演示文稿中的第一个幻灯片
slide = ppt.Slides[0]
# 在幻灯片上添加一个矩形形状,并设置其位置和大小
shape = slide.Shapes.AppendShape(ShapeType.Rectangle, RectangleF.FromLTRB(100, 150, 300, 230))
# 设置形状的填充类型为纯色填充
shape.Fill.FillType = FillFormatType.Solid
# 设置形状的填充颜色为浅蓝色
shape.Fill.SolidColor.Color = Color.get_LightBlue()
# 设置形状的线条颜色为白色
shape.ShapeStyle.LineColor.Color = Color.get_White()
# 在形状中添加文本框,并设置文本内容
shape.AppendTextFrame("动画形状")
# 为形状添加淡出旋转动画效果
shape.Slide.Timeline.MainSequence.AddEffect(shape, AnimationEffectType.FadedSwivel)
# 为文本形状添加浮动动画效果
animation = shape.Slide.Timeline.MainSequence.AddEffect(shape, AnimationEffectType.Float)
# 设置动画的起始段落和结束段落(这里设置为同一个段落)
animation.SetStartEndParagraphs(0, 0)
# 保存演示文稿到指定的文件路径,并使用Pptx2013格式
ppt.SaveToFile(outputFile, FileFormat.Pptx2013)
# 释放演示文稿资源
ppt.Dispose()

在 PowerPoint 中,动画效果可分为四大类:进入、强调、退出和动作路径,其中,进入和退出包含一些共有的动画效果。当使用 Spire.Presentation 给形状添加共有动画效果时,这些效果默认将被应用为进入效果,接下来将介绍如何给形状应用退出动画效果。
具体步骤如下:
from spire.presentation.common import *
from spire.presentation import *
# 定义输出文件路径和名称,用于保存PPT文件
outputFile = "output.pptx"
# 创建一个新的PowerPoint演示文稿对象
ppt = Presentation()
# 获取演示文稿中的第一个幻灯片
slide = ppt.Slides[0]
# 在幻灯片上添加一个立方体形状,并设置其位置和大小
shape = slide.Shapes.AppendShape(ShapeType.Cube, RectangleF.FromLTRB(100, 150, 300, 230))
# 设置形状的填充类型为纯色填充
shape.Fill.FillType = FillFormatType.Solid
# 设置形状的填充颜色为浅蓝色
shape.Fill.SolidColor.Color = Color.get_LightBlue()
# 设置形状的线条颜色为白色
shape.ShapeStyle.LineColor.Color = Color.get_White()
# 在形状中添加文本框,并设置文本内容为“退出动画”
shape.AppendTextFrame("退出动画")
# 为形状添加退出动画效果(随机条形动画)
effect = shape.Slide.Timeline.MainSequence.AddEffect(shape, AnimationEffectType.RandomBars)
# 设置动画效果的类型为退出动画
effect.PresetClassType = TimeNodePresetClassType.Exit
# 将演示文稿保存到指定的文件中,使用PPTX 2013格式
ppt.SaveToFile(outputFile, FileFormat.Pptx2013)
# 释放演示文稿对象的资源
ppt.Dispose()

实现该功能需要遍历所有幻灯片,再遍历每张幻灯片中的动画效果,接着通过 AnimationEffect 对象下相关方法来获取动画效果相关信息。
具体步骤如下:
from spire.presentation.common import *
from spire.presentation import *
# 输入文件路径,指向一个PPTX格式的动画演示文稿
inputFile = "input.pptx"
# 输出文件路径,用于存储提取的动画效果信息
outputFile = "output.txt"
# 创建一个Presentation对象,用于处理PowerPoint文件
presentation = Presentation()
# 从指定路径加载PPTX文件到Presentation对象中
presentation.LoadFromFile(inputFile)
# 创建一个空列表,用于存储提取的动画效果信息
sb = []
# 遍历演示文稿中的每一张幻灯片
for slide in presentation.Slides:
# 遍历幻灯片中的每一个动画效果
for effect in slide.Timeline.MainSequence:
# 获取动画效果所作用的形状的名称
shapeName = effect.ShapeTarget.Name
sb.append("形状名称: " + shapeName)
# 获取当前幻灯片的编号
slideNumber = slide.SlideNumber
sb.append("当前幻灯片编号: " + str(slideNumber))
# 获取动画效果的类型
animationEffectType = effect.AnimationEffectType
sb.append("动画效果类型: " + str(animationEffectType))
# 获取动画持续时间
duration = effect.Timing.Duration
sb.append("动画效果持续时长: " + str(duration))
# 获取动画重复次数
count = effect.Timing.RepeatCount
sb.append("动画效果重复次数: " + str(count))
# 获取动画文本效果
IterateType = effect.IterateType
sb.append("动画文本效果: " + str(IterateType))
sb.append("\n")
# 打开输出文件,准备写入动画效果信息
fp = open(outputFile, "w")
# 遍历列表,将每个动画效果信息写入文件
for s in sb:
fp.write(s + "\n")
# 关闭Presentation对象,释放资源
presentation.Dispose()

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
重新排列 PowerPoint 文档的幻灯片顺序是一项简单但重要的技能。无论是需要更改要点的顺序,将相关幻灯片分组,还是移动幻灯片的位置,高效重组幻灯片都能帮您创造更连贯和具有影响力的演示效果。
在接下来的段落中,您将学习如何使用 Spire.Presentation for Python 在 Python 中调整 PowerPoint 文档中幻灯片的顺序。
此教程需要 Spire.Presentation for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 系统中。
pip install Spire.Presentation
如果您不确定怎样安装,请参考这篇教程:怎样在 Windows 上安装 Spire.Presentation for Python
要在 PowerPoint 文档中重新排列幻灯片的顺序,您需要创建两个 Presentation 对象:一个用来加载原始文档,另一个用来创建新文档。将原始文档中的幻灯片按所需顺序复制到新文档中,就能轻松地重新排列幻灯片顺序。
利用 Python 来重新排列 PowerPoint 文件中幻灯片顺序的详细步骤如下:
from spire.presentation import *
from spire.presentation.common import *
# 创建一个 Presentation 对象
presentation = Presentation()
# 加载 PowerPoint 文件
presentation.LoadFromFile("C:\\Users\\Administrator\\Desktop\\input.pptx")
# 将幻灯片顺序整理为列表
newSlideOrder = [4,2,1,3]
# 创建另一个 Presentation 对象
new_presentation = Presentation()
# 删除默认幻灯片
new_presentation.Slides.RemoveAt(0)
# 遍历列表
for i in range(len(newSlideOrder)):
# 将原文件的幻灯片按新顺序添加到新 PowerPoint 文档中
new_presentation.Slides.AppendBySlide(presentation.Slides[newSlideOrder[i] - 1])
# 保存新的演示文稿
new_presentation.SaveToFile("output/NewOrder.pptx", FileFormat.Pptx2019)
# 释放资源
presentation.Dispose()
new_presentation.Dispose()

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Markdown 因其简单易学、创作高效、兼容性强等特点,已成为编写结构化文本的常见选择,广泛用于文档、README 文件和笔记记录等。然而,当追求内容与格式在跨平台环境下的高度统一性,或需应对更为复杂的内容创作需求时,将 Markdown 格式转换为 PDF 等固定布局文档则是更好的选择。将 Markdown 文件转化为 PDF 文档,不仅使文件在各种设备上呈现效果更加一致,还让文档更为正式,更适合用于制作报告、手册,或是与不了解 Markdown 格式的普通读者分享。
本文将介绍如何使用 Spire.Doc for Python 通过 Python 代码将 Markdown 文件转换为 PDF 文档。
本教程需要 Spire.Doc for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.Doc
如果您不确定如何安装,请参考:如何在 Windows 中安装 Spire.Doc for Python
开发人员可以使用 Spire.Doc for Python 中的 Document.LoadFromFile(string: fileName, FileFormat.Markdown) 方法加载指定 Markdown 文件,然后使用 Document.SaveToFile(string: fileName, FileFormat.PDF) 方法将文件保存为 PDF 文档。此外,开发人员还可以通过指定 FileFormat 枚举类的枚举项,将 Markdown 文件转换为 HTML、XPS 和 SVG 等格式的文档。
将 Markdown 文件转换为 PDF 文档的详细步骤如下:
from spire.doc import *
from spire.doc.common import *
# 创建一个 Document 类的对象
doc = Document()
# 加载一个 Markdown 文件
doc.LoadFromFile("示例.md", FileFormat.Markdown)
# 将文件保存为 PDF 文档
doc.SaveToFile("output/Markdown转PDF.pdf", FileFormat.PDF)
doc.Dispose()

Spire.Doc for Python 还支持在将 Markdown 文件转换为 PDF 等格式之前进行一些基本的页面设置,从而对转换后文档的外观进行定制。
将 Markdown 文件转换为 PDF 文档并自定义页面设置的详细步骤如下:
from spire.doc import *
from spire.doc.common import *
# 创建一个 Document 类的实例
doc = Document()
# 加载一个 Word 文档
doc.LoadFromFile("示例.md", FileFormat.Markdown)
# 获取默认的节(section)
section = doc.Sections.get_Item(0)
# 获取页面设置
pageSetup = section.PageSetup
# 自定义页面设置
pageSetup.PageSize = PageSize.A4()
pageSetup.Orientation = PageOrientation.Landscape
pageSetup.Margins.All = 50
# 将 Markdown 文档保存为 PDF 文件
doc.SaveToFile("output/Markdown转PDF自定义页面.pdf", FileFormat.PDF)
doc.Dispose()

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
操作 PowerPoint 中的图片一般是我们在插入图片后的必要步骤,调整图片位置、大小、透明度、标题、旋转角度来满足我们的需求;同时,我们有时对不满意的图片会替换或者删除,在本文中,我们将解释如何使用 Spire.Presentation for Python 在 Python 中编辑 PowerPoint 演示文稿中图片以及替换或者删除图片。
本教程需要用到 Spire.Presentation for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.Presentation
如果您不确定如何安装,请参考此教程: 如何在 Windows 中安装 Spire.Presentation for Python
Spire.Presentation for Python 提供了 IEmbedImage 类用于处理图片,包括调整图片的高、宽、旋转角度、位置等等,具体步骤如下:
from spire.presentation.common import *
from spire.presentation import *
# 定义输入文件名,即包含图片的PPT文件
inputFile = "Input.pptx"
# 定义输出文件名,即修改后的图片尺寸的PPT文件
outputFile = "Output.pptx"
# 创建一个Presentation对象,用于操作PPT文件
presentation = Presentation()
# 从指定的文件中加载PPT内容
presentation.LoadFromFile(inputFile)
# 遍历PPT中的每一张幻灯片
for slide in presentation.Slides:
# 遍历幻灯片中的每个形状
for shape in slide.Shapes:
# 检查当前形状是否为嵌入图片类型
if isinstance(shape, IEmbedImage):
# 如果是图片,则进行相应的处理
image = shape if isinstance(shape, IEmbedImage) else None
# 将图片宽度和高度按照缩放比例进行调整
image.Width = image.Width * 0.5
image.Height = image.Height * 0.5
# 设置图片旋转角度为45度
image.Rotation = 45
# 设置图片的名称为“测试图片”
image.Name = "测试图片"
# 设置图片的替代文本为“原始图片”
image.AlternativeText = "原始图片"
# 设置图片的替代标题为“标题1”
image.AlternativeTitle = "标题1"
# 设置图片的位置(左上角坐标)为(50, 50)
image.Left = 50
image.Top = 150
# 设置图片填充透明度为50%
image.PictureFill.Picture.Transparency = 50
# 将修改后的PPT内容保存到指定的输出文件中,使用Pptx2013格式
presentation.SaveToFile(outputFile, FileFormat.Pptx2013)
# 释放Presentation对象的资源
presentation.Dispose()

实现该功能需要首先获取到指定幻灯片,然后遍历幻灯片中所有形状,找出形状中的图片类型,接着判断该图片的“替代标题(AlternativeTitle)”是不是“image1”,如果是,那么这就是我们需要进行替换的目标图片,使用 SlidePicture.PictureFill.Picture.EmbedImage 来重新指定图片源以实现替换原图片。具体步骤如下:
from spire.presentation.common import *
from spire.presentation import *
# 定义输入文件名,即要处理的PPT文件
inputFile = "input.pptx"
# 定义输出文件名,即处理后的结果保存的文件名
outputFile = "output.pptx"
# 创建一个Presentation对象,用于操作PPT文件
ppt = Presentation()
# 从指定的文件中加载PPT内容
ppt.LoadFromFile(inputFile)
# 获取PPT的第一张幻灯片
slide = ppt.Slides[0]
# 创建一个Stream对象,用于读取图片文件
stream = Stream("iceblueLogo.png")
# 将图片添加到PPT的图片集合中,并获取图片对象
image = ppt.Images.AppendStream(stream)
# 关闭Stream对象
stream.Close()
# 遍历幻灯片中的所有形状
for shape in slide.Shapes:
# 判断当前形状是否为幻灯片中的图片
if isinstance(shape, SlidePicture):
# 如果图片的替代标题是"image1"
if shape.AlternativeTitle == "image1":
# 更新图片填充的图片为新添加的图片
(shape if isinstance(shape, SlidePicture) else None).PictureFill.Picture.EmbedImage = image
# 将处理后的PPT内容保存到指定的输出文件中,使用Pptx2013格式
ppt.SaveToFile(outputFile, FileFormat.Pptx2013)
# 释放Presentation对象的资源
ppt.Dispose()

实现该功能需要首先获取到指定幻灯片,然后遍历幻灯片中所有形状,找出形状中的图片类型,接着通过 Islide.Shapes.Remove(Index) 来删除图片,具体步骤如下:
from spire.presentation.common import *
from spire.presentation import *
# 定义输入文件名,即要处理的PPT文件
inputFile = "Input.pptx"
# 定义输出文件名,即处理后的结果保存的文件名
outputFile = "Output.pptx"
# 创建一个Presentation对象,用于操作PPT文件
ppt = Presentation()
# 从指定的文件中加载PPT内容
ppt.LoadFromFile(inputFile)
# 获取PPT的第一张幻灯片
slide = ppt.Slides[0]
# 遍历幻灯片中的所有形状,从最后一个开始往前遍历
for i in range(slide.Shapes.Count - 1, -1, -1):
# 判断当前形状是否为图片(SlidePicture)
if isinstance(slide.Shapes[i], SlidePicture):
# 如果是图片,则从幻灯片中移除该形状
slide.Shapes.RemoveAt(i)
# 将处理后的PPT内容保存到指定的输出文件中,使用Pptx2013格式
ppt.SaveToFile(outputFile, FileFormat.Pptx2013)
# 释放Presentation对象的资源
ppt.Dispose()

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
同时演示多个 PowerPoint 文档可能会很麻烦,并且往往会导致演示效果不如人意。不过,有一种方案可以简化这个过程,并确保 PowerPoint 演示文稿的无缝切换。通过合并多个 PowerPoint 文件,您就无需重复打开不同的文件,从而节省时间和精力。但是手动复制幻灯片费时又费力,好在 Python 提供了一种十分高效的解决方案。本文将介绍如何利用 Spire.Presentation for Python 通过 Python 程序毫不费力地合并 PowerPoint 演示文稿。
此教程需要Spire.Presentation for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 系统中。
pip install Spire.Presentation
如果您不确定怎样安装,请参考这篇教程:怎样在 Windows 上安装 Spire.Presentation for Python
通过读取一个演示文稿的幻灯片并将它们添加到另一个演示文稿中,可以实现合并 PowerPoint 演示文稿。在添加到目标演示文稿的过程中,开发者可以使用 Presentation.Slides.AppendBySlide(ISlide) 方法来添加幻灯片,同时保留其原本的设计。详细的步骤如下:
from spire.presentation.common import *
from spire.presentation import *
# 创建一个 Presentation 对象
pres1 = Presentation()
pres2 = Presentation()
# 加载演示文稿文档
pres1.LoadFromFile("Sample1.pptx")
pres2.LoadFromFile("Sample2.pptx")
#遍历第二个演示文稿的幻灯片
for slide in pres2.Slides:
#将每张幻灯片添加到第一个演示文稿并保留其原始设计
pres1.Slides.AppendBySlide(slide)
# 保存第一个演示文稿
pres1.SaveToFile("output/MergePresentations.pptx",FileFormat.Pptx2016)
pres1.Dispose()
pres2.Dispose()

开发者也可以使用 Presentation.Slides.AppendByMaster(slide Islide, master IMasterSlide) 方法将幻灯片插入到目标演示文稿,并更改其原始设计为目标演示文稿的设计。这样就可以合并演示文稿并确保设计的一致性。 下面是具体的操作步骤:
from spire.presentation import *
from spire.presentation.common import *
# 创建两个 Presentation 的实例
pres1 = Presentation()
pres2 = Presentation()
# 加载演示文稿文件
pres1.LoadFromFile("Sample1.pptx")
pres2.LoadFromFile("Sample2.pptx")
# 遍历第二个演示文稿的幻灯片
for slide in pres2.Slides:
# 将每一张幻灯片添加到第一个演示文稿
pres1.Slides.AppendByMaster(slide, pres1.Masters[0])
# 保存第一个演示文稿
pres1.SaveToFile("output/MergePresentationsDesign1.pptx", FileFormat.Pptx2016)
pres1.Dispose()
pres2.Dispose()

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.Doc 12.7.3 已发布。本次更新修复了邮件合并时图片数据被填充失败的问题。详情请阅读以下内容。
问题修复:
OFD (Open Fixed-layout Document) 是我国的一种自主文档格式,它使得电子文档的存储、读取以及编辑更为方便,从而在多个领域都有广泛的应用,特别是在政务领域,常使用 OFD 格式作为电子公文、政府文件的存储和传输。在本文中,您将学习如何使用 Spire.Presentation for Python 在 Python 中将 PowerPoint 文档转换为 OFD 格式。
本教程需要用到 Spire.Presentation for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.Presentation
如果您不确定如何安装,请参考此教程:如何在 Windows 中安装 Spire.Presentation for Python
Spire.Presentation for Python 提供的 Presentation.SaveToFile() 方法支持将 PPT 整个文档直接转为 OFD 格式。具体步骤如下:
from spire.presentation.common import *
from spire.presentation import *
inputFile = "in.pptx"
outputFile = "out.ofd"
# 创建Presentation实例
ppt = Presentation()
# 加载一个PowerPoint文档
ppt.LoadFromFile(inputFile)
# 将文档另存为OFD格式
ppt.SaveToFile(outputFile, FileFormat.OFD)
# 释放对象
ppt.Dispose()

如果只需要将 PPT 文档某些页转换为 OFD,可以使用 Presentation.Slides[index] 先获取要转的幻灯片页,再调用 ISlide.SaveToFile() 方法保存该页到 OFD。具体步骤如下。
from spire.presentation.common import *
from spire.presentation import *
inputFile ="in.pptx"
outputFile = "out.ofd"
# 创建Presentation实例
ppt = Presentation()
# 加载一个PowerPoint文档
ppt.LoadFromFile(inputFile)
# 获取第二张幻灯片
slide = ppt.Slides[1]
# 将文档另存为OFD格式
slide.SaveToFile(outputFile, FileFormat.OFD)
# 释放对象
ppt.Dispose()

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。