PDF 工具

如何在 C++ 中读取 PDF 文件

发布 2023年七月5日
分享:

PDF (便携式文档格式) 文件被广泛用于文档交换,能够以编程方式读取其内容在各种应用程序中都很有价值。以下库可用来在 C++ 中读取 PDF:Poppler、Mupdf、Haru 免费 PDF 库、Xpdf、Qpdf。

在本文中,我们将只探讨如何使用 Xpdf 命令行工具在 C++ 中读取 PDF 文件。Xpdf 提供了一系列处理 PDF 文件的实用程序,包括提取文本内容。通过将 Xpdf 集成到 C++ 程序中,我们可以从 PDF 文件中提取文本并进行编程处理。

Xpdf - 命令行工具

Xpdf 是一个开放源码软件套件,提供了一系列用于处理 PDF 的工具和库 (便携式文档格式) 文件。Xpdf 套件包括多个命令行实用程序和 C++ 库,可实现各种与 PDF 相关的功能,如解析、渲染、文本提取等。Xpdf 的一些关键组件包括 pdfimages, pdftops, pdfinfo, pdfimages. 在这里,我们将使用 pdftotext 来读取 PDF 文档。

pdftotext 是一个命令行工具,能从 PDF 文件中提取文本内容并输出为纯文本。当您需要从 PDF 文件中提取文本信息以作进一步处理或分析时,该工具尤其有用。通过使用选项,您还可以指定从哪一页或哪几页中提取文本。

先决条件

要制作提取文本的 PDF 阅读器项目,我们需要具备以下先决条件:

1.系统中已安装 GCC 或 Clang 等 C++ 编译器。您可以使用任何支持 C++ 编程的集成开发环境。

2.系统中已安装 Xpdf 命令行工具。Xpdf 是 PDF 实用工具的集合,可从 Xpdf 网站获取。从此处下载:https://www.xpdfreader.com/。在环境变量路径中设置 Xpdf 的 bin 目录,以便在任何地方使用命令行工具访问它。

用 C++ 阅读 PDF 文件格式的步骤

步骤 1 包括必要的标头

首先,在我们的 main.cpp 文件顶部添加必要的头文件:

#include <cstdlib>
#include <iostream>
#include <fstream>

第 2 步 编写 C++ 代码

让我们编写 C++ 代码,调用 Xpdf 命令行工具从 PDF 文档中提取文本内容。我们将使用以下 input.pdf 文件:

如何用 C++ 阅读 PDF 文件:图 1

代码示例如下

// Include C library
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <cstdio>

using namespace std;

int main() {
    string pdfPath = "input.pdf";
    string outputFilePath = "output.txt";

    string command = "pdftotext " + pdfPath + " " + outputFilePath;
    int status = system(command.c_str());

    if (status == 0) {
        cout << "Text extraction successful." << endl;
    } else {
        cout << "Text extraction failed." << endl;
        return 1;
    }

    ifstream outputFile(outputFilePath);
    if (outputFile.is_open()) {
        string textContent;
        string line;
        while (getline(outputFile, line)) {
            textContent += line + "\n";
        }
        outputFile.close();

        cout << "Text content extracted from PDF document:" << endl;
        cout << textContent << endl;
    } else {
        cout << "Failed to open output file." << endl;
        return 1;
    }

    return 0;
}

代码说明

在上述代码中,我们定义了 pdfPath 变量来保存输入 PDF 文件的路径。请确保将其替换为实际输入 PDF 文档的适当路径。

我们还定义了 outputFilePath 变量,用于保存 Xpdf 将生成的输出文本文件的路径。

代码使用 system 函数执行 pdftotext 命令,将输入 PDF 文件路径和输出文本文件路径作为命令行参数传递。status 变量捕捉命令的退出状态。

如果 pdftotext 执行成功 (表示状态为 0)然后,我们使用 ifstream 打开输出文本文件。然后,我们逐行读取文本内容,并将其存储到 textContent 字符串中。

最后,我们从生成的输出文件中将提取的文本内容输出到控制台。如果不需要可编辑的输出文本文件或想释放磁盘空间,在程序结束时,只需在主函数结束前使用以下命令删除该文件即可:

remove(outputFilePath.c_str());

第 3 步 编译并运行程序

编译 C++ 代码并运行可执行文件。如果在环境变量系统路径中添加了 pdftotext,其命令将成功执行。程序将生成输出文本文件,并从 PDF 文档中提取文本内容。提取的文本会显示在控制台上。

输出如下

如何用 C++ 阅读 PDF 文件:图 2

用 C&num 阅读 PDF 文件

IronPDF 图书馆

IronPDF 是一个流行的 C# PDF 库,为处理 PDF 文档提供了强大的功能。它使开发人员能够以编程方式创建、编辑、修改和读取 PDF 文件;

使用 IronPDF 库读取 PDF 文档是一个简单明了的过程。该库提供了各种方法和属性,使开发人员能够从 PDF 页面中提取文本、图像、元数据和其他数据。提取的信息可用于进一步处理、分析或在应用程序中显示。

以下代码示例将 阅读 PDF 文件 格式:

//Rendering PDF documents to Images or Thumbnails
using IronPdf;
using IronSoftware.Drawing;
using System.Collections.Generic;

// Extracting Image and Text content from Pdf Documents

// open a 128 bit encrypted PDF
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");

// Get all text to put in a search index
string text = pdf.ExtractAllText();

// Get all Images
var allImages = pdf.ExtractAllImages();

// Or even find the precise text and images for each page in the document
for (var index = 0 ; index < pdf.PageCount ; index++)
{
    int pageNumber = index + 1;
    text = pdf.ExtractTextFromPage(index);
    List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(index);
    //...
}

有关如何阅读 PDF 文档的详细信息,请访问链接 这里.

结论

在本文中,我们学习了如何使用 Xpdf 命令行工具在 C++ 中读取 PDF 文档的内容。通过将 Xpdf 集成到 C++ 程序中,我们可以在一秒钟内以编程方式从 PDF 文件中提取文本内容。这种方法使我们能够在 C++ 应用程序中处理和分析提取的文本。

IronPDF 是一个功能强大的 C# 库,便于阅读和处理 PDF 文件。其丰富的功能、易用性和可靠的渲染引擎使其成为在 C&num 项目中使用 PDF 文档的开发人员的首选。

IronPDF 可免费用于开发并提供 免费试用 用于商业用途。除此之外,还需要 特许 用于商业目的。

< 前一页
如何在 C++ 中创建 PDF 文件
下一步 >
如何在C++中将HTML转换为PDF

准备开始了吗? 版本: 2024.9 刚刚发布

免费NuGet下载 总下载量: 10,731,156 查看许可证 >