Aspose.PDF FOSS for C++ là một thư viện nguồn mở, hiện đại sử dụng C++20 để làm việc với tài liệu PDF — mở và lưu PDF, trích xuất văn bản, raster hoá các trang sang định dạng hình ảnh, và xây dựng tài liệu từ đầu (văn bản, hình ảnh, bảng, đồ họa vector, chú thích, trường AcroForm và dấu trang). Thư viện chỉ liên kết với thư viện chuẩn C++: mọi primitive, bao gồm các codec TIFF, JPEG và PNG cũng như bộ raster hoá trang, đều được triển khai từ đầu mà không phụ thuộc vào bất kỳ stack PDF thương mại nào.
Lõi API được xây dựng quanh lớp Document và bộ sưu tập Pages(). Văn bản được trích xuất bằng Aspose::Pdf::Text::TextAbsorber, các trang được render thành hình ảnh raster thông qua các lớp thiết bị như PngDevice, JpegDevice, BmpDevice và TiffDevice, và tài liệu có thể được bảo mật bằng Document.Encrypt() sử dụng các thuật toán RC4-40, RC4-128, AES-128 hoặc AES-256 được chọn qua enum CryptoAlgorithm. Các trường biểu mẫu tương tác được quản lý qua lớp Form, và các chú thích — ghi chú văn bản, tô sáng, hình dạng và dấu — được thêm và chỉnh sửa qua hệ thống lớp kế thừa Annotation.
Aspose.PDF FOSS for C++ được phát hành dưới giấy phép MIT mà không có phí chạy thời gian thực hay hạn chế sử dụng. Nó được biên dịch dưới dạng thư viện tĩnh qua CMake — thêm nó như một thư mục con trong quá trình xây dựng của bạn hoặc cài đặt độc lập — và yêu cầu một trình biên dịch C++20 mà không có phụ thuộc runtime nào khác. Đối với các tính năng doanh nghiệp và hỗ trợ, xem Aspose.PDF for C++ — Enterprise Product.
DocumentDocument.Pages() (PageCollection)PageCollection.Add()/Insert()/Delete()DocumentInfo (Document.Info())Document.Optimize()/OptimizeResources()Aspose::Pdf::Text::TextAbsorberTextAbsorber.Visit()TextAbsorber.Text()TextFragmentAbsorber.TextFragments()PngDeviceJpegDevice, BmpDevice, TiffDeviceResolution{Device}.Process()Document.Encrypt() sử dụng mật khẩu người dùng và mật khẩu chủ sở hữuCryptoAlgorithmPermissionsDocument.Decrypt()Annotation và AnnotationCollectionFormForm.Add()/Form.Delete()Form.Flatten()Thêm thư viện như một thư mục con CMake, sau đó mở tài liệu, đếm số trang, trích xuất văn bản bằng TextAbsorber, và render trang 1 thành PNG với độ phân giải 150 DPI.
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);
}
Mở một tài liệu và bảo vệ nó bằng mật khẩu người dùng và mật khẩu chủ sở hữu sử dụng mã hóa 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");
}
Đọc các mục /Info hiện có và cập nhật tiêu đề tài liệu thông qua 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");
}
Nó được cấp phép MIT và miễn phí sử dụng trong các sản phẩm thương mại và phi thương mại, không có khóa kích hoạt hoặc giới hạn cuộc gọi API.
Một trình biên dịch C++20 (clang 16+, gcc 13+, hoặc MSVC 2022 17.5+) và CMake 3.22 hoặc mới hơn. Python 3 chỉ cần thiết ở thời điểm biên dịch.
Không. Nó chỉ liên kết với thư viện chuẩn C++ — không cần bất kỳ phụ thuộc PDF, hình ảnh hoặc nén bên thứ ba nào tại thời gian chạy.
Nó đọc và lưu các tài liệu PDF gốc, và xuất các trang đã render sang Bmp, Jpeg và Tiff, cộng thêm văn bản thuần. Nội dung SVG có thể được nhập.
Gọi Document.Encrypt() với mật khẩu người dùng, mật khẩu chủ sở hữu và một CryptoAlgorithm (RC4x40, RC4x128, AESx128 hoặc AESx256).
Vâng — một vài hàm trợ giúp kiểm tra kiểu XmpValue (IsDateTime, IsField và các hàm tương tự) là các stub luôn trả về false; hãy sử dụng IsString/IsInteger/IsDouble/IsArray thay thế.