Câu hỏi thường gặp

Câu hỏi thường gặp

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

Aspose.PDF FOSS for C++ được cấp phép theo MIT. Nó 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ần khóa kích hoạt, không có giới hạn cuộc gọi API, và không yêu cầu thỏa thuận thương mại.

Làm thế nào để tôi thêm Aspose.PDF FOSS for C++ vào dự án CMake?

Sử dụng bản vendor hoặc clone kho vào cây dự án của bạn, thêm nó như một thư mục con, và liên kết mục tiêu thư viện tĩnh:

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

Yêu cầu phiên bản trình biên dịch và CMake nào?

Một trình biên dịch C++20 — clang 16+, gcc 13+, hoặc MSVC 2022 17.5+ — và CMake 3.22 trở lên. Quá trình biên dịch cũng chỉ yêu cầu Python 3 tại thời điểm build, để tạo ra các đường viền phông chữ Standard-14 được đóng gói.

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

No. Aspose.PDF FOSS cho C++ chỉ liên kết với thư viện chuẩn C++ — không cần phụ thuộc của bên thứ ba cho PDF, hình ảnh hoặc nén ở thời gian chạy.

Các định dạng nào Aspose.PDF FOSS cho C++ có thể đọc và xuất?

Nó mở và lưu các tài liệu PDF gốc. Các trang đã được render có thể được xuất sang Bmp, Jpeg và Tiff thông qua BmpDevice, JpegDevice và TiffDevice, và sang văn bản thuần qua TextDevice. Nội dung SVG có thể được nhập vào tài liệu qua SvgLoadOptions.

Làm thế nào để mở một PDF hiện có và kiểm tra số trang của nó?

#include <aspose/pdf/document.hpp>

Aspose::Pdf::Document doc("input.pdf");
std::size_t pages = doc.Pages().Count();

Làm thế nào để trích xuất văn bản từ một tài liệu PDF?

Sử dụng TextAbsorber, truy cập tài liệu, sau đó đọc văn bản đã thu thập:

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

Aspose::Pdf::Document doc("input.pdf");
Aspose::Pdf::Text::TextAbsorber absorber;
absorber.Visit(doc);
std::string text = absorber.Text();

Làm thế nào để render một trang PDF thành hình ảnh?

Sử dụng một lớp thiết bị như PngDevice với mục tiêu Resolution, sau đó xử lý một trang duy nhất tới luồng đầu ra:

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

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

Làm thế nào để tôi mã hóa một 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, một giá trị Permissions, và một CryptoAlgorithm:

#include <aspose/pdf/document.hpp>

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

RC4x40, RC4x128, AESx128 và AESx256 đều có sẵn thông qua enum CryptoAlgorithm. Document.Decrypt() loại bỏ việc mã hóa khỏi một tài liệu đã mở.

Làm thế nào để tôi đọc hoặc điền các giá trị trường AcroForm?

Lặp lại Form.Fields() từ tài liệu và đọc hoặc đặt giá trị của mỗi trường bằng tên một phần của nó:

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/forms/form.hpp>

Aspose::Pdf::Document doc("application_form.pdf");
auto& form = doc.Form();
for (auto* field : form.Fields()) {
    if (field->PartialName() == "applicant_name") {
        field->Value("Jane Doe");
    }
}
doc.Save("application_filled.pdf");

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

Có. XmpValue — kiểu giá trị được sử dụng cho các mục metadata XMP trả về từ Document.Metadata() — cung cấp các hàm trợ giúp kiểm tra kiểu IsDateTime(), IsField(), IsNamedValue(), IsRaw(), IsNamedValues() và IsStructure() hiện đang là stub và luôn trả về false. Mã có nhánh dựa trên các kiểm tra này không thể phân biệt các loại giá trị XMP đó. Hãy sử dụng các kiểm tra đã được triển khai thay thế — IsString(), IsInteger(), IsDouble(), IsArray() — hoặc gọi trực tiếp accessor tương ứng (ToStringValue(), ToInteger(), ToDouble(), ToArray()) khi loại giá trị đã được biết từ ngữ cảnh. Một số ít các kiểu nội bộ cấp thấp cũng chứa các constructor stub không được sử dụng trong mã xử lý tài liệu thông thường.

Mã nguồn và trình theo dõi lỗi ở đâu?

Mã nguồn và trình theo dõi lỗi có sẵn tại https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Cpp.

Xem thêm

 Tiếng Việt