PDF Липкие Аннотации с использованием C++

Добавить Аннотацию Водяного Знака

Аннотация водяного знака должна использоваться для представления графики, которая должна быть напечатана в фиксированном размере и положении на странице, независимо от размеров печатной страницы.

Вы можете добавить текст водяного знака, используя WatermarkAnnotation в определенной позиции страницы PDF. Непрозрачность водяного знака также может быть контролирована с использованием свойства opacity.

Пожалуйста, проверьте следующий фрагмент кода, чтобы добавить WatermarkAnnotation.

 using namespace System;
using namespace Aspose::Pdf;
using namespace Aspose::Pdf::Text;
using namespace Aspose::Pdf::Annotations;

void ExampleWatermarkAnnotation::AddWaterMarkAnnotation()
{
    String _dataDir("C:\\Samples\\");

    // Load the PDF file
    auto document = MakeObject<Document>(_dataDir + u"sample.pdf");
    auto page = document->get_Pages()->idx_get(1);

    //Create Annotation
    auto wa = MakeObject<WatermarkAnnotation>(page, MakeObject<Rectangle>(100, 500, 400, 600));

    //Add annotaiton into Annotation collection of Page
    page->get_Annotations()->Add(wa);

    //Create TextState for Font settings
    auto ts = MakeObject<TextState>();

    ts->set_ForegroundColor(Color::get_Blue());
    ts->set_Font(Aspose::Pdf::Text::FontRepository::FindFont(u"Times New Roman"));
    ts->set_FontSize(32);

    //Set opacity level of Annotaiton Text
    wa->set_Opacity(0.5);

    //Add Text to Annotation
    wa->SetTextAndState(MakeArray<String>({ u"Aspose.PDF", u"Watermark", u"Demo" }), ts);

    //Save the Document
    document->Save(_dataDir + u"sample_watermark.pdf");
}

Получить аннотацию водяного знака

Пожалуйста, попробуйте использовать следующий фрагмент кода, чтобы получить аннотацию водяного знака из PDF-документа.

void ExampleWatermarkAnnotation::GetWatermarkAnnotation() {

    String _dataDir("C:\\Samples\\");

    // Загрузить PDF файл
    auto document = MakeObject<Document>(_dataDir + u"sample_watermark.pdf");
    auto page = document->get_Pages()->idx_get(1);

    // Фильтрация аннотаций с использованием AnnotationSelector
    auto annotationSelector = MakeObject<AnnotationSelector>(
        MakeObject<WatermarkAnnotation>(page, Rectangle::get_Trivial()));
    page->Accept(annotationSelector);
    auto watermarkAnnotations = annotationSelector->get_Selected();

    // вывести результаты
    for (auto wa : watermarkAnnotations) {
        Console::WriteLine(wa->get_Rect());
    }
}

Удалить аннотацию водяного знака

Пожалуйста, попробуйте использовать следующий фрагмент кода, чтобы удалить аннотацию водяного знака из PDF-документа.

void ExampleWatermarkAnnotation::DeleteWatermarkAnnotation() {

    String _dataDir("C:\\Samples\\");

    // Загрузить PDF файл
    auto document = MakeObject<Document>(_dataDir + u"sample_watermark.pdf");
    auto page = document->get_Pages()->idx_get(1);

    // Фильтрация аннотаций с использованием AnnotationSelector
    auto annotationSelector = MakeObject<AnnotationSelector>(
        MakeObject<WatermarkAnnotation>(page, Rectangle::get_Trivial()));
    page->Accept(annotationSelector);
    auto watermarkAnnotations = annotationSelector->get_Selected();

    // удалить аннотации
    for (auto wa : watermarkAnnotations) {
        page->get_Annotations()->Delete(wa);
    }
    document->Save(_dataDir + u"sample_watermark_del.pdf");
}