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

Aspose.PDF 是一款高级PDF处理API,可以在跨平台应用程序中轻松生成,修改,转换,呈现,保护和打印文档。无需使用Adobe Acrobat。此外,API提供压缩选项,表创建和处理,图形和图像功能,广泛的超链接功能,图章和水印任务,扩展的安全控件和自定义字体处理。

Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。

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

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

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

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++; }

猜你喜欢

转载自blog.csdn.net/m0_67129275/article/details/131763361