1. Товары
  2.   PDF
  3.   C++
  4.   PoDoFo
 
  

Бесплатный C++ API для создания, изменения и разбора PDF‑файлов.

Ведущая библиотека с открытым исходным кодом для работы с PDF позволяет разработчикам C++ без усилий создавать, изменять, шифровать, управлять шрифтами и разбирать PDF‑документы в приложениях на C++.

Что такое библиотека PoDoFo?

В мире разработки на C++ возможность программно создавать, изменять и извлекать данные из PDF‑файлов является распространённым требованием. Библиотека PoDoFo, открытая и переносимая библиотека C++17, выступает мощным и универсальным решением для всех задач, связанных с PDF. PoDoFo доступна бесплатно и предназначена для работы с форматом PDF. Она позволяет разработчикам программного обеспечения разбирать PDF‑файлы, исследовать высокоуровневые сущности PDF (например, аннотации и поля форм), изменять их в памяти и записывать изменения обратно на диск в рамках своих приложений. Библиотека также упрощает создание новых PDF‑документов с нуля без каких‑либо внешних зависимостей.

PoDoFo — это мощная библиотека C++, позволяющая разработчикам программного обеспечения работать с форматом Portable Document Format (PDF) программно. Лицензирована под LGPL v2.0 или более поздней версией для самой библиотеки и под GPL v2.0 или более поздней версией для сопутствующих инструментов, библиотека PoDoFo обеспечивает гибкость и открытость как для коммерческих, так и для открытых проектов. Она предоставляет широкий набор инструментов для разбора, манипуляции и создания PDF‑документов с нуля. Независимо от того, нужно ли вам автоматизировать генерацию отчетов, извлекать текст для анализа данных или добавлять цифровые подписи для безопасности, PoDoFo предлагает всесторонний и гибкий API, отвечающий вашим требованиям.

Previous Next

Начало работы с PoDoFo

Рекомендуемый способ установки PoDoFo — использование CMake. Пожалуйста, используйте следующую команду для беспроблемной установки.

Установить PPTXTemplater с GitHub

 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

Установить PPTXTemplater с GitHub

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

Вы также можете установить её вручную; скачайте последние файлы релиза напрямую из репозитория GitHub.

Создание и модификация PDF

Библиотека PoDoFo с открытым исходным кодом включает полную поддержку создания и манипулирования PDF‑документами в C++ библиотеке. В своей основе PoDoFo превосходно справляется с созданием новых PDF‑документов и изменением существующих. Разработчики программного обеспечения могут добавлять новые страницы, рисовать текст и вставлять различные графические элементы, а также легко открывать зашифрованные документы. Следующий простой пример демонстрирует, как разработчики могут создать простой PDF‑документ в C++ приложениях

Как создать простой PDF с помощью библиотеки C++?

#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;
}
 

Как загрузить и извлечь текст из PDF‑файлов с помощью C++ API?

#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
        }
    }
}

 

Добавить цифровые подписи в PDF через C++ API?

Безопасность имеет первостепенное значение при работе с официальными документами. Библиотека PoDoFo поддерживает добавление цифровых подписей в PDF‑файлы, обеспечивая подлинность и целостность ваших документов. Это особенно полезно для контрактов, счетов и других юридических документов. Хотя полноценный пример цифровой подписи сложен и требует действительного сертификата, следующий концептуальный код иллюстрирует процесс.

Как добавить цифровую подпись в PDF с помощью C++?

 // 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 и асинхронных или отложенных процессов подписания.

 Русский