Бесплатный 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, отвечающий вашим требованиям.
Начало работы с 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 и асинхронных или отложенных процессов подписания.