1. 产品
  2.   PDF格式
  3.   C++
  4.   PoDoFo
 
  

免费 C++ API 用于创建、操作和解析 PDF 文件。

领先的开源 PDF 操作库,使 C++ 开发者能够在 C++ 应用中轻松创建、操作、加密、管理字体以及解析 PDF 文档。

什么是 PoDoFo 库?

在 C++ 开发领域,能够以编程方式创建、修改和提取 PDF 文件中的数据是一项常见需求。PoDoFo 库是一款开源且可移植的 C++17 库,成为处理 PDF 的强大且多功能的解决方案。PoDoFo 是免费提供的,专为 PDF 文件格式而设计。它使软件开发者能够解析 PDF 文件,检查高级 PDF 实体(如批注和表单字段),在内存中修改它们,并将更改写回磁盘到自己的应用程序中。该库还能够轻松地从头构建全新的 PDF,而无需任何外部依赖。

PoDoFo 是一个强大的 C++ 库,使软件开发者能够以编程方式处理可移植文档格式(PDF)。该库在 LGPL v2.0 或更高版本下授权,配套工具在 GPL v2.0 或更高版本下授权,PoDoFo 库为商业和开源项目提供了灵活性和开放性。它提供了一套丰富的工具,用于从头解析、操作和生成 PDF 文档。无论您需要自动化报告生成、提取文本进行数据分析,还是添加数字签名以提升安全性,PoDoFo 都提供了全面且灵活的 API 来满足您的需求。

Previous Next

PoDoFo 入门指南

推荐的 PoDoFo 安装方式是使用 CMake。请使用以下命令进行顺利安装。

从 GitHub 安装 PPTXTemplater

 vcpkg install fontconfig freetype libxml2 openssl libjpeg-turbo libpng tiff zlib
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake -DCMAKE_BUILD_TYPE=Debug ..
cmake --build . --config Debug

从 GitHub 安装 PPTXTemplater

 git clone https://github.com/podofo/podofo.git

您也可以手动安装;直接从 GitHub 仓库下载最新的发布文件。

PDF 创建与修改

开源的 PoDoFo 库已在 C++ 库中加入了对 PDF 文档创建和操作的完整支持。 在其核心,PoDoFo 擅长创建新 PDF 文档并修改已有文档。软件开发者可以添加新页面、绘制文本、插入各种图形元素,并轻松打开加密文档。下面的简单示例演示了软件开发者如何在 C++ 应用程序中创建一个简单的 PDF 文档

如何使用 C++ 库创建简单的 PDF?

#include 

using namespace PoDoFo;

int main() {
    PdfStreamedDocument document(\"HelloWorld.pdf\");
    PdfPainter painter;
    PdfPage* pPage;

    try {
        pPage = document.CreatePage(PdfPage::CreateStandardPageSize(ePdfPageSize_A4));
        painter.SetPage(pPage);
        PdfFont* pFont = document.CreateFont(\"Arial\");
        pFont->SetFontSize(18.0);
        painter.SetFont(pFont);
        painter.DrawText(56.69, pPage->GetPageSize().GetHeight() - 56.69, \"Hello World!\");
        painter.FinishPage();
        document.Close();
    } catch (const PdfError & e) {
        e.PrintErrorMsg();
        return e.GetCode();
    }

    return 0;
}
 

使用 C++ 从 PDF 文件提取文本

PoDoFo 库提供了强大的机制,只需几行 C++ 代码即可加载并提取 PDF 文档中的文本。该功能对于需要内容索引、数据挖掘或文档分析的应用程序而言极其宝贵。在下面的代码示例中,开发者可以将 PDF 加载到 PdfMemDocument 中,遍历其页面,并使用 ExtractTextTo 方法检索文本内容。

如何通过 C++ API 加载并提取 PDF 文件中的文本?

#include 
using namespace PoDoFo;

PdfMemDocument pdf("document.pdf");
int pageCount = pdf.GetPageCount();
for (int i = 0; i < pageCount; ++i) {
    PdfPage* page = pdf.GetPage(i);
    PdfContentsTokenizer tokenizer(page);

    const char* token = nullptr;
    PdfVariant var;
    EPdfContentsType type;

    while (tokenizer.ReadNext(type, token, var)) {
        if (type == ePdfContentsType_Keyword) {
            printf("Operator: %s\n", token);
        } else if (type == ePdfContentsType_Variant) {
            // Examine var as needed
        }
    }
}

 

通过 C++ API 为 PDF 添加数字签名?

在处理正式文件时,安全至关重要。PoDoFo 库支持向 PDF 文件添加数字签名,确保文档的真实性和完整性。这对于合同、发票及其他法律文件尤为有用。虽然完整的数字签名示例较为复杂且需要有效的证书,但以下概念代码展示了该过程。

如何通过 C++ 为 PDF 添加数字签名?

 // Conceptual Code - Not a complete working example
#include 

using namespace PoDoFo;

int main() {
    PdfMemDocument document("unsigned.pdf");
    PdfPage* pPage = document.GetPage(0);

    // Create a signature field
    PdfSignatureField sigField(pPage,
        PdfRect(100, pPage->GetPageSize().GetHeight() - 100, 200, 50),
        &document);

    // Set signature properties
    // ...

    // Sign the document using a custom signer implementation
    // MySigner signer("my_certificate.pfx", "password");
    // document.Sign(sigField, signer);

    document.Write("signed.pdf");

    return 0;
}
 

字体处理与 Unicode 支持

免费版的 PoDoFo 库对多种字体类型提供强大的支持,包括 TrueType 和 Type1 字体。库还支持字体子集化,有助于减小生成的 PDF 文件大小。此外,其出色的 Unicode 支持确保您可以处理各种语言和字符集。完整支持 PDF 签名(符合 PAdES-B 标准)、RSA/ECDSA 加密以及异步或延迟签名工作流。

 中国人