PDF 工具

如何在C++中讀取PDF檔案

發佈 2023年7月5日
分享:

PDF (可攜式文件格式) 檔案廣泛用於文件交換,能夠以程式化方式讀取其內容在各種應用中非常有價值。以下是一些用於在 C++ 中讀取 PDF 的庫:Poppler、Mupdf、Haru free PDF library、Xpdf、Qpdf。

在本文中,我們將僅探討如何使用 Xpdf 命令行工具在 C++ 中讀取 PDF 檔案。Xpdf 提供了一系列處理 PDF 檔案的工具,包括提取文本內容。通過將 Xpdf 整合到 C++ 程式中,我們可以從 PDF 檔案中提取文本並以程式化方式處理它。

Xpdf - 命令行工具

Xpdf 是一個開源軟體套件,提供一系列工具和庫以處理PDF。 (可攜式文件格式) 文件。Xpdf 套件包括幾個命令行實用程序和 C++ 庫,可以實現各種 PDF 相關功能,如解析、渲染、文字提取等。Xpdf 的一些關鍵組件包括:pdfimagespdftopspdfinfopdfimages。在這裡,我們將使用 pdftotext 來閱讀 PDF 文件。

pdftotext 是一個命令行工具,可以從 PDF 文件中提取文字內容並將其輸出為純文本。當您需要從 PDF 中提取文字信息以進行後續處理或分析時,這個工具特別有用。使用選項,您還可以指定要提取文字的頁面或頁面範圍。

先決條件

要製作一個PDF讀取器專案以提取文本,我們需要以下先決條件到位:

  1. 在你的系統上安裝C++編譯器,例如GCC或Clang。你可以使用任何支援C++編程的IDE。

  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());

第三步 編譯和運行程序

編譯 C++ 代碼並運行可執行文件。如果 pdftotext 添加到環境變數系統路徑,則其命令將成功執行。程序會生成輸出文本文件並從 PDF 文檔中提取文本內容。提取的文本會隨後顯示在控制台上。

輸出如下

如何在C++中閱讀PDF文件:圖2

用 C# 讀取 PDF 檔案

IronPDF Library

IronPDF 是一個受歡迎的 C# PDF 庫,提供強大的功能來處理 PDF 文件。它允許開發人員以程式方式創建、編輯、修改和讀取 PDF 文件;

使用 IronPDF 庫讀取 PDF 文檔是一個簡單的過程。該庫提供了各種方法和屬性,使開發人員能夠從 PDF 頁面中提取文本、圖像、元數據和其他數據。提取的信息可以在應用程式中進行進一步處理、分析或顯示;

以下的代碼示例將 讀取 PDF 檔案 使用 IronPDF 進行格式化:

//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#項目中處理PDF文檔的熱門選擇。

IronPDF在開發階段是免費的,並提供一個 免費試用 用於商業用途。此外,它還需要 授權 用於商業用途。

< 上一頁
如何在C++中創建PDF檔案
下一個 >
如何在 C++ 中將 HTML 轉換為 PDF

準備開始了嗎? 版本: 2024.9 剛剛發布

免費 NuGet 下載 總下載次數: 10,746,704 查看許可證 >