Dodawanie znaków wodnych do prezentacji w C++

Wstęp

Znak wodny w prezentacji to znacznik tekstowy lub graficzny używany na slajdzie lub we wszystkich slajdach prezentacji. Zazwyczaj znak wodny służy do wskazania, że prezentacja jest wersją roboczą (np. znak wodny „Draft”), zawiera informacje poufne (np. znak wodny „Confidential”), określenia, do której firmy należy (np. znak wodny „Company Name”), identyfikacji autora prezentacji itp. Znak wodny pomaga zapobiegać naruszeniom praw autorskich, wskazując, że prezentacja nie powinna być kopiowana. Znaki wodne są używane zarówno w formatach PowerPoint, jak i OpenOffice. W Aspose.Slides możesz dodać znak wodny do plików PowerPoint PPT, PPTX oraz OpenOffice ODP.

W Aspose.Slides, istnieje wiele sposobów tworzenia znaków wodnych w dokumentach PowerPoint lub OpenOffice oraz modyfikowania ich wyglądu i zachowania. Wspólnym elementem jest to, że aby dodać tekstowy znak wodny, należy używać interfejsu ITextFrame, a aby dodać graficzny znak wodny, używać klasy PictureFrame lub wypełnić kształt znaku wodnego obrazem. PictureFrame implementuje interfejs IShape, co pozwala korzystać ze wszystkich elastycznych ustawień obiektu kształtu. Ponieważ ITextFrame nie jest kształtem i jego ustawienia są ograniczone, jest on opakowany w obiekt IShape.

Znak wodny może być zastosowany na dwa sposoby: do pojedynczego slajdu lub do wszystkich slajdów prezentacji. Master slajdu jest używany do zastosowania znaku wodnego do wszystkich slajdów — znak wodny jest dodawany do Mastera slajdu, tam w pełni projektowany i stosowany do wszystkich slajdów bez wpływu na możliwość edycji znaku wodnego na poszczególnych slajdach.

Znak wodny jest zazwyczaj uważany za nieedytowalny przez innych użytkowników. Aby zapobiec edycji znaku wodnego (a dokładniej jego rodzica‑kształtu), Aspose.Slides udostępnia funkcję blokowania kształtu. Konkretny kształt może być zablokowany na zwykłym slajdzie lub na Masterze slajdu. Gdy kształt znaku wodnego jest zablokowany na Masterze slajdu, zostaje zablokowany na wszystkich slajdach prezentacji.

Możesz ustawić nazwę dla znaku wodnego, aby w przyszłości, gdy będziesz chciał go usunąć, móc odnaleźć go w kolekcji kształtów slajdu po nazwie.

Znak wodny możesz zaprojektować w dowolny sposób; jednak zazwyczaj występują wspólne cechy znaków wodnych, takie jak wyśrodkowanie, rotacja, położenie na wierzchu itp. Poniżej omówimy, jak je wykorzystać w przykładach.

Tekstowy znak wodny

Dodanie tekstowego znaku wodnego do slajdu

Aby dodać tekstowy znak wodny w PPT, PPTX lub ODP, najpierw możesz dodać kształt do slajdu, a następnie dodać do tego kształtu ramkę tekstową. Ramka tekstowa jest reprezentowana przez interfejs ITextFrame. Ten typ nie dziedziczy po IShape, który posiada szeroki zestaw właściwości do elastycznego pozycjonowania znaku wodnego. Dlatego obiekt ITextFrame jest opakowany w obiekt IAutoShape. Aby dodać tekst znaku wodnego do kształtu, użyj metody AddTextFrame jak pokazano poniżej.

auto watermarkText = u"CONFIDENTIAL";

auto presentation = MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto watermarkShape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 100, 100, 400, 40);
auto watermarkFrame = watermarkShape->AddTextFrame(watermarkText);

presentation->Dispose();

Dodanie tekstowego znaku wodnego do prezentacji

Jeśli chcesz dodać tekstowy znak wodny do całej prezentacji (czyli do wszystkich slajdów jednocześnie), dodaj go do MasterSlide. Reszta logiki jest taka sama, jak przy dodawaniu znaku wodnego do pojedynczego slajdu — utwórz obiekt IAutoShape i następnie dodaj do niego znak wodny za pomocą metody AddTextFrame.

auto watermarkText = u"CONFIDENTIAL";

auto presentation = MakeObject<Presentation>();
auto masterSlide = presentation->get_Master(0);

auto watermarkShape = masterSlide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 100, 100, 400, 40);
auto watermarkFrame = watermarkShape->AddTextFrame(watermarkText);

presentation->Dispose();

Ustawienie przezroczystości kształtu znaku wodnego

Domyślnie prostokątny kształt ma ustawione kolory wypełnienia i linii. Poniższe linie kodu sprawiają, że kształt jest przezroczysty.

watermarkShape->get_FillFormat()->set_FillType(FillType::NoFill);
watermarkShape->get_LineFormat()->get_FillFormat()->set_FillType(FillType::NoFill);

Ustawienie czcionki dla tekstowego znaku wodnego

Możesz zmienić czcionkę tekstowego znaku wodnego, jak pokazano poniżej.

auto textFormat = watermarkFrame->get_Paragraph(0)->get_ParagraphFormat()->get_DefaultPortionFormat();
textFormat->set_LatinFont(MakeObject<FontData>(u"Arial"));
textFormat->set_FontHeight(50);

Ustawienie koloru tekstu znaku wodnego

Aby ustawić kolor tekstu znaku wodnego, użyj tego kodu:

auto alpha = 150, red = 200, green = 200, blue = 200;

auto fillFormat = watermarkFrame->get_Paragraph(0)->get_ParagraphFormat()->get_DefaultPortionFormat()->get_FillFormat();
fillFormat->set_FillType(FillType::Solid);
fillFormat->get_SolidFillColor()->set_Color(Color::FromArgb(alpha, red, green, blue));

Wyśrodkowanie tekstowego znaku wodnego

Możliwe jest wyśrodkowanie znaku wodnego na slajdzie; w tym celu wykonaj następujące kroki:

auto slideSize = presentation->get_SlideSize()->get_Size();

auto watermarkWidth = 400;
auto watermarkHeight = 40;
auto watermarkX = (slideSize.get_Width() - watermarkWidth) / 2;
auto watermarkY = (slideSize.get_Height() - watermarkHeight) / 2;

auto watermarkShape = slide->get_Shapes()->AddAutoShape(
    ShapeType::Rectangle, watermarkX, watermarkY, watermarkWidth, watermarkHeight);

auto watermarkFrame = watermarkShape->AddTextFrame(watermarkText);

Poniższy obraz przedstawia ostateczny wynik.

The text watermark

Graficzny znak wodny

Dodanie graficznego znaku wodnego do prezentacji

Aby dodać graficzny znak wodny do slajdu prezentacji, możesz wykonać następujące czynności:

auto imageStream = File::ReadAllBytes(u"watermark.png");
auto image = presentation->get_Images()->AddImage(imageStream);

watermarkShape->get_FillFormat()->set_FillType(FillType::Picture);
watermarkShape->get_FillFormat()->get_PictureFillFormat()->get_Picture()->set_Image(image);
watermarkShape->get_FillFormat()->get_PictureFillFormat()->set_PictureFillMode(PictureFillMode::Stretch);

Zablokowanie znaku wodnego przed edycją

Jeśli konieczne jest zapobieżenie edycji znaku wodnego, użyj metody IAutoShape::get_AutoShapeLock na kształcie. Dzięki tej właściwości możesz chronić kształt przed zaznaczaniem, zmianą rozmiaru, przemieszczaniem, grupowaniem z innymi elementami, zablokowaniem tekstu przed edycją i wieloma innymi działaniami:

// Zablokuj kształt znaku wodnego przed modyfikacją
watermarkShape->get_AutoShapeLock()->set_SelectLocked(true);
watermarkShape->get_AutoShapeLock()->SizeLocked(true);
watermarkShape->get_AutoShapeLock()->TextLocked(true);
watermarkShape->get_AutoShapeLock()->PositionLocked(true);
watermarkShape->get_AutoShapeLock()->GroupingLocked(true);

Przeniesienie znaku wodnego na wierzch

W Aspose.Slides kolejność Z‑kształtów można ustawić za pomocą metody IShapeCollection::Reorder. Aby to zrobić, należy wywołać tę metodę z listy slajdów prezentacji, przekazując odwołanie do kształtu i jego numer kolejności. Dzięki temu można przenieść kształt na wierzch lub na spód slajdu. Funkcja ta jest szczególnie przydatna, gdy trzeba umieścić znak wodny przed zawartością prezentacji:

auto shapeCount = slide->get_Shapes()->get_Count();
slide->get_Shapes()->Reorder(shapeCount - 1, watermarkShape);

Ustawienie rotacji znaku wodnego

Poniżej znajduje się przykład kodu, który pokazuje, jak dostosować rotację znaku wodnego, aby był położony po przekątnej slajdu:

auto diagonalAngle = Math::Atan((slideSize.get_Height() / slideSize.get_Width())) * 180 / Math::PI;

watermarkShape->set_Rotation((float)diagonalAngle);

Ustawienie nazwy dla znaku wodnego

Aspose.Slides umożliwia ustawienie nazwy kształtu. Korzystając z nazwy kształtu, możesz w przyszłości odwołać się do niego, aby go zmodyfikować lub usunąć. Aby ustawić nazwę kształtu znaku wodnego, przypisz ją metodzie IAutoShape::set_Name:

watermarkShape->set_Name(u"watermark");

Usunięcie znaku wodnego

Aby usunąć kształt znaku wodnego, użyj metody IAutoShape::get_Name, aby znaleźć go w kolekcji kształtów slajdu. Następnie przekaż kształt znaku wodnego do metody IShapeCollection::Remove:

auto slideShapes = slide->get_Shapes()->ToArray();
for(auto shape : slideShapes)
{
    if (String::Compare(shape->get_Name(), u"watermark", StringComparison::Ordinal) == 0)
    {
        slide->get_Shapes()->Remove(watermarkShape);
    }
}

Przykład na żywo

Możesz wypróbować darmowe narzędzia Aspose.Slides Add Watermark i Remove Watermark dostępne online:

Online tools to add and remove watermarks

FAQ

Czym jest znak wodny i dlaczego powinienem go używać?

Znak wodny to nakładka tekstowa lub graficzna stosowana na slajdach, która pomaga chronić własność intelektualną, zwiększyć rozpoznawalność marki lub zapobiec nieautoryzowanemu użyciu prezentacji.

Czy mogę dodać znak wodny do wszystkich slajdów w prezentacji?

Tak, Aspose.Slides umożliwia programistyczne dodanie znaku wodnego do każdego slajdu w prezentacji. Możesz iterować po wszystkich slajdach i zastosować ustawienia znaku wodnego indywidualnie.

Jak mogę dostosować przezroczystość znaku wodnego?

Możesz dostosować przezroczystość znaku wodnego, modyfikując ustawienia wypełnienia (FillFormat) kształtu. Dzięki temu znak wodny będzie subtelny i nie będzie rozpraszał uwagi od treści slajdu.

Jakie formaty obrazów są obsługiwane dla znaków wodnych?

Aspose.Slides obsługuje różne formaty obrazów, takie jak PNG, JPEG, GIF, BMP, SVG i inne.

Czy mogę dostosować czcionkę i styl tekstowego znaku wodnego?

Tak, możesz wybrać dowolną czcionkę, rozmiar i styl, aby dopasować je do projektu prezentacji i utrzymać spójność marki.

Jak zmienić pozycję lub orientację znaku wodnego?

Możesz programowo zmienić pozycję i orientację znaku wodnego, modyfikując współrzędne, rozmiar oraz właściwość rotacji kształtu.