C++版PDF處理控件Aspose.PDF功能演示:使用C ++以編程方式從PDF文檔中提取文本
在數(shù)字信息領(lǐng)域,從文檔(PDF,文字處理,網(wǎng)頁等)中提取文本具有多種用例。例如,它可以用于解析文檔,執(zhí)行文本分析,信息檢索,將文檔內(nèi)容存儲到數(shù)據(jù)庫中等等。如果縮小范圍,PDF是保存和共享數(shù)字信息的最廣泛使用的文檔格式之一。這種受歡迎程度使PDF文檔成為信息的巨大來源。因此,從PDF文檔中解析或提取文本可能會涉及多種文本分析方案。
為了在C ++應(yīng)用程序中自動進(jìn)行PDF解析,本文演示了如何使用C ++ 從PDF文檔中提取文本。它涵蓋以下文本提取方案:
- 使用C ++從PDF文檔中提取文本。
- 使用C ++從PDF文檔中的特定頁面提取文本。
- 使用C ++從PDF文檔中逐頁提取文本。
使用C ++從PDF提取文本
Aspose.PDF for C ++使您可以通過幾個簡單的步驟來解析PDF文檔。以下是從PDF文檔提取文本的方法。
- 創(chuàng)建一個PdfExtractor類的對象。
- 使用PdfExtractor-> BindPdf()函數(shù)加載PDF文檔。
- 使用PdfExtractor-> ExtractText()函數(shù)將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中提取文本。在這種情況下,可以通過設(shè)置開始和結(jié)束頁碼來指定PDF中的頁面范圍。以下是從PDF文檔中特定頁面提取文本的步驟。
- 創(chuàng)建一個PdfExtractor類的對象。
- 使用PdfExtractor-> BindPdf()函數(shù)加載PDF文檔。
- 分別使用PdfExtractor-> set_StartPage()和PdfExtractor-> set_EndPage()函數(shù)設(shè)置開始和結(jié)束頁碼。
- 使用PdfExtractor-> ExtractText()函數(shù)從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中逐頁提取文本的步驟。
- 創(chuàng)建一個PdfExtractor類的對象。
- 使用PdfExtractor-> BindPdf()函數(shù)加載PDF文檔。
- 調(diào)用PdfExtractor-> ExtractText()函數(shù)將文本從PDF文檔檢索到PdfExtractor。
- 使用PdfExtractor-> HasNextPageText()函數(shù)循環(huán)瀏覽每個頁面。
- 使用PdfExtractor-> GetNextPageText()函數(shù)將文本提取到內(nèi)存流中。
- 從內(nèi)存流中讀取文本。
下面的代碼示例演示如何在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是目前國內(nèi)外非?;鸨夜δ軓?qiáng)大的文件格式敏捷開發(fā)控件,但因為產(chǎn)品眾多、技術(shù)問題復(fù)雜等因素,也常常遭受開發(fā)人員吐槽。如果您也正在使用Aspose相關(guān)產(chǎn)品,點擊下方按鈕,來談?wù)凙spose的優(yōu)劣,您的感受對我們相當(dāng)寶貴哦~