冰蓝科技
|
028-81705109
|
|
微信扫一扫
|

Spire.Cloud 纯前端文档控件

图文教程:使用 Python 提取 PDF 图片

PDF 文件中通常包含重要的图片信息,例如图表、流程图、扫描件等。对于开发者来说,掌握如何使用 Python 从 PDF 文件中提取图片,不仅能让图片内容得到复用(例如自动生成报告或制作演示文档),还可以将这些图片进一步应用于机器学习、图片识别(OCR)或文档分析等任务中。

本文将详细介绍如何使用Python和 Spire.PDF for Python 库从 PDF 文件中高效地提取图片。主要包括以下内容:

准备工作:安装与环境配置

在开始使用 Spire.PDF 提取图片之前,请确保你的开发环境已准备好。

安装 Python 环境

请确保计算机上已安装 Python。建议使用最新的稳定版本,以获得更好的兼容性与性能表现。

安装 Spire.PDF for Python

Spire.PDF 是一款功能强大的 PDF 操作库,支持创建、编辑、合并、签名、提取内容等多种操作。

安装该库最简单的方式是通过 pip 包管理器。打开命令提示符或终端,运行以下命令即可完成安装:

pip install Spire.PDF

使用 Python 从 PDF 中提取图片

Spire.PDF for Python 提供了 PdfImageHelper 类,用于从 PDF 文档中提取图片信息。通过简单的几行代码,即可从指定页面或整个文档中批量获取嵌入的所有图片。

示例 1:提取指定页面中的图片

以下示例展示如何从 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 文件: 使用 LoadFromFile() 方法读取目标 PDF。
  • 访问页面: 通过索引访问指定的 PDF 页面。
  • **提取图片信息:**创建 PdfImageHelper 实例后,调用 GetImagesInfo() 方法获取该页的图片信息列表,返回 PdfImageInfo 对象集合。
  • **保存图片文件:**遍历页面中检测到的所有图片,通过 PdfImageInfo[].Image.Save() 方法将其保存至本地。

输出结果:
程序会将 PDF 第一页中的所有图片提取出来,并按顺序保存为 图片-0.png、图片-1.png 等文件。

Python 提取指定PDF页面上的图片

示例 2:提取整个 PDF 文件中的所有图片

如果希望一次性获取整个 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 文档,将每页中的所有图片依次保存为单独文件。这对于需要批量提取文档中图片内容的场景非常实用。

Python 提取整个 PDF文章中的所有图片

提取PDF图片时的格式选择

Spire.PDF 支持将提取的图片保存为多种常见的图片格式,如 PNG、JPG、BMP、TIFF 等。
你可以根据需要选择合适的保存格式,不同格式在用途上各有优劣:

格式 适用场景 特点说明
JPG/JPEG 照片、扫描文档 占用空间小,但多次压缩可能导致质量下降
PNG 图表、截图、网页图片 支持透明背景,画质高但体积较大
BMP Windows 临时文件、图片编辑 几乎无压缩,体积较大,不适合网络传输
TIFF 档案保存、打印、OCR 输入 支持多页,适合长期存档或文本识别
EMF 矢量图编辑 可在 Illustrator、Inkscape 等软件中继续编辑

如果你的目标是高质量图表或透明背景图片,建议选择 PNG;若是扫描件或照片类型的内容,可选 JPG 来平衡质量与体积。

常见问题解答

Q1:Spire.PDF for Python 是免费的吗?

A1: Spire.PDF 提供免费版和商业版两种。免费版可处理最多 10 页的 PDF 文件;若需要解除限制或用于商业项目,可该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。试用许可证。

Q2:可以只提取指定页码范围的图片吗?

A2: 当然可以。只需指定要提取的页码索引即可。例如,以下代码可提取第 2 至第 5 页的图片(注意页码索引从 0 开始):

for i in range(1, 5):
    page = pdf.Pages[i]
    imageInfo = imageHelper.GetImagesInfo(page)
    # 按前述方法保存图片

Q3:是否可以从提取的图片中识别文字?

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

本教程需要用到 Spire.PDF for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.PDF

如果您不清楚如何安装,请参考此教程: 如何在 Windows 中安装 Spire.PDF for Python

Spire.PDF 的坐标体系

使用 Spire.PDF 处理现有的 PDF 文档时,坐标的原点位于页面的左上角。X 轴从原点水平向右延伸,Y 轴从原点垂直向下延伸(如下图所示)。

Python 获取 PDF 中文本或图片的坐标

Python 获取 PDF 中文本的坐标信息

要查找 PDF 文档中特定文本的坐标,需要先使用 PdfTextFinder.Find() 方法定位目标文本在特定页面上的所有实例。找到这些实例后,使用 PdfTextFragment.Positions 属性即可获取文本实例的精确(X,Y)坐标。

获取 PDF 中指定文本的坐标的步骤如下:

  • Python
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()

Python 获取 PDF 中文本或图片的坐标

Python 获取 PDF 中图片的坐标信息

Spire.PDF for Python 提供了 PdfImageHelper 类,允许用户从 PDF 文件的特定页面中提取图片的详细信息。提取后,可以利用 PdfImageInfo.Bounds 属性来获取图片的(X,Y)坐标。

获取 PDF 中指定图片的坐标的步骤如下:

  • Python
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()

Python 获取 PDF 中文本或图片的坐标

申请临时 License

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

Word 中的图表能够直观地展示数据的分布、趋势和比例等,可以帮助读者更快速、准确地理解分析数据提高效率。在 Spire.Doc 中,同样支持如微软 Word 涵盖的各种图表类型。在本文中,您将学习如何使用 Spire.Doc for Java 在 Word 文档中创建柱状图表,饼型图表和气泡图表。

安装 Spire.Doc for Java

首先,您需要在 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>

在 Word 中创建柱状图表

使用 Paragraph.appendChart(ChartType. Column, float width, float height) 方法将添加柱状图表,以下是具体步骤:

  • Java
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();
    }
}

Java 在 Word 中创建图表

在 Word 中创建饼型图表

使用 Paragraph.appendChart(ChartType.Pie, float width, float height) 方法将添加饼型图表,以下是具体步骤:

  • Java
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();
    }
}

Java 在 Word 中创建图表

在 Word 中创建气泡图表

使用 Paragraph.appendChart(ChartType.Bubble, float width, float height) 方法将添加气泡图表,以下是具体步骤:

  • Java
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();
    }
}

Java 在 Word 中创建图表

申请临时 License

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

给 PowerPoint 添加动画能够增强演示的视觉吸引力,突出重点信息,并帮助观众更好地理解复杂概念。动画效果可以引导观众的注意力,使演示内容更加生动和动态,提升整个演示文稿的专业性和记忆点。在本文中,我们将演示如何使用 Spire.Presentation for Python 在 Python 中给 PowerPoint 文档里的形状添加动画,以及获取动画效果信息。

安装 Spire.Presentation for Python

本教程需要用到 Spire.Presentation for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.Presentation

如果您不确定如何安装,请参考此教程: 如何在 Windows 中安装 Spire.Presentation for Python

给 PowerPoint 文档中形状和形状中文字添加动画

Spire.Presentation for Python 提供了 IShape.Slide.Timeline.MainSequence.AddEffect(IShape,AnimationEffectType) 方法用于来给指定形状添加特定的动画效果;提供了 AnimationEffect.SetStartEndParagraph (int startParaIndex, int endParaIndex) 来将指定的动画效果设置给形状中指定段落。

具体步骤如下:

  • Python
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()

Python 给 PowerPoint 中形状添加动画、获取动画效果信息

给 PowerPoint 文档中形状添加退出动画

在 PowerPoint 中,动画效果可分为四大类:进入、强调、退出和动作路径,其中,进入和退出包含一些共有的动画效果。当使用 Spire.Presentation 给形状添加共有动画效果时,这些效果默认将被应用为进入效果,接下来将介绍如何给形状应用退出动画效果。

具体步骤如下:

  • Python
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()

Python 给 PowerPoint 中形状添加动画、获取动画效果信息

获取 PowerPoint 中动画相关信息

实现该功能需要遍历所有幻灯片,再遍历每张幻灯片中的动画效果,接着通过 AnimationEffect 对象下相关方法来获取动画效果相关信息。

具体步骤如下:

  • Python
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()

Python 给 PowerPoint 中形状添加动画、获取动画效果信息

申请临时 License

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

重新排列 PowerPoint 文档的幻灯片顺序是一项简单但重要的技能。无论是需要更改要点的顺序,将相关幻灯片分组,还是移动幻灯片的位置,高效重组幻灯片都能帮您创造更连贯和具有影响力的演示效果。

在接下来的段落中,您将学习如何使用 Spire.Presentation for Python 在 Python 中调整 PowerPoint 文档中幻灯片的顺序。

安装 Spire.Presentation for Python

此教程需要 Spire.Presentation for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 系统中。

pip install Spire.Presentation

如果您不确定怎样安装,请参考这篇教程:怎样在 Windows 上安装 Spire.Presentation for Python

Python 重新排列 PowerPoint 幻灯片顺序

要在 PowerPoint 文档中重新排列幻灯片的顺序,您需要创建两个 Presentation 对象:一个用来加载原始文档,另一个用来创建新文档。将原始文档中的幻灯片按所需顺序复制到新文档中,就能轻松地重新排列幻灯片顺序。

利用 Python 来重新排列 PowerPoint 文件中幻灯片顺序的详细步骤如下:

  • Python
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()

Python 调整 PowerPoint 文档的幻灯片顺序

申请临时 License

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

Markdown 因其简单易学、创作高效、兼容性强等特点,已成为编写结构化文本的常见选择,广泛用于文档、README 文件和笔记记录等。然而,当追求内容与格式在跨平台环境下的高度统一性,或需应对更为复杂的内容创作需求时,将 Markdown 格式转换为 PDF 等固定布局文档则是更好的选择。将 Markdown 文件转化为 PDF 文档,不仅使文件在各种设备上呈现效果更加一致,还让文档更为正式,更适合用于制作报告、手册,或是与不了解 Markdown 格式的普通读者分享。

本文将介绍如何使用 Spire.Doc for Python 通过 Python 代码将 Markdown 文件转换为 PDF 文档。

安装 Spire.Doc for Python

本教程需要 Spire.Doc for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.Doc

如果您不确定如何安装,请参考:如何在 Windows 中安装 Spire.Doc for Python

用 Python 将 Markdown 文件转换为 PDF 文档

开发人员可以使用 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 文档的详细步骤如下:

  • Python
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()

Python 将 Markdown 转换为 PDF

将 Markdown 转换为 PDF 并自定义页面设置

Spire.Doc for Python 还支持在将 Markdown 文件转换为 PDF 等格式之前进行一些基本的页面设置,从而对转换后文档的外观进行定制。

将 Markdown 文件转换为 PDF 文档并自定义页面设置的详细步骤如下:

  • Python
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()

Python 将 Markdown 转换为 PDF

申请临时 License

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

操作 PowerPoint 中的图片一般是我们在插入图片后的必要步骤,调整图片位置、大小、透明度、标题、旋转角度来满足我们的需求;同时,我们有时对不满意的图片会替换或者删除,在本文中,我们将解释如何使用 Spire.Presentation for Python 在 Python 中编辑 PowerPoint 演示文稿中图片以及替换或者删除图片。

安装 Spire.Presentation for Python

本教程需要用到 Spire.Presentation for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.Presentation

如果您不确定如何安装,请参考此教程: 如何在 Windows 中安装 Spire.Presentation for Python

Python 编辑 PowerPoint 演示文稿中图片

Spire.Presentation for Python 提供了 IEmbedImage 类用于处理图片,包括调整图片的高、宽、旋转角度、位置等等,具体步骤如下:

  • Python
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()

Python 编辑、替换、删除 PowerPoint 中图片

替换 PowerPoint 演示文稿中特定的图片

实现该功能需要首先获取到指定幻灯片,然后遍历幻灯片中所有形状,找出形状中的图片类型,接着判断该图片的“替代标题(AlternativeTitle)”是不是“image1”,如果是,那么这就是我们需要进行替换的目标图片,使用 SlidePicture.PictureFill.Picture.EmbedImage 来重新指定图片源以实现替换原图片。具体步骤如下:

  • Python
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()

Python 编辑、替换、删除 PowerPoint 中图片

删除 PowerPoint 中特定幻灯片中所有图片

实现该功能需要首先获取到指定幻灯片,然后遍历幻灯片中所有形状,找出形状中的图片类型,接着通过 Islide.Shapes.Remove(Index) 来删除图片,具体步骤如下:

  • Python
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()

Python 编辑、替换、删除 PowerPoint 中图片

申请临时 License

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

同时演示多个 PowerPoint 文档可能会很麻烦,并且往往会导致演示效果不如人意。不过,有一种方案可以简化这个过程,并确保 PowerPoint 演示文稿的无缝切换。通过合并多个 PowerPoint 文件,您就无需重复打开不同的文件,从而节省时间和精力。但是手动复制幻灯片费时又费力,好在 Python 提供了一种十分高效的解决方案。本文将介绍如何利用 Spire.Presentation for Python 通过 Python 程序毫不费力地合并 PowerPoint 演示文稿。

安装 Spire.Presentation for Python

此教程需要Spire.Presentation for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 系统中。

pip install Spire.Presentation

如果您不确定怎样安装,请参考这篇教程:怎样在 Windows 上安装 Spire.Presentation for Python

合并 PowerPoint 演示文稿并保留其设计

通过读取一个演示文稿的幻灯片并将它们添加到另一个演示文稿中,可以实现合并 PowerPoint 演示文稿。在添加到目标演示文稿的过程中,开发者可以使用 Presentation.Slides.AppendBySlide(ISlide) 方法来添加幻灯片,同时保留其原本的设计。详细的步骤如下:

  • Python
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()

Python 合并 PowerPoint 演示文稿

合并 PowerPoint 演示文稿并使用同一种设计

开发者也可以使用 Presentation.Slides.AppendByMaster(slide Islide, master IMasterSlide) 方法将幻灯片插入到目标演示文稿,并更改其原始设计为目标演示文稿的设计。这样就可以合并演示文稿并确保设计的一致性。 下面是具体的操作步骤:

  • Python
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()

Python 合并 PowerPoint 演示文稿

申请临时 License

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

Spire.Doc 12.7.3 已发布。本次更新修复了邮件合并时图片数据被填充失败的问题。详情请阅读以下内容。

问题修复:


获取 Spire.Doc 12.7.3 请点击:

https://www.e-iceblue.cn/Downloads/Spire-Doc-NET.html

OFD (Open Fixed-layout Document) 是我国的一种自主文档格式,它使得电子文档的存储、读取以及编辑更为方便,从而在多个领域都有广泛的应用,特别是在政务领域,常使用 OFD 格式作为电子公文、政府文件的存储和传输。在本文中,您将学习如何使用 Spire.Presentation for Python 在 Python 中将 PowerPoint 文档转换为 OFD 格式。

安装 Spire.Presentation for Python

本教程需要用到 Spire.Presentation for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.Presentation

如果您不确定如何安装,请参考此教程:如何在 Windows 中安装 Spire.Presentation for Python

将整个 PowerPoint 文档转换为 OFD

Spire.Presentation for Python 提供的 Presentation.SaveToFile() 方法支持将 PPT 整个文档直接转为 OFD 格式。具体步骤如下:

  • Python
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()

Python  将 PowerPoint 文档转换为 OFD

指定 PowerPoint 文档页转换为 OFD

如果只需要将 PPT 文档某些页转换为 OFD,可以使用 Presentation.Slides[index] 先获取要转的幻灯片页,再调用 ISlide.SaveToFile() 方法保存该页到 OFD。具体步骤如下。

  • Python
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()

Python  将 PowerPoint 文档转换为 OFD

申请临时 License

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