如何从 PDF 文件中提取嵌入的文本和图像

This article was translated from English: Does it need improvement?
Translated
View the article in English

查克尼特·宾

提取嵌入的文本和图像包括检索文档中的文本内容和图形元素。这一过程允许用户访问和重新利用这些内容,以便进行编辑、搜索或将文本转换为其他格式,并保存图像以供重新使用或分析。

要从 PDF 中提取文本和图像,请使用 IronPdf。提取的图像可保存到磁盘,或转换为其他图像格式,并嵌入到新渲染的文档中。


适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

开始在您的项目中使用IronPDF,并立即获取免费试用。

第一步:
green arrow pointer

查看 IronPDFNuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变PDF。

适用于PDF的C# NuGet库 nuget.org/packages/IronPdf/
Install-Package IronPdf

考虑安装 IronPDF DLL 直接。下载并手动安装到您的项目或GAC表单中: IronPdf.zip

手动安装到你的项目中

下载DLL

提取文本示例

文本提取可在新渲染的 PDF 文档和现有 PDF 文档中执行。使用 ExtractAllText 方法可提取文档中的嵌入文本。该方法将返回一个包含给定 PDF 中所有文本的字符串。页面之间由四个连续的 Environment.NewLinesPages 分隔。让我们使用 PDF 样本 这是我从维基百科网站上下载的。

:path=/static-assets/pdf/content-code-examples/how-to/extract-text-and-images-extract-text.cs
using IronPdf;
using System.IO;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Extract text
string text = pdf.ExtractAllText();

// Export the extracted text to a text file
File.WriteAllText("extractedText.txt", text);
Imports IronPdf
Imports System.IO

Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Extract text
Private text As String = pdf.ExtractAllText()

' Export the extracted text to a text file
File.WriteAllText("extractedText.txt", text)
VB   C#
摘录文本

按行和字符提取文本

在每个 PDF 页面中,都可以检索文本行和字符的坐标。首先,从 PDF 中选择一页,然后访问 LinesCharacters 属性。坐标以顶部、右侧、底部和左侧值的形式显示,代表文本的位置。

:path=/static-assets/pdf/content-code-examples/how-to/extract-text-and-images-extract-text-by-line-character.cs
using IronPdf;
using System.IO;
using System.Linq;

// Open PDF from file
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Extract text by lines
var lines = pdf.Pages[0].Lines;

// Extract text by characters
var characters = pdf.Pages[0].Characters;

File.WriteAllLines("lines.txt", lines.Select(l => $"at Y={l.Bottom:F2}: {l.Contents}"));
Imports IronPdf
Imports System.IO
Imports System.Linq

' Open PDF from file
Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Extract text by lines
Private lines = pdf.Pages(0).Lines

' Extract text by characters
Private characters = pdf.Pages(0).Characters

File.WriteAllLines("lines.txt", lines.Select(Function(l) $"at Y={l.Bottom:F2}: {l.Contents}"))
VB   C#
按行和字符提取文本

提取图像示例

使用 ExtractAllImages 方法提取文档中嵌入的所有图像。该方法将以 AnyBitmap 对象列表的形式返回图像。使用之前示例中的同一文档,我们提取了图像并将其导出到 "images "文件夹。

:path=/static-assets/pdf/content-code-examples/how-to/extract-text-and-images-extract-image.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Extract images
var images = pdf.ExtractAllImages();

for(int i = 0; i < images.Count; i++)
{
    // Export the extracted images
    images[i].SaveAs($"images/image{i}.png");
}
Imports IronPdf

Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Extract images
Private images = pdf.ExtractAllImages()

For i As Integer = 0 To images.Count - 1
	' Export the extracted images
	images(i).SaveAs($"images/image{i}.png")
Next i
VB   C#
提取的图像

除了上面显示的 ExtractAllImages 方法外,用户还可以使用 ExtractAllBitmapsExtractAllRawImages 方法从文档中提取图像信息。如代码示例所示,"ExtractAllBitmaps "方法将返回一个 AnyBitmap 列表,而 "ExtractAllRawImages "方法将提取 PDF 文档中的所有图像,并以字节数组的形式返回原始数据 (字节 []).


提取特定页面上的文本和图像

文本和图像提取可在单个或多个指定页面上进行。使用 ExtractTextFromPageExtractTextFromPages 方法可分别从单页或多页提取文本。要提取图像,请使用 ExtractImagesFromPageExtractImagesFromPages 方法。

:path=/static-assets/pdf/content-code-examples/how-to/extract-text-and-images-extract-text-single-multiple.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Extract text from page 1
string textFromPage1 = pdf.ExtractTextFromPage(0);

int[] pages = new[] { 0, 2 };

// Extract text from pages 1 & 3
string textFromPage1_3 = pdf.ExtractTextFromPages(pages);
Imports IronPdf

Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Extract text from page 1
Private textFromPage1 As String = pdf.ExtractTextFromPage(0)

Private pages() As Integer = { 0, 2 }

' Extract text from pages 1 & 3
Private textFromPage1_3 As String = pdf.ExtractTextFromPages(pages)
VB   C#

查克尼特·宾

软件工程师

Chaknith 是开发者中的福尔摩斯。他第一次意识到自己可能在软件工程方面有前途,是在他出于乐趣做代码挑战的时候。他的重点是 IronXL 和 IronBarcode,但他为能帮助客户解决每一款产品的问题而感到自豪。Chaknith 利用他从直接与客户交谈中获得的知识,帮助进一步改进产品。他的轶事反馈不仅仅局限于 Jira 票据,还支持产品开发、文档编写和市场营销,从而提升客户的整体体验。当他不在办公室时,他可能会在学习机器学习、编程或徒步旅行。