Giới thiệu

Aspose.PDF FOSS cho C++ là một thư viện mã nguồn mở mới dành cho việc làm việc với tài liệu PDF từ mã C++20. Nó được phát hành dưới giấy phép MIT và không có bất kỳ phụ thuộc thời gian chạy nào ngoài thư viện chuẩn C++ — các bộ mã hoá BMP, JPEG và TIFF, bộ raster hoá trang, và bộ phân tích PDF được triển khai nội bộ, vì vậy không có liên kết tới một động cơ PDF thương mại, bộ mã hoá ảnh bên ngoài, hay thư viện mật mã của bên thứ ba.

Thư viện được tổ chức xung quanh lớp Aspose::Pdf::Document, lớp này tải một PDF từ đường dẫn tệp và cung cấp nội dung của nó thông qua Document.Pages(), một PageCollection của các đối tượng Page riêng lẻ. Từ đó, API bao gồm việc trích xuất văn bản, raster hoá trang, mã hoá tài liệu, chú thích và các trường AcroForm — các thao tác cần thiết để đọc, kiểm tra và chỉnh sửa các tệp PDF hiện có, hoặc tạo mới từ đầu.

Bản phát hành này dành cho các nhà phát triển cần xử lý PDF trong cơ sở mã C++ mà không phải thêm giấy phép thương mại hay chuỗi phụ thuộc của bên thứ ba: các pipeline tài liệu, dịch vụ trích xuất nội dung, công cụ chuyển đổi PDF sang hình ảnh, và các ứng dụng cần mã hoá hoặc đọc lại dữ liệu biểu mẫu như một phần của quy trình xây dựng lớn hơn.


Những gì có trong gói

Tải tài liệu và Truy cập Trang

Mở một PDF hiện có chỉ cần một lời gọi constructor duy nhất. Document phân tích tệp và cung cấp các trang của nó thông qua Pages(), phương thức này trả về một PageCollection hỗ trợ chỉ mục bắt đầu từ 1, Count(), và các thao tác Add()/Insert()/Delete() để tái cấu trúc thứ tự trang.

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

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

    auto page = doc.Pages()[1];
    std::cout << "First page number: " << page.Number() << "\n";
}

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

Aspose::Pdf::Text::TextAbsorber duyệt một Document hoặc một Page đơn lẻ và thu thập nội dung văn bản mà nó tìm thấy. Gọi Visit() với một tài liệu hoặc một trang, sau đó đọc kết quả bằng Text(). HasErrors() báo cáo liệu absorber có gặp nội dung không thể xử lý hay không.

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

int main() {
    Aspose::Pdf::Document doc("input.pdf");

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

    if (absorber.HasErrors()) {
        std::cerr << "Some content could not be extracted\n";
    }
}

Kết xuất thành Hình ảnh Raster

Các trang được render ra BMP, JPEG hoặc TIFF thông qua các lớp BmpDevice, JpegDeviceTiffDevice. Mỗi thiết bị được khởi tạo với một Resolution và cung cấp phương thức Process(page, output) để ghi hình ảnh đã render vào một luồng output.

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/bmp_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>

int main() {
    Aspose::Pdf::Document doc("input.pdf");

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

Mã hoá

Document.Encrypt() bảo vệ một tài liệu bằng mật khẩu người dùng, mật khẩu chủ sở hữu, giá trị quyền và lựa chọn CryptoAlgorithm. Enum này bao gồm RC4-40 (RC4x40), RC4-128 (RC4x128), AES-128 (AESx128), và AES-256 (AESx256). Document.Decrypt() thực hiện ngược lại thao tác, và IsEncrypted() báo cáo liệu tài liệu hiện đang được mã hoá hay không.

#include <aspose/pdf/document.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    doc.Encrypt("user-password", "owner-password",
                Aspose::Pdf::Permissions::PrintDocument,
                Aspose::Pdf::CryptoAlgorithm::AESx256);
    doc.Save("encrypted.pdf");
}

Chú thích

Mỗi Page cung cấp một AnnotationCollection thông qua Annotations(). Một TextAnnotation được tạo dựa trên tài liệu sở hữu, được định vị bằng một Rectangle, và được thêm vào bộ sưu tập của trang bằng Add().

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/annotations/text_annotation.hpp>
#include <aspose/pdf/rectangle.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");

    Aspose::Pdf::Annotations::TextAnnotation note(doc);
    note.Rect(Aspose::Pdf::Rectangle(100.0, 700.0, 200.0, 720.0, false));
    note.Contents("Reviewed - see section 2");

    doc.Pages()[1].Annotations().Add(note);
    doc.Save("annotated.pdf");
}

Trường AcroForm

Document.Form() trả về Form của tài liệu, đối tượng này cung cấp các trường hiện có thông qua Fields() dưới dạng một std::vector<Field*>. Mỗi Field báo cáo tên và giá trị hiện tại của nó qua PartialName()Value(), và Form.Flatten() ghép mọi hiển thị của trường vào nội dung trang, loại bỏ tính tương tác.

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

int main() {
    Aspose::Pdf::Document doc("form.pdf");
    auto& form = doc.Form();

    std::cout << "Field count: " << form.Count() << "\n";
    for (auto* field : form.Fields()) {
        std::cout << field->PartialName() << " = " << field->Value() << "\n";
    }

    form.Flatten();
    doc.Save("flattened.pdf");
}

Bắt đầu nhanh

Thêm thư viện như một thư mục con của CMake và liên kết với mục tiêu aspose_pdf_foss:

add_subdirectory(aspose.pdf-foss-for-cpp)
target_link_libraries(your_app PRIVATE aspose_pdf_foss)

Mở một tài liệu, in ra số trang của nó, trích xuất văn bản, và render trang đầu tiên thành tệp BMP:

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_absorber.hpp>
#include <aspose/pdf/bmp_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::BmpDevice bmp(Aspose::Pdf::Devices::Resolution(150));
    std::ofstream out("page1.bmp", std::ios::binary);
    bmp.Process(doc.Pages()[1], out);
}

Định dạng được hỗ trợ

Định dạngPhần mở rộngĐọcGhi
BMP.bmp
JPEG.jpg
TIFF.tiff
Text.txt
SVG.svg

BMP, JPEG, và TIFF là các đầu ra render trang được tạo ra bởi các lớp thiết bị tương ứng. Văn bản được trích xuất từ PDF bằng TextAbsorber. SVG được nhập dưới dạng nội dung vector thông qua đường tải SVG của thư viện.


Mã nguồn mở & Giấy phép

Aspose.PDF FOSS cho C++ được phân phối dưới giấy phép MIT, với mã nguồn đầy đủ có sẵn tại github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Cpp. Giấy phép cho phép sử dụng thương mại, sửa đổi và phân phối lại mà không cần thỏa thuận riêng.


Bắt đầu

Tài nguyên liên quan