1. محصولات
  2.   Aspose.PDF
  3.   Aspose.PDF FOSS for C++

Aspose.PDF FOSS برای C++

کتابخانه منبع باز C++ برای ایجاد، ویرایش، رندر و ایمن‌سازی اسناد PDF بدون هیچ وابستگی در زمان اجرا.

Aspose.PDF FOSS — کتابخانه PDF منبع باز C++

Aspose.PDF FOSS for C++ یک کتابخانه متن‌باز و مدرن C++20 برای کار با اسناد PDF است — باز کردن و ذخیره‌سازی PDFها، استخراج متن، رستر کردن صفحات به فرمت‌های تصویری، و ساخت اسناد از ابتدا (متن، تصاویر، جدول‌ها، گرافیک‌های برداری، حاشیه‌نویسی‌ها، فیلدهای AcroForm و نشانک‌ها).

هسته API حول کلاس Document و مجموعه Pages() آن ساخته شده است. متن با Aspose::Pdf::Text::TextAbsorber استخراج می‌شود، صفحات با کلاس‌های دستگاهی مانند PngDevice، JpegDevice، BmpDevice و TiffDevice به تصاویر رستر تبدیل می‌شوند، و اسناد می‌توانند با Document.Encrypt() با استفاده از الگوریتم‌های RC4-40، RC4-128، AES-128 یا AES-256 که از طریق enum CryptoAlgorithm انتخاب می‌شوند، امن شوند. فیلدهای فرم تعاملی از طریق کلاس Form مدیریت می‌شوند، و حاشیه‌نویسی‌ها — یادداشت‌های متنی، هایلایت‌ها، اشکال و مهرها — از طریق سلسله مراتب کلاس Annotation اضافه و اصلاح می‌شوند.

Aspose.PDF FOSS for C++ تحت مجوز MIT منتشر شده است و هیچ هزینهٔ زمان اجرا یا محدودیت استفاده‌ای ندارد. این کتابخانه به‌صورت یک کتابخانهٔ ایستاتیک از طریق CMake ساخته می‌شود — آن را به‌عنوان زیرپوشه‌ای به ساخت خود اضافه کنید یا به‌صورت مستقل نصب کنید — و به یک کامپایلر C++20 بدون وابستگی‌های زمان اجرا دیگر نیاز دارد. برای ویژگی‌ها و پشتیبانی سازمانی، ببینید Aspose.PDF for C++ — Enterprise Product.

بارگذاری سند و مدیریت صفحات

  • باز کردن فایل‌های PDF موجود و ذخیره تغییرات با Document
  • دسترسی و پیمایش صفحات از طریق Document.Pages() (PageCollection)
  • افزودن، درج و حذف صفحات با PageCollection.Add()/Insert()/Delete()
  • خواندن و تنظیم متادیتای سند از طریق DocumentInfo (Document.Info())
  • بهینه‌سازی حجم سند با Document.Optimize()/OptimizeResources()

موارد استفاده رایج

  • ساخت خطوط لوله تولید PDF برای گزارش‌ها و فاکتورها
  • ادغام، تقسیم و بازسازماندهی اسناد PDF موجود
  • بررسی و به‌روزرسانی متادیتای سند به‌صورت برنامه‌نویسی
  • کاهش حجم فایل PDF قبل از بایگانی یا توزیع

استخراج متن

  • استخراج متن ساده از یک سند کامل با Aspose::Pdf::Text::TextAbsorber
  • بازدید از یک صفحهٔ تک یا کل سند از طریق TextAbsorber.Visit()
  • دریافت متن استخراج‌شده از طریق TextAbsorber.Text()
  • یافتن تکه‌های متن جداگانه با TextFragmentAbsorber.TextFragments()

موارد استفاده معمول

  • فهرست‌کردن محتوای PDF برای جستجو
  • استخراج داده‌ها از فاکتورها و اسناد ساختاریافته
  • ساخت خطوط لوله استخراج متن یا تحلیل محتوا
  • تأیید محتوای سند در مجموعه‌های تست خودکار

رندر به تصاویر رستر

  • رندر صفحات به PNG با PngDevice
  • رندر صفحات به JPEG، BMP یا TIFF با JpegDevice، BmpDevice، TiffDevice
  • کنترل وضوح خروجی با کلاس Resolution
  • پردازش یک صفحه به‌صورت تک با {Device}.Process()

موارد استفاده معمول

  • تولید تصویرهای کوچک صفحه برای یک نمایشگر سند
  • تولید خروجی رستر آماده چاپ از PDFهای برداری
  • ساخت سرویس‌های تبدیل PDF به تصویر
  • ایجاد پایه‌های رگرسیون بصری برای PDFهای تولید شده

رمزنگاری و امنیت

  • سندها را با Document.Encrypt() با استفاده از رمز عبور کاربر و مالک رمزگذاری کنید
  • از طریق enum CryptoAlgorithm، RC4-40، RC4-128، AES-128 یا AES-256 را انتخاب کنید
  • مجوزهای اعطا شده را با نوع Permissions کنترل کنید
  • سندهای محافظت‌شده با رمز عبور را با Document.Decrypt() رمزگشایی کنید

موارد استفاده رایج

  • محافظت از گزارش‌های PDF محرمانه قبل از توزیع
  • اعمال محدودیت‌های چاپ/کپی/ویرایش بر اسناد به اشتراک‌گذاشته‌شده
  • افزودن حفاظت با رمز عبور به فاکتورها و صورت‌حساب‌های تولید شده
  • رمزنگاری دسته‌جمعی اسناد به عنوان بخشی از خط لوله سند

حاشیه‌نویسی‌ها و فرم‌های تعاملی

  • اضافه‌کردن، اصلاح و صاف‌کردن حاشیه‌نویسی‌ها از طریق Annotation و AnnotationCollection
  • مدیریت فیلدهای AcroForm از طریق کلاس Form
  • اضافه و حذف فیلدها با Form.Add()/Form.Delete()
  • صاف‌کردن فرم‌های تعاملی به محتوای ثابت با Form.Flatten()

موارد استفاده معمول

  • افزودن نظرات مرور و هایلایت‌ها به PDFهای مشترک
  • ساخت فرم‌های PDF قابل پر کردن برای جمع‌آوری داده‌ها
  • صاف‌سازی فرم‌های ارسال‌شده قبل از بایگانی
  • پیش‌پر کردن برنامه‌نویسی شده و قفل‌کردن فیلدهای فرم

یک PDF باز کنید، متن را استخراج کنید، و یک صفحه را رندر کنید

کتابخانه را به‌عنوان یک زیرپوشه CMake اضافه کنید، سپس یک سند را باز کنید، تعداد صفحات آن را شمارش کنید، متن را با TextAbsorber استخراج کنید و صفحه ۱ را با وضوح 150 DPI به صورت PNG رندر کنید.

add_subdirectory(aspose.pdf-foss-for-cpp)
target_link_libraries(your_app PRIVATE aspose_pdf_foss)
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/page_collection.hpp>
#include <aspose/pdf/text_absorber.hpp>
#include <aspose/pdf/png_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>
#include <iostream>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    std::cout << "Pages: " << doc.Pages().Count() << "\n";

    Aspose::Pdf::Text::TextAbsorber absorber;
    absorber.Visit(doc);
    std::cout << absorber.Text() << "\n";

    Aspose::Pdf::Devices::PngDevice png(Aspose::Pdf::Devices::Resolution(150));
    std::ofstream out("page1.png", std::ios::binary);
    png.Process(doc.Pages()[1], out);
}

رمزنگاری یک سند با AES-256

یک سند را باز کنید و آن را با رمز عبور کاربر و مالک، با استفاده از رمزنگاری AES-256، محافظت کنید.

#include <aspose/pdf/document.hpp>
int main() {
    Aspose::Pdf::Document doc("input.pdf");
    doc.Encrypt("user-password", "owner-password",
                Aspose::Pdf::Permissions(),
                Aspose::Pdf::CryptoAlgorithm::AESx256);
    doc.Save("encrypted.pdf");
}

خواندن و به‌روزرسانی فراداده سند

خواندن ورودی‌های موجود /Info و به‌روزرسانی عنوان سند از طریق DocumentInfo.

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/document_info.hpp>
#include <iostream>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    auto& info = doc.Info();
    std::cout << "Title: " << info.Title() << "\n";
    std::cout << "Author: " << info.Author() << "\n";

    doc.SetTitle("Updated Report Title");
    doc.Save("output.pdf");
}

سوالات متداول

مدل مجوزدهی برای Aspose.PDF FOSS for C++ چیست؟

این تحت مجوز MIT است و برای استفاده در محصولات تجاری و غیرتجاری رایگان است، بدون کلید فعال‌سازی یا محدودیت‌های فراخوانی API.

کدام نسخه‌های کامپایلر و CMake مورد نیاز هستند؟

یک کامپایلر C++20 (clang 16+، gcc 13+، یا MSVC 2022 17.5+) و CMake 3.22 یا بالاتر. Python 3 فقط در زمان ساخت مورد نیاز است.

آیا کتابخانه دارای هرگونه وابستگی در زمان اجرا است؟

نه. این فقط به کتابخانه استاندارد C++ لینک می‌شود — در زمان اجرا نیازی به هیچ وابستگی شخص ثالثی برای PDF، تصویر یا فشرده‌سازی نیست.

کدام فرمت‌ها را می‌تواند بخواند و صادر کند؟

این برنامه اسناد PDF بومی را می‌خواند و ذخیره می‌کند و صفحات رندر شده را به فرمت‌های Bmp، Jpeg و Tiff، به‌علاوه متن ساده، صادر می‌نماید. محتویات SVG می‌توانند وارد شوند.

چگونه یک سند PDF را رمزنگاری کنم؟

Document.Encrypt() را با یک رمز عبور کاربر، یک رمز عبور مالک و یک CryptoAlgorithm (RC4x40، RC4x128، AESx128 یا AESx256) فراخوانی کنید.

آیا محدودیت‌های شناخته‌شده‌ای در نسخهٔ فعلی وجود دارد؟

بله — چند کمک‌کنندهٔ بررسی نوع XmpValue (IsDateTime، IsField و مشابه) به‌صورت استاب هستند که همیشه false برمی‌گردانند؛ به جای آن از IsString/IsInteger/IsDouble/IsArray استفاده کنید.

  

منابع پشتیبانی و آموزش

 فارسی