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

Spire.Cloud 纯前端文档控件

Word 文档中的每个段落都有意或无意地使用着某一种段落样式。段落样式可以是内置样式,例如标题1和标题2,也可以是自定义样式。本文介绍了如何使用 Spire.Doc for Java 提取使用特定样式的段落。

下表列出了MS Word中的样式名称及其在 Spire.Doc 中的对应名称。简单判断的原则是编程返回的样式名称不包含空格。

MS Word 的样式名称 Spire.Doc 的样式名称
Title Title
Subtitle Subtitle
Heading 1 Heading1
Heading 2 Heading2
Heading 3 Heading3
No Spacing NoSpacing
Quote Quote
Intense Quote IntenseQuote
List Paragraph ListParagraph
Normal Normal
Custom Name CustomName

安装 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>

提取使用特定样式的段落

您可以通过 Paragraph.getStyleName() 方法获取特定段落的样式名称。 如果段落的样式名称正好是您需要的,则可以使用 Paragraph.getText() 方法获取段落内容。以下是提取使用特定样式段落的步骤。

  • Java
import com.spire.doc.Document;
import com.spire.doc.documents.Paragraph;

    public class GetParagraphByStyleName {
        public static void main(String[] args) {

            //在初始化Document对象时加载示例Word文档
            Document doc = new Document("C:\\Users\\Administrator\\Desktop\\sample.docx");

            //声明一个变量
            Paragraph paragraph;

            //循环遍历各个节
            for (int i = 0; i < doc.getSections().getCount(); i++) {

                //循环遍历特定节的段落
                for (int j = 0; j < doc.getSections().get(i).getParagraphs().getCount(); j++) {

                    //获取特定段落
                    paragraph = doc.getSections().get(i).getParagraphs().get(j);

                    //确定段落样式是否为“Heading 1”
                    if (paragraph.getStyleName().equals("Heading1")) {

                        //获取“Heading1”中段落的文本
                        System.out.println("Heading 1: " + paragraph.getText() + "\n");
                    }

                    //判断段落样式是否为“My Custom Style”
                    if (paragraph.getStyleName().equals("MyCustomStyle")) {

                        //获取“My Custom Style”中的段落文本
                        System.out.println("My Custom Style: " + paragraph.getText());
                    }
                }
            }
        }
    }

Java 提取使用特定样式的 Word 段落

申请临时 License

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

Spire.Presentation for Java 4.11.7已发布。该版本支持添加数学公式和检测shape是否包含数学公式,并且增强了PPT到图片,PPT到PDF的转换功能,还修复了图表图例”是否重叠“属性设置不生效等已知问题。详情请阅读以下内容。

新功能:

问题修复:


获取Spire.Presentation for Java 4.11.7请点击:

https://www.e-iceblue.cn/Downloads/Spire-Presentation-JAVA.html

在数据处理、自动化报表生成、业务数据整合等场景中,从 PDF 文件中提取表格是一项常见需求。PDF 作为通用文档格式,虽便于数据共享,但因底层以 “视觉布局” 而非 “结构化数据” 存储,导致编程提取表格时面临格式解析、数据对齐等难题。本文将介绍如何使用 Spire.PDF for .NET 库通过 C# 提取 PDF 中的表格,并将结果导出为 TXT 和 CSV 格式以便进一步分析。

目录:

搭建 C# 开发环境

Spire.PDF for .NET 是一个功能强大的库,用于在 C# 和 VB.NET 中处理 PDF 文件。它支持广泛的 PDF 操作,包括表格提取、文本提取、图像提取等。

推荐通过 NuGet 包管理器安装 Spire.PDF(最便捷,自动处理依赖)。步骤如下:

1. 打开 Visual Studio 并创建一个新的 C# 项目。(此处新建了一个控制台应用程序);

2. 在 Visual Studio 中,右键点击项目名称 → 选择 “管理 NuGet 程序包”;

3. 在 “浏览” 页搜索 Spire.PDF,选择最新稳定版 → 点击 “安装”。

了解 PDF 表格结构

在编写代码之前,让我们先弄清楚 PDF 是如何存储表格的。与 Excel(明确定义行 / 列)不同,PDF 无原生 “表格” 概念,仅通过 3 类视觉元素模拟表格:

  • 文本块:每个单元格的文本是独立元素,通过坐标(X/Y 轴)定位;
  • 边框线条:水平 / 垂直线条作为视觉分隔,标识表格的行 / 列边界;
  • 间距规则:文本块之间的固定间隙,辅助区分不同单元格。

Spire.PDF 的 PdfTableExtractor 类正是通过分析这些视觉元素,逆向推断出表格结构,从而实现结构化提取。

如何通过 C# 从 PDF 中提取表格

如果你需要快速预览表格数据(例如,开发调试或验证提取结果),可以直接通过控制台实时输出结果,无需生成额外文件,节省开发时间。

从 PDF 表格中提取数据的关键方法:

  • PdfDocument:表示一个 PDF 文件。
  • LoadFromFile:加载要处理的 PDF 文件。
  • PdfTableExtractor:基于视觉线索检测 PDF 中的表格。
  • ExtractTable(pageIndex):提取指定页码的所有表格,返回 PdfTable 数组。
  • GetRowCount()/GetColumnCount():检索每个表格的行数和列数。
  • GetText(rowIndex, columnIndex):从指定单元格中提取文本。
using Spire.Pdf;
using Spire.Pdf.Utilities;

namespace ExtractPdfTable
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建PdfDocument对象
            PdfDocument pdf = new PdfDocument();

            // 加载PDF文件
            pdf.LoadFromFile("表格.pdf");

            // 初始化PdfTableExtractor类的实例
            PdfTableExtractor extractor = new PdfTableExtractor(pdf);


            // 循环遍历页面
            for (int pageIndex = 0; pageIndex < pdf.Pages.Count; pageIndex++)
            {
                // 从特定页面提取表格
                PdfTable[] tableList = extractor.ExtractTable(pageIndex);

                // 判断表格列表是否为空
                if (tableList != null && tableList.Length > 0)
                {
                    int tableNumber = 1;
                    // 循环遍历列表中的表格
                    foreach (PdfTable table in tableList)
                    {
                        Console.WriteLine($"\n第 {pageIndex + 1} 页的第 {tableNumber} 个表格:");
                        Console.WriteLine("-----------------------------------");

                        // 获取特定表格的行数和列数
                        int row = table.GetRowCount();
                        int column = table.GetColumnCount();

                        // 循环遍历行和列
                        for (int i = 0; i < row; i++)
                        {
                            for (int j = 0; j < column; j++)
                            {
                                // 从特定单元格获取文本
                                string text = table.GetText(i, j);

                                // 将单元格文本打印到控制台并带有分隔符
                                Console.Write($"{text}\t");
                            }
                            // 每行后换行
                            Console.WriteLine();
                        }
                        tableNumber++;
                    }
                }
            }

            // 关闭文档
            pdf.Close();
        }
    }
}

适用场景

  • 快速调试或验证提取的数据。
  • 小型数据集预览。

输出: 检索 PDF 表格数据并输出到控制台

提取 PDF 表格数据

C# 提取 PDF 表格到 TXT 文本文件

对于轻量级的数据存档,将表格保存到文本文件是理想的选择。此方法使用 StringBuilder 高效地编译表格数据,保留换行符以提高可读性。

将 PDF 表格导出到 TXT 的主要优势:

  • 高效性:StringBuilder 优化文本拼接效率,减少内存占用。
  • 可读性:保留表格的行结构,用换行符\r\n分隔行,避免数据杂乱。
  • 兼容性:TXT 格式无平台限制,Windows、macOS、Linux 均可直接打开,无需依赖专用软件。
using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Text;

namespace ExtractTableToTxt
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建PdfDocument对象
            PdfDocument pdf = new PdfDocument();

            // 加载PDF文件
            pdf.LoadFromFile("表格.pdf");

            // 创建StringBuilder对象
            StringBuilder builder = new StringBuilder();

            // 初始化PdfTableExtractor类的实例
            PdfTableExtractor extractor = new PdfTableExtractor(pdf);

            // 声明PdfTable数组
            PdfTable[] tableList = null;

            // 循环遍历页面
            for (int pageIndex = 0; pageIndex < pdf.Pages.Count; pageIndex++)
            {
                // 从特定页面提取表格
                tableList = extractor.ExtractTable(pageIndex);

                // 判断表格列表是否为空
                if (tableList != null && tableList.Length > 0)
                {
                    // 循环遍历列表中的表格
                    foreach (PdfTable table in tableList)
                    {
                        // 获取特定表格的行数和列数
                        int row = table.GetRowCount();
                        int column = table.GetColumnCount();

                        // 循环遍历行和列
                        for (int i = 0; i < row; i++)
                        {
                            for (int j = 0; j < column; j++)
                            {
                                // 从特定单元格获取文本
                                string text = table.GetText(i, j);

                                // 将文本添加到字符串生成器
                                builder.Append(text + " ");
                            }
                            builder.Append("\r\n");
                        }
                    }
                }
            }

            // 写入.txt文件
            File.WriteAllText("提取PDF表格.txt", builder.ToString());
        }
    }
}

适用场景

  • 以轻量级、普遍可访问的格式存档表格数据。
  • 跨平台共享(所有设备均可打开 TXT)。
  • 简单脚本输入(如 PowerShell 后续处理)。

输出: 提取 PDF 表格数据并保存到文本文件。

提取 PDF 表格到 TXT 文本文件

扩展应用:对于VB.NET代码示例,请使用我们的 C#⇆VB.NET 转换器直接转换上述代码。

C# 将 PDF 表格导出为 CSV

CSV(逗号分隔值)是表格数据的行业标准,与 Excel、Google Sheets 和数据库兼容。此方法通过引用单元格和处理特殊字符,将提取的表格格式化为有效的 CSV 文件。

提取 PDF 表格到 CSV 的主要特点:

  • StreamWriter:增量写入数据到 CSV 文件,减少大型 PDF 文件的内存占用。
  • 特殊字符处理:按 CSV 标准转义单元格中的逗号和双引号,避免列错位。
  • 工具兼容:生成的 CSV 可直接用 Excel 打开,无需手动调整格式,减少后续操作成本。
  • 编码兼容:UTF-8 编码确保中文、特殊符号在 Excel 中正常显示(避免打开时乱码)。
using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Text;

namespace ExtractTableToCsv
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建PdfDocument对象
            PdfDocument pdf = new PdfDocument();

            // 加载PDF文件
            pdf.LoadFromFile("表格.pdf");

            // 创建StreamWriter对象以高效写入CSV
            using (StreamWriter csvWriter = new StreamWriter("PDF表格.csv", false, Encoding.UTF8))
            {
                // 创建PdfTableExtractor对象
                PdfTableExtractor extractor = new PdfTableExtractor(pdf);

                // 循环遍历页面
                for (int pageIndex = 0; pageIndex < pdf.Pages.Count; pageIndex++)
                {
                    // 从特定页面提取表格
                    PdfTable[] tableList = extractor.ExtractTable(pageIndex);

                    // 判断表格列表是否为空
                    if (tableList != null && tableList.Length > 0)
                    {
                        // 循环遍历列表中的表格
                        foreach (PdfTable table in tableList)
                        {
                            // 获取特定表格的行数和列数
                            int row = table.GetRowCount();
                            int column = table.GetColumnCount();

                            // 循环遍历行
                            for (int i = 0; i < row; i++)
                            {
                                // 创建列表存储数据
                                List<string> rowData = new List<string>();
                                // 循环遍历列
                                for (int j = 0; j < column; j++)
                                {
                                    // 从表格单元格检索文本
                                    string cellText = table.GetText(i, j).Replace("\"", "\"\"");
                                    // 将单元格文本添加到列表并用双引号括起来
                                    rowData.Add($"\"{cellText}\"");
                                }
                                // 用逗号连接单元格并写入CSV
                                csvWriter.WriteLine(string.Join(",", rowData));
                            }
                        }
                    }
                }
            }
        }
    }
}

适用场景

  • 数据分析(导入 Excel 进行计算)。
  • 将 PDF 表格迁移到数据库(导入 MySQL、SQL Server)。

输出: 解析 PDF 表格数据并导出到 CSV 文件。

提取 PDF 表格到 CSV 文件

推荐:与 Spire.XLS for .NET 集成,直接提取 PDF 表格到 Excel 文档。

结论

本文提供了三种在 C# 中提取 PDF 表格的有效方法。通过利用 Spire.PDF for .NET 库,开发者可以快速实现 PDF 表格的结构化提取,同时兼顾效率与兼容性。根据实际需求选择合适的导出格式,能大幅提升数据处理效率,减少人工录入成本。

如需进一步探索 PDF 处理功能(如 PDF 生成、水印添加、页面合并),可参考 Spire.PDF 官方文档;若需商业场景测试,可获取 30 天免费试用许可证。

常见问题

问题 1:为什么使用 Spire.PDF for .NET 提取表格?

答: Spire.PDF 提供了专用的 PdfTableExtractor 类,该类基于视觉提示(边框、间距和文本对齐)检测表格,简化了从 PDF 解析结构化数据的过程。

问题 2:Spire.PDF 能否从扫描 PDF 中提取表格?

答: 不能。此.NET PDF 库仅支持文本型 PDF(文本可选中、复制)。对于扫描的 PDF,请使用 Spire.OCR (OCR 文字识别库)先提取文本,然后再解析表格。

问题 3:能否一次性从多个 PDF 中提取表格?

答:可通过 Directory.GetFiles() 遍历文件夹中的所有 PDF,循环执行提取逻辑,示例代码如下:

string[] pdfFiles = Directory.GetFiles(@"C:\Invoices\", "*.pdf");
foreach (string file in pdfFiles)
{
// 表格提取的代码
}

问题 4:从大型 PDF 中提取表格时,如何提高性能?

答: 对于大型 PDF(100 + 页),通过以下方式优化性能:

  • 分批处理页面,避免一次性加载整个 PDF。
  • 用 using 包裹 PdfDocument 和 PdfTableExtractor,确保处理完一批页面后立即释放内存。
  • 跳过没有表格的页面(using if (tableList == null || tableList.Length == 0))。

Spire.Office 6.11.2已发布。本次更新带来了一些新的功能,例如:Spire.XLS支持给数据栏设置边框的功能以及给折线图和面积图设置垂直线;Spire.Doc新增了两个方法;Spire.PDF支持获取附件所在的页码和转换线性化PDF;Spire.Presentation支持获取表格单元格的填充颜色。此外,该版本还修复了大量已知的问题。详情请阅读以下内容。

该版本涵盖了最新版的Spire.Doc, Spire.PDF, Spire.XLS, Spire.Presentation, Spire.Email, Spire.DocViewer, Spire.PDFViewer, Spire.Spreadsheet, Spire.OfficeViewer, Spire.DataExport, Spire.Barcode。

版本信息如下:

获取Spire.Office 6.11.2请点击:

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


Spire.XLS

新功能:

问题修复:


Spire.PDF

新功能:

问题修复:


Spire.Doc

新功能:

问题修复:


Spire.Presentation

新功能:

问题修复:


Spire.Email

问题修复:

Spire.XLS 11.11.2已发布。该版本带来了一些新功能,如支持转换excel文件到pdf文件设置自定义纸张尺寸的问题,支持了给数据栏设置边框的功能以及给折线图和面积图设置垂直线的功能。此外还增强了Excel到HTML,Excel到PDF的转换功能,并且修复了MS Excel打开保存后的xlsx文件失败等已知问题。详情请阅读以下内容。

新功能:

问题修复:


下载Spire.XLS 11.11.2请点击:

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

Spire.XLS for Java 4.11.3已发布。该版本增强了Excel到PDF的转换,并且修复了获取的日期格式单元格值错误等已知问题。详情请阅读以下内容。

问题修复:


下载Spire.XLS for Java 4.11.3请点击:

https://www.e-iceblue.cn/Downloads/Spire-XLS-JAVA.html

在操作 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>

隐藏特定段落

Spire.Doc for Java 支持使用 TextRange.getCharacterFormat().setHidden(boolean value) 方法来隐藏 Word 中的特定段落。以下是在 Word 中隐藏特定段落的详细步骤。

  • Java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;

public class HideParagraph {
    public static void main(String[] args) {
        //创建document实例
        Document document = new Document();

        //加载示例Word文档
        document.loadFromFile("C:\\Users\\Administrator\\Desktop\\sample.docx");

        //获取第一节
        Section sec = document.getSections().get(0);

        //获取第一节中的第三段
        Paragraph para;
        para = sec.getParagraphs().get(2);

        //循环遍历段落的子对象
        for (Object docObj : para.getChildObjects()) {
            DocumentObject obj = (DocumentObject)docObj;

            //如果是子对象则将其转换为文本区域
            if ((obj instanceof TextRange)) {
                TextRange range = ((TextRange)(obj));

                //隐藏文本区域
                range.getCharacterFormat().setHidden(true);
            }
        }

        //将文档保存为新文件
        document.saveToFile("output/hideParagraph.docx", FileFormat.Docx_2013);
    }
}

Java 在 Word 中隐藏特定段落

申请临时 License

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

Spire.Presentation 6.11.4已发布。该版本支持获取表格单元格边框的显示颜色,还增强了PowerPoint到图片,PowerPoint到PDF的转换。同时还修复了获取的文本字体大小不正确等已知问题。详情请阅读以下内容。

新功能:

问题修复:


获取Spire.Presentation 6.11.4请点击:

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

OFD(Open Fixed-layout Document 的简称,即开放式版式文档),是我国自主可控的电子文件格式。OFD 版式文件常用于电子文档发布、数字化信息传播和存档。前面我们介绍了将 PDF 文件格式转换为 OFD。 从 V9.11.3 开始,Spire.XLS for .NET 支持将 Excel 文件保存为 OFD 格式。本文将展示如何将 Excel 文件保存为 OFD 电子文件格式。

安装 Spire.XLS for .NET

首先,您需要将 Spire.XLS for .NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。您可以从 下载页面 获取 dll文件,也可以通过 NuGet 安装。

PM> Install-Package Spire.XLS

Excel 转为 OFD

使用 Spire.XLS for .NET 来转换 Excel(以 .xlsx 格式为例)为 OFD 格式,只需要简单三行代码即可:

  • C#
  • VB.NET
using Spire.Xls;

namespace ExceltoOFD
{
    class Program
    {
        static void Main(string[] args)
        {
            //实例化Workbook类的对象
            Workbook workbook = new Workbook();

            //加载示例文档
            workbook.LoadFromFile("Sample.xlsx");

            //保存为OFD格式
            workbook.SaveToFile("toOFD.OFD", FileFormat.OFD);
         }
    }
}
Imports Spire.Xls

Namespace ExceltoOFD
    
    Class Program
        
        Private Shared Sub Main(ByVal args() As String)
            '新建Workbook实例
            Dim workbook As Workbook = New Workbook
            '加载示例文档
            workbook.LoadFromFile("Sample.xlsx")

            '保存为OFD格式
            workbook.SaveToFile("toOFD.OFD", FileFormat.OFD)
        End Sub
    End Class
End Namespace

C#/VB.NET 将 Excel 转为 OFD 格式

申请临时 License

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

LaTeX 是一个强大的排版数学公式的工具,它支持多种数学符号来创建数学公式,如分数、积分、矩阵等。Spire.Presentation for .NET 提供了使用 LaTeX 代码创建并添加数学公式到 PowerPoint 幻灯片的方法,可供开发者创建多种类型的复杂公式,本文将对此做详细介绍。

安装Spire.Presentation for .NET

首先,您需要将 Spire.Presentation for.NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从 此链接 下载,也可以通过 NuGet 安装。

PM> Install-Package Spire.Presentation 

添加公式到幻灯片

下面是实现公式添加的详细步骤:

  • C#
  • VB.NET
using Spire.Presentation;
using Spire.Presentation.Drawing;
using System.Drawing;

namespace AddFormula
{
    class Program
    {
        static void Main(string[] args)
        {
            //定义LaTeX公式代码
            string latexCode1 = @"x^{2} + \sqrt{x^{2}+1}=2";
            string latexCode2 = @"F(x) &= \int^a_b \frac{1}{3}x^3";
            string latexCode3 = @"\alpha + \beta  \geq \gamma";
            string latexCode4 = @"\overrightarrow{abc}";
            string latexCode5 = @"\begin{bmatrix} 1 & 0 & \cdots & 0\\ 1 & 0 & \cdots & 0\\ \vdots & \vdots & \ddots & \vdots\\ 1 & 0 & 0 & 0 \end{bmatrix}";
            string latexCode6 = @"\log_a{b}";

            //创建Presentation类的实例
            Presentation ppt = new Presentation();

            //获取第一张幻灯片
            ISlide slide = ppt.Slides[0];

            //添加形状到幻灯片
            IAutoShape shape = slide.Shapes.AppendShape(ShapeType.Rectangle, new RectangleF(30, 100, 200, 30));
            shape.TextFrame.Paragraphs.Clear();
            //使用LaTeX代码添加数学公式到形状 
            shape.TextFrame.Paragraphs.AddParagraphFromLatexMathCode(latexCode1);

            //重复以上操作,添加形状,并添加公式到形状
            shape = slide.Shapes.AppendShape(ShapeType.Rectangle, new RectangleF(240, 100, 200, 40));
            shape.TextFrame.Paragraphs.Clear(); 
            shape.TextFrame.Paragraphs.AddParagraphFromLatexMathCode(latexCode2);

            shape = slide.Shapes.AppendShape(ShapeType.Rectangle, new RectangleF(30, 180, 200, 40));
            shape.TextFrame.Paragraphs.Clear();            
            shape.TextFrame.Paragraphs.AddParagraphFromLatexMathCode(latexCode3);

            shape = slide.Shapes.AppendShape(ShapeType.Rectangle, new RectangleF(240, 180, 200, 40));
            shape.TextFrame.Paragraphs.Clear();
            shape.TextFrame.Paragraphs.AddParagraphFromLatexMathCode(latexCode4);

            shape = slide.Shapes.AppendShape(ShapeType.Rectangle, new RectangleF(30, 280, 200, 70));
            shape.TextFrame.Paragraphs.Clear();
            shape.TextFrame.Paragraphs.AddParagraphFromLatexMathCode(latexCode5);

            shape = slide.Shapes.AppendShape(ShapeType.Rectangle, new RectangleF(240, 280, 200, 40));
            shape.TextFrame.Paragraphs.Clear();
            shape.TextFrame.Paragraphs.AddParagraphFromLatexMathCode(latexCode6);

            //设置形状边框和填充类型
            for (int i = 0; i < slide.Shapes.Count; i++)
            {
                slide.Shapes[i].Fill.FillType = FillFormatType.None;
                slide.Shapes[i].Line.FillType = FillFormatType.None;
            }

            //保存文档
            ppt.SaveToFile("MathEquations.pptx", FileFormat.Pptx2013);
        }
    }
}
Imports Spire.Presentation
Imports Spire.Presentation.Drawing
Imports System.Drawing

Namespace AddFormula
	Class Program
		Private Shared Sub Main(args As String())
			'定义LaTeX公式代码
			Dim latexCode1 As String = "x^{2} + \sqrt{x^{2}+1}=2"
			Dim latexCode2 As String = "F(x) &= \int^a_b \frac{1}{3}x^3"
			Dim latexCode3 As String = "\alpha + \beta  \geq \gamma"
			Dim latexCode4 As String = "\overrightarrow{abc}"
			Dim latexCode5 As String = "\begin{bmatrix} 1 & 0 & \cdots & 0\\ 1 & 0 & \cdots & 0\\ \vdots & \vdots & \ddots & \vdots\\ 1 & 0 & 0 & 0 \end{bmatrix}"
			Dim latexCode6 As String = "\log_a{b}"

			'创建Presentation类的实例
			Dim ppt As New Presentation()

			'获取第一张幻灯片
			Dim slide As ISlide = ppt.Slides(0)

			'添加形状到幻灯片
			Dim shape As IAutoShape = slide.Shapes.AppendShape(ShapeType.Rectangle, New RectangleF(30, 100, 200, 30))
			shape.TextFrame.Paragraphs.Clear()
			'使用LaTeX代码添加数学公式到形状 
			shape.TextFrame.Paragraphs.AddParagraphFromLatexMathCode(latexCode1)

			'重复以上操作,添加形状,并添加公式到形状
			shape = slide.Shapes.AppendShape(ShapeType.Rectangle, New RectangleF(240, 100, 200, 40))
			shape.TextFrame.Paragraphs.Clear()
			shape.TextFrame.Paragraphs.AddParagraphFromLatexMathCode(latexCode2)

			shape = slide.Shapes.AppendShape(ShapeType.Rectangle, New RectangleF(30, 180, 200, 40))
			shape.TextFrame.Paragraphs.Clear()
			shape.TextFrame.Paragraphs.AddParagraphFromLatexMathCode(latexCode3)

			shape = slide.Shapes.AppendShape(ShapeType.Rectangle, New RectangleF(240, 180, 200, 40))
			shape.TextFrame.Paragraphs.Clear()
			shape.TextFrame.Paragraphs.AddParagraphFromLatexMathCode(latexCode4)

			shape = slide.Shapes.AppendShape(ShapeType.Rectangle, New RectangleF(30, 280, 200, 70))
			shape.TextFrame.Paragraphs.Clear()
			shape.TextFrame.Paragraphs.AddParagraphFromLatexMathCode(latexCode5)

			shape = slide.Shapes.AppendShape(ShapeType.Rectangle, New RectangleF(240, 280, 200, 40))
			shape.TextFrame.Paragraphs.Clear()
			shape.TextFrame.Paragraphs.AddParagraphFromLatexMathCode(latexCode6)

			'设置形状边框和填充类型
			For i As Integer = 0 To slide.Shapes.Count - 1
				slide.Shapes(i).Fill.FillType = FillFormatType.None
				slide.Shapes(i).Line.FillType = FillFormatType.None
			Next

			'保存文档
			ppt.SaveToFile("MathEquations.pptx", FileFormat.Pptx2013)
		End Sub
	End Class
End Namespace

公式添加效果:

C#/VB.NET 使用 LaTeX 代码添加数学公式到 PowerPoint 幻灯片

申请临时 License

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