Добавить водяной знак в PDF с использованием C++

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

Aspose.PDF for C++ позволяет добавлять водяные знаки в ваш PDF документ с использованием класса Artifact. Пожалуйста, ознакомьтесь с этой статьей, чтобы решить вашу задачу.

Водяной знак, созданный с помощью Adobe Acrobat, называется артефактом (как описано в разделе 14.8.2.2 Настоящее содержание и артефакты спецификации PDF). Для работы с артефактами Aspose.PDF имеет два класса: Artifact и ArtifactCollection.

Для получения всех артефактов на конкретной странице класс Page имеет свойство Artifacts. Этот раздел объясняет, как работать с артефактами в PDF-файлах.

Работа с артефактами

Класс Artifact содержит следующие свойства:

Artifact.Type – получает тип артефакта (поддерживает значения перечисления Artifact.ArtifactType, где значения включают Background, Layout, Page, Pagination и Undefined). Artifact.Subtype – получает подтип артефакта (поддерживает значения перечисления Artifact.ArtifactSubtype, где значения включают Background, Footer, Header, Undefined, Watermark).

Artifact.Contents – Получает коллекцию внутренних операторов артефакта. Поддерживаемый тип - System.Collections.ICollection. Artifact.Form – Получает XForm артефакта (если используется XForm). Артефакты водяных знаков, заголовков и нижних колонтитулов содержат XForm, который показывает все содержимое артефакта.

Artifact.Image – Получает изображение артефакта (если изображение присутствует, иначе null).Artifact.Text – Получает текст артефакта.
Artifact.Rectangle – Получает позицию артефакта на странице.
Artifact.Rotation – Получает вращение артефакта (в градусах, положительное значение указывает на вращение против часовой стрелки).
Artifact.Opacity – Получает непрозрачность артефакта. Возможные значения находятся в диапазоне 0…1, где 1 означает полностью непрозрачный.

Примеры программирования: Как добавить водяной знак в PDF файлы

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

void GettingWatermarks() {

    String _dataDir("C:\\Samples\\");
    String inputFileName("watermark.pdf");
    String outputFileName("watermark_out.pdf");

    auto document = MakeObject<Document>(_dataDir + inputFileName);

    auto artifact = MakeObject<WatermarkArtifact>();
    auto textState = MakeObject<TextState>();
    textState->set_FontSize(72);
    textState->set_ForegroundColor(Color::get_Blue());
    textState->set_Font(FontRepository::FindFont(u"Courier"));
    artifact->SetTextAndState(u"WATERMARK", textState);
    artifact->set_ArtifactHorizontalAlignment (HorizontalAlignment::Center);
    artifact->set_ArtifactVerticalAlignment (VerticalAlignment::Center);
    artifact->set_Rotation(45);
    artifact->set_Opacity(0.5);
    artifact->set_IsBackground(true);

    document->get_Pages()->idx_get(1)->get_Artifacts()->Add(artifact);

    document->Save(_dataDir + outputFileName);
}