logo Aspose.PDF使用教程 我也要发布文档

C++版演示:使用C ++以编程方式从PDF文档中提取文本


在数字信息领域,从文档(PDF,文字处理,网页等)中提取文本具有多种用例。例如,它可以用于解析文档,执行文本分析,信息检索,将文档内容存储到数据库中等等。如果缩小范围,PDF是保存和共享数字信息的最广泛使用的文档格式之一。这种受欢迎程度使PDF文档成为信息的巨大来源。因此,从PDF文档中解析或提取文本可能会涉及多种文本分析方案。

为了在C ++应用程序中自动进行PDF解析,本文演示了如何使用C ++ 从PDF文档中提取文本。它涵盖以下文本提取方案:

  • 使用C ++从PDF文档中提取文本。
  • 使用C ++从PDF文档中的特定页面提取文本。
  • 使用C ++从PDF文档中逐页提取文本。

点击下载最新版Aspose.PDF for C++

C++版PDF处理控件Aspose.PDF功能演示:使用C ++以编程方式从PDF文档中提取文本


使用C ++从PDF提取文本

Aspose.PDF for C ++使您可以通过几个简单的步骤来解析PDF文档。以下是从PDF文档提取文本的方法。

  • 创建一个PdfExtractor类的对象。
  • 使用PdfExtractor-> BindPdf()函数加载PDF文档。
  • 使用PdfExtractor-> ExtractText()函数将PDF文档中的文本提取到PdfExtractor。
  • 将提取的文本保存到MemoryStream对象中。
  • 从MemoryStream中以字符串形式读取文本。

以下代码示例显示了如何使用C ++从PDF中提取文本。

auto extractor = MakeObject();
// Bind source PDF document
extractor->BindPdf(u"candy.pdf");
// Extract text from PDF to PdfExtractor
extractor->ExtractText();
auto memStream = MakeObject();
// Save text into memory stream
extractor->GetText(memStream);
auto unicode = System::Text::Encoding::get_Unicode();
String allText = unicode->GetString(memStream->ToArray());
// Print extracted text
Console::WriteLine(u"Extracted text:");
Console::WriteLine(allText);

使用C ++从PDF中的特定页面提取文本

在某些情况下,仅需要从几页PDF中提取文本。在这种情况下,可以通过设置开始和结束页码来指定PDF中的页面范围。以下是从PDF文档中特定页面提取文本的步骤。

  • 创建一个PdfExtractor类的对象。
  • 使用PdfExtractor-> BindPdf()函数加载PDF文档。
  • 分别使用PdfExtractor-> set_StartPage()和PdfExtractor-> set_EndPage()函数设置开始和结束页码。
  • 使用PdfExtractor-> ExtractText()函数从PDF提取文本。
  • 将提取的文本保存到MemoryStream对象中。
  • 从MemoryStream中以字符串形式读取文本。

以下代码示例显示了如何从C ++中的PDF特定页面提取文本。

auto extractor = MakeObject();
// Bind source PDF document
extractor->BindPdf(u"candy.pdf");
// Set page range
extractor->set_StartPage(2);
extractor->set_EndPage(2);
// Extract text from PDF to PdfExtractor
extractor->ExtractText();
auto memStream = MakeObject();
// Save text into memory stream
extractor->GetText(memStream);
auto unicode = System::Text::Encoding::get_Unicode();
String allText = unicode->GetString(memStream->ToArray());
// Print extracted text
Console::WriteLine(u"Extracted text:");
Console::WriteLine(allText);

在C ++中从PDF提取逐页文本

您可以从文档的每一页分别提取文本,而不是从PDF文档提取所有文本。以下是从PDF中逐页提取文本的步骤。

  • 创建一个PdfExtractor类的对象。
  • 使用PdfExtractor-> BindPdf()函数加载PDF文档。
  • 调用PdfExtractor-> ExtractText()函数将文本从PDF文档检索到PdfExtractor。
  • 使用PdfExtractor-> HasNextPageText()函数循环浏览每个页面。
  • 使用PdfExtractor-> GetNextPageText()函数将文本提取到内存流中。
  • 从内存流中读取文本。

下面的代码示例演示如何在C ++中从PDF逐页提取文本。

auto extractor = MakeObject();
// Bind source PDF document
extractor->BindPdf(u"candy.pdf");
// Extract text from PDF to PdfExtractor
extractor->ExtractText();
auto unicode = System::Text::Encoding::get_Unicode();
int pageNumber = 1; 

while (extractor->HasNextPageText())
{
	auto memStream = MakeObject();
	extractor->GetNextPageText(memStream);
	String text;
	// Specify Unicode encoding type in StreamReader constructor
	auto streamReader = MakeObject(memStream, unicode);
	streamReader->get_BaseStream()->Seek(0, SeekOrigin::Begin);
	text = streamReader->ReadToEnd();
	streamReader->Dispose();
	// Print extracted text
	std::cout << "Page: " << pageNumber << "\n"; Console::Write(text); std::cout << "\n------------------------\n"; pageNumber++; }

Aspose是目前国内外非常火爆且功能强大的文件格式敏捷开发控件,但因为产品众多、技术问题复杂等因素,也常常遭受开发人员吐槽。如果您也正在使用Aspose相关产品,点击下方按钮,来谈谈Aspose的优劣,您的感受对我们相当宝贵哦~

一起聊聊Aspose的感受吧