Часто задаваемые вопросы

Часто задаваемые вопросы

Какова модель лицензирования для Aspose.PDF FOSS for C++?

Aspose.PDF FOSS for C++ имеет лицензию MIT. Он бесплатен для использования в коммерческих и некоммерческих продуктах, без активационного ключа, ограничений вызовов API или необходимости коммерческого соглашения.

Как добавить Aspose.PDF FOSS for C++ в проект CMake?

Разместите репозиторий в вашем проекте (vendor) или клонируйте его в дерево проекта, добавьте его как поддиректорию и свяжите цель статической библиотеки:

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

Какие версии компилятора и CMake требуются?

Компилятор с поддержкой C++20 — clang 16+, gcc 13+ или MSVC 2022 17.5+ — и CMake 3.22 или новее. Сборка также требует Python 3 только во время сборки, чтобы сгенерировать включённые контуры шрифтов Standard-14.

Есть ли у библиотеки какие-либо зависимости во время выполнения?

Нет. Aspose.PDF FOSS для C++ связывается только со стандартной библиотекой C++ — никаких сторонних зависимостей от PDF, изображений или сжатия не требуется во время выполнения.

Какие форматы может Aspose.PDF FOSS для C++ читать и экспортировать?

Он открывает и сохраняет нативные PDF-документы. Отображённые страницы можно экспортировать в Bmp, Jpeg и Tiff с помощью BmpDevice, JpegDevice и TiffDevice, а в простой текст — через TextDevice. Содержимое SVG можно импортировать в документ через SvgLoadOptions.

Как открыть существующий PDF и проверить количество страниц?

#include <aspose/pdf/document.hpp>

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

Как извлечь текст из PDF-документа?

Используйте TextAbsorber, откройте документ, затем прочитайте собранный текст:

#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();

Как отобразить страницу PDF в изображении?

Используйте класс устройства, например PngDevice, с целевым Resolution, затем обработайте одну страницу в выходной поток:

#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);

Как зашифровать PDF-документ?

Вызовите Document.Encrypt() с пользовательским паролем, паролем владельца, значением Permissions и 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 и AESx256 доступны через перечисление CryptoAlgorithm. Document.Decrypt() удаляет шифрование из уже открытого документа.

Как прочитать или заполнить значения полей AcroForm?

Итерируйте Form.Fields() из документа и читайте или задавайте значение каждого поля по его частичному имени:

#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");

Есть ли известные ограничения в текущем выпуске?

Да. XmpValue — тип значения, используемый для записей XMP-метаданных, возвращаемых из Document.Metadata() — предоставляет вспомогательные функции проверки типа IsDateTime(), IsField(), IsNamedValue(), IsRaw(), IsNamedValues() и IsStructure(), которые в настоящее время являются заглушками и всегда возвращают false. Код, ветвящийся по этим проверкам, не может различать эти типы значений XMP. Вместо этого используйте реализованные проверки — IsString(), IsInteger(), IsDouble(), IsArray() — или вызывайте соответствующий аксессор (ToStringValue(), ToInteger(), ToDouble(), ToArray()) напрямую, когда тип значения уже известен из контекста. Небольшое количество низкоуровневых внутренних типов также содержит заглушки конструкторов, которые не задействованы в типичном коде обработки документов.

Где находятся исходный код и система отслеживания ошибок?

Исходный код и система отслеживания задач доступны по адресу https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Cpp.

См. также:

 Русский