从 PDF 文件中提取文本和图像让您能够在其他类型的文件(例如 Word 文档、网页或演示文稿)中快速重复使用这些内容。这种方法可以帮助您节省大量时间和精力,因为它省略了从头开始重新键入信息的繁琐且耗时的过程。在本文中,您将学习如何使用 Spire.PDF for C++ 从 PDF 文件中提取文本和图像。
安装 Spire.PDF for C++
有两种方法可以将 Spire.PDF for C++ 集成到您的应用程序中。一种方法是通过 NuGet 安装它,另一种方法是从我们的网站下载包并将库复制到您的程序中。通过 NuGet 安装更简单,更推荐使用。您可以通过访问以下链接找到更多详细信息。
如何将 Spire.PDF for C++ 集成到 C++ 程序中
从 PDF 中提取文本
Spire.PDF for C++ 提供了 PdfPageBase->ExtractText() 方法,使您能够从 PDF 文件中的页面中提取文本。具体步骤如下:
- 初始化 PdfDocument 类的实例。
- 使用 PdfDocument->LoadFromFile() 方法加载 PDF 文件。
- 遍历文件中的所有页面。
- 使用 PdfPageBase->ExtractText() 方法从页面中提取文本。
- 将提取的文本保存为 TXT 文件。
- C++
#include "Spire.Pdf.o.h"
#include <locale>
#include <codecvt>
using namespace Spire::Pdf;
using namespace std;
int main()
{
//初始化PdfDocument类的实例
PdfDocument* doc = new PdfDocument();
//加载PDF文件
doc->LoadFromFile(L"极昼极夜是怎么形成的.pdf");
wstring buffer = L"";
//遍历文件中的所有页面
for (int i = 0; i < doc->GetPages()->GetCount(); i++)
{
PdfPageBase* page = doc->GetPages()->GetItem(i);
//从页面中提取文本
buffer += (page->ExtractText());
}
//将提取的文本保存为txt文件
wofstream write(L"提取文本.txt");
auto LocUtf8 = locale(locale(""), new std::codecvt_utf8<wchar_t>);
write.imbue(LocUtf8);
write << buffer;
write.close();
doc->Close();
delete doc;
}
从 PDF 中的特定页面区域提取文本
您可以使用 Page->ExtractText(RectangleF* rectangleF) 方法从 PDF 页面的特定矩形区域提取文本。具体步骤如下:
- 初始化 PdfDocument 类的实例。
- 使用 PdfDocument->LoadFromFile() 方法加载 PDF 文件。
- 使用 PdfDocument->GetPages()->GetItem(int index) 方法通过索引获取特定页面。
- 使用 Page->ExtractText(RectangleF* rectangleF) 方法从页面的特定矩形区域提取文本。
- 将提取的文本保存为 TXT 文件。
- C++
#include "Spire.Pdf.o.h"
#include <locale>
#include <codecvt>
using namespace Spire::Pdf;
using namespace std;
int main()
{
//初始化PdfDocument类的实例
PdfDocument* doc = new PdfDocument();
//加载PDF文件
doc->LoadFromFile(L"极昼极夜是怎么形成的.pdf");
//获取指定页面
PdfPageBase* page = doc->GetPages()->GetItem(0);
//从页面中的特定矩形区域提取文本
wstring text = page->ExtractText(new RectangleF(0, 0, 600, 200));
//将提取的文本保存为txt文件
wofstream write(L"从指定区域提取文本.txt");
auto LocUtf8 = locale(locale(""), new std::codecvt_utf8<wchar_t>);
write.imbue(LocUtf8);
write << text;
write.close();
doc->Close();
delete doc;
}
从 PDF 中提取图像
您可以使用 PdfPageBase->ExtractImages() 方法从 PDF 文件中的页面中提取图像。具体步骤如下:
- 初始化 PdfDocument 类的实例。
- 使用 PdfDocument->LoadFromFile() 方法加载 PDF 文件。
- 遍历文件中的所有页面。
- 使用 PdfPageBase->ExtractImages() 方法从页面中提取图像。
- 将提取的图像保存为 PNG 文件。
- C++
#include "Spire.Pdf.o.h"
#include <locale>
#include <codecvt>
using namespace Spire::Pdf;
using namespace std;
int main()
{
//初始化PdfDocument类的实例
PdfDocument* doc = new PdfDocument();
//加载PDF文件
doc->LoadFromFile(L"我国养老金问题如何缓解.pdf");
int index = 0;
//遍历文件中的所有页面
for (int i = 0; i < doc->GetPages()->GetCount(); i++)
{
PdfPageBase* page = doc->GetPages()->GetItem(i);
//从页面中提取图像
for (auto image : page->ExtractImages())
{
std::wstring imageFileName = L"Images\\Image-" + to_wstring(index) + L".png";
image->Save(imageFileName.c_str(), ImageFormat::GetPng());
index++;
}
}
doc->Close();
delete doc;
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。