PDF 文档的布局是固定的,不允许用户对其进行修改。如果您想让 PDF 文档内容再次可编辑,可以将 PDF 转换为 Word 或直接从 PDF 中提取文本。本文将分为以下三个部分介绍如何使用 Spire.PDF for .NET 在 C# 和 VB.NET 中提取 PDF 文档中的文本。
安装 Spire.PDF for .NET
首先,您需要添加 Spire.PDF for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.PDF
从特定 PDF 页面中提取文本
Spire.PDF for .NET 提供了 PdfTextExtractor.ExtractText() 方法,可供开发人员直接从 PDF 文档中提取文本。详细步骤如下。
- 创建一个 PdfDocument 对象。
- 使用 PdfDocument.LoadFromFile() 方法加载 PDF 文件。
- 通过 PdfDocument.Pages[index] 属性获取特定页面。
- 创建一个 PdfTextExtractor 对象。
- 创建一个 PdfTextExtractOptions 对象,并将 IsExtractAllText 属性设置为 true。
- 使用 PdfTextExtractor.ExtractText() 方法从所选页面中提取文本。
- 将提取的文本写入 TXT 文件。
- C#
- VB.NET
using System.IO;
using Spire.Pdf;
using Spire.Pdf.Texts;
namespace ExtractTextFromPage
{
class Program
{
static void Main(string[] args)
{
//创建一个 PdfDocument 对象
PdfDocument doc = new PdfDocument();
//加载PDF文件
doc.LoadFromFile("AI数字人.pdf");
//获取指定页面
PdfPageBase page = doc.Pages[1];
//创建一个PdfTextExtractot 对象
PdfTextExtractor textExtractor = new PdfTextExtractor(page);
//创建一个 PdfTextExtractOptions 对象
PdfTextExtractOptions extractOptions = new PdfTextExtractOptions();
//将 isExtractAllText 设置为true
extractOptions.IsExtractAllText = true;
//从所选页面中提取文本
string text = textExtractor.ExtractText(extractOptions);
//将提取的文本写入 TXT 文件
File.WriteAllText("提取指定页面文本.txt", text);
}
}
}
Imports System.IO
Imports Spire.Pdf
Imports Spire.Pdf.Texts
Namespace ExtractTextFromPage
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'创建一个 PdfDocument 对象
Dim doc As PdfDocument = New PdfDocument()
'加载PDF文件
doc.LoadFromFile("AI数字人.pdf")
'获取指定页面
Dim page As PdfPageBase = doc.Pages(1)
'创建一个PdfTextExtractot 对象
Dim textExtractor As PdfTextExtractor = New PdfTextExtractor(page)
'创建一个 PdfTextExtractOptions 对象
Dim extractOptions As PdfTextExtractOptions = New PdfTextExtractOptions()
'将 isExtractAllText 设置为true
extractOptions.IsExtractAllText = True
'从所选页面中提取文本
Dim text As String = textExtractor.ExtractText(extractOptions)
'将提取的文本写入 TXT 文件
File.WriteAllText("提取指定页面文本.txt", text)
End Sub
End Class
End Namespace
从特定矩形区域中提取文本
如果您需要从指定区域中提取 PDF 文本,可以通过 ExtractArea 属性指定矩形区域范围,并使用 PdfTextExtractor.ExtractText() 方法从指定区域中提取文本。详细步骤如下。
- 创建一个 PdfDocument 对象。
- 使用 PdfDocument.LoadFromFile() 方法加载 PDF 文件。
- 通过 PdfDocument.Pages[index] 属性获取特定页面。
- 创建一个 PdfTextExtractor 对象。
- 创建一个 PdfTextExtractOptions 对象,并通过它的 ExtractArea 属性指定矩形区域。
- 使用 PdfTextExtractor.ExtractText() 方法从指定区域中提取文本。
- 将提取的文本写入 TXT 文件。
- C#
- VB.NET
using Spire.Pdf;
using Spire.Pdf.Texts;
using System.IO;
using System.Drawing;
namespace ExtractTextFromRectangleArea
{
class Program
{
static void Main(string[] args)
{
//创建一个 PdfDocument 对象
PdfDocument doc = new PdfDocument();
//加载PDF文件
doc.LoadFromFile("AI数字人.pdf");
//获取指定页面
PdfPageBase page = doc.Pages[1];
//创建一个 PdfTextExtractot 对象
PdfTextExtractor textExtractor = new PdfTextExtractor(page);
//创建一个 PdfTextExtractOptions 对象
PdfTextExtractOptions extractOptions = new PdfTextExtractOptions();
//设置矩形区域范围
extractOptions.ExtractArea = new RectangleF(0, 0, 870, 150);
//从指定区域中提取文本
string text = textExtractor.ExtractText(extractOptions);
//将提取的文本写入 TXT 文件
File.WriteAllText("特定区域提取文本.txt", text);
}
}
}
Imports Spire.Pdf
Imports Spire.Pdf.Texts
Imports System.IO
Imports System.Drawing
Namespace ExtractTextFromRectangleArea
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'创建一个 PdfDocument 对象
Dim doc As PdfDocument = New PdfDocument()
'加载PDF文件
doc.LoadFromFile("AI数字人.pdf")
'获取指定页面
Dim page As PdfPageBase = doc.Pages(1)
'创建一个 PdfTextExtractot 对象
Dim textExtractor As PdfTextExtractor = New PdfTextExtractor(page)
'创建一个 PdfTextExtractOptions 对象
Dim extractOptions As PdfTextExtractOptions = New PdfTextExtractOptions()
'设置矩形区域范围
extractOptions.ExtractArea = New RectangleF(0, 0, 870, 150)
'从指定区域中提取文本
Dim text As String = textExtractor.ExtractText(extractOptions)
'将提取的文本写入 TXT 文件
File.WriteAllText("特定区域提取文本.txt", text)
End Sub
End Class
End Namespace
通过 SimpleTextExtractionStrategy 提取文本
上述方法为逐行提取文本。如果使用 SimpleTextExtractionStrategy 提取文本,它会跟踪每个字符串当前的 Y 轴位置,并在 Y 轴位置发生变化时在输出中插入换行符。详细步骤如下。
- 创建一个 PdfDocument 对象。
- 使用 PdfDocument.LoadFromFile() 方法加载 PDF 文件。
- 通过 PdfDocument.Pages[index] 属性获取特定页面。
- 创建一个 PdfTextExtractor 对象。
- 创建一个 PdfTextExtractOptions 对象并将 IsSimpleExtraction 属性设置为 true。
- 使用 PdfTextExtractor.ExtractText() 方法从所选页面中提取文本。
- 将提取的文本写入 TXT 文件。
- C#
- VB.NET
using System.IO;
using Spire.Pdf;
using Spire.Pdf.Texts;
namespace SimpleExtraction
{
class Program
{
static void Main(string[] args)
{
//创建一个 PdfDocument 对象
PdfDocument doc = new PdfDocument();
//加载PDF文件
doc.LoadFromFile("示例文件.pdf");
//获取指定页面
PdfPageBase page = doc.Pages[0];
//创建一个 PdfTextExtractor 对象
PdfTextExtractor textExtractor = new PdfTextExtractor(page);
//创建一个 PdfTextExtractOptions 对象
PdfTextExtractOptions extractOptions = new PdfTextExtractOptions();
//将 IsSimpleExtraction 设置为true
extractOptions.IsSimpleExtraction = true;
//从指定页面提取文本
string text = textExtractor.ExtractText(extractOptions);
//将提取的文本写入 TXT 文件
File.WriteAllText("提取文本.txt", text);
}
}
}
Imports System.IO
Imports Spire.Pdf
Imports Spire.Pdf.Texts
Namespace SimpleExtraction
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'创建一个 PdfDocument 对象
Dim doc As PdfDocument = New PdfDocument()
'加载PDF文件
doc.LoadFromFile("示例文件.pdf")
'获取指定页面
Dim page As PdfPageBase = doc.Pages(0)
'创建一个 PdfTextExtractor 对象
Dim textExtractor As PdfTextExtractor = New PdfTextExtractor(page)
'创建一个 PdfTextExtractOptions 对象
Dim extractOptions As PdfTextExtractOptions = New PdfTextExtractOptions()
'将 IsSimpleExtraction 设置为true
extractOptions.IsSimpleExtraction = True
'从指定页面提取文本
Dim text As String = textExtractor.ExtractText(extractOptions)
'将提取的文本写入 TXT 文件
File.WriteAllText("提取文本.txt", text)
End Sub
End Class
End Namespace
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。