1. Sản Phẩm
  2.   Aspose.PDF
  3.   Aspose.PDF FOSS for C++

Aspose.PDF FOSS cho C++

Thư viện C++ mã nguồn mở để tạo, chỉnh sửa, render và bảo mật tài liệu PDF mà không có bất kỳ phụ thuộc thời gian chạy nào.

Aspose.PDF FOSS — Thư viện PDF mã nguồn mở C++

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.

Tải Tài Liệu và Quản Lý Trang

  • Mở các tệp PDF hiện có và lưu các thay đổi bằng Document
  • Truy cập và lặp qua các trang thông qua Document.Pages() (PageCollection)
  • Thêm, chèn và xóa các trang bằng PageCollection.Add()/Insert()/Delete()
  • Đọc và thiết lập siêu dữ liệu tài liệu thông qua DocumentInfo (Document.Info())
  • Tối ưu kích thước tài liệu bằng Document.Optimize()/OptimizeResources()

Các trường hợp sử dụng điển hình

  • Xây dựng các pipeline tạo PDF cho báo cáo và hoá đơn
  • Hợp nhất, tách và tái cấu trúc các tài liệu PDF hiện có
  • Kiểm tra và cập nhật siêu dữ liệu tài liệu một cách lập trình
  • Giảm kích thước tệp PDF trước khi lưu trữ hoặc phân phối

Trích xuất văn bản

  • Trích xuất văn bản thuần từ toàn bộ tài liệu bằng Aspose::Pdf::Text::TextAbsorber
  • Truy cập một trang duy nhất hoặc toàn bộ tài liệu qua TextAbsorber.Visit()
  • Lấy văn bản đã trích xuất thông qua TextAbsorber.Text()
  • Xác định các đoạn văn bản riêng lẻ bằng TextFragmentAbsorber.TextFragments()

Các trường hợp sử dụng điển hình

  • Lập chỉ mục nội dung PDF để tìm kiếm
  • Trích xuất dữ liệu từ hóa đơn và tài liệu có cấu trúc
  • Xây dựng các pipeline khai thác văn bản hoặc phân tích nội dung
  • Xác minh nội dung tài liệu trong các bộ kiểm thử tự động

Kết xuất thành hình ảnh raster

  • Kết xuất các trang thành PNG bằng PngDevice
  • Kết xuất các trang thành JPEG, BMP hoặc TIFF bằng JpegDevice, BmpDevice, TiffDevice
  • Kiểm soát độ phân giải đầu ra bằng lớp Resolution
  • Xử lý một trang duy nhất qua {Device}.Process()

Các trường hợp sử dụng điển hình

  • Tạo các ảnh thu nhỏ trang cho trình xem tài liệu
  • Tạo ra đầu ra raster sẵn sàng in từ các PDF vector
  • Xây dựng dịch vụ chuyển đổi PDF sang hình ảnh
  • Tạo các nền tảng kiểm tra hồi quy trực quan cho các PDF đã tạo

Mã hoá và Bảo mật

  • Mã hóa tài liệu bằng Document.Encrypt() sử dụng mật khẩu người dùng và mật khẩu chủ sở hữu
  • Chọn RC4-40, RC4-128, AES-128 hoặc AES-256 qua enum CryptoAlgorithm
  • Kiểm soát các quyền được cấp bằng kiểu Permissions
  • Giải mã tài liệu được bảo vệ bằng mật khẩu bằng Document.Decrypt()

Các trường hợp sử dụng điển hình

  • Bảo vệ các báo cáo PDF bí mật trước khi phân phối
  • Thực thi các hạn chế in/ sao chép/ chỉnh sửa trên tài liệu được chia sẻ
  • Thêm bảo vệ bằng mật khẩu cho các hoá đơn và báo cáo tài chính được tạo ra
  • Mã hoá hàng loạt tài liệu như một phần của quy trình tài liệu

Ghi chú và Biểu mẫu tương tác

  • Thêm, sửa đổi và làm phẳng các chú thích thông qua Annotation và AnnotationCollection
  • Quản lý các trường AcroForm thông qua lớp Form
  • Thêm và xóa các trường bằng Form.Add()/Form.Delete()
  • Làm phẳng các biểu mẫu tương tác thành nội dung tĩnh bằng Form.Flatten()

Các trường hợp sử dụng điển hình

  • Thêm nhận xét và đánh dấu vào các PDF đã chia sẻ
  • Tạo các biểu mẫu PDF có thể điền để thu thập dữ liệu
  • Làm phẳng các biểu mẫu đã gửi trước khi lưu trữ
  • Tự động điền trước và khóa các trường biểu mẫu

Mở PDF, Trích xuất Văn bản và Kết xuất Trang

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ã hoá tài liệu bằng AES-256

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 và Cập nhật siêu dữ liệu tài liệu

Đọ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");
}

Câu Hỏi Thường Gặp

Mô hình cấp phép cho Aspose.PDF FOSS for C++ là gì?

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.

Phiên bản trình biên dịch và CMake nào được yêu cầu?

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.

Thư viện có bất kỳ phụ thuộc thời gian chạy nào không?

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ó thể đọc và xuất những định dạng nào?

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.

Làm thế nào để tôi mã hóa tài liệu PDF?

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).

Có bất kỳ hạn chế nào đã biết trong phiên bản hiện tại không?

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ế.

  

Tài Nguyên Hỗ Trợ và Học Tập

 Tiếng Việt