Zarządzanie obiektami atramentu w prezentacji w Java

Wprowadzenie

PowerPoint udostępnia funkcję atramentu, która pozwala rysować dowolne pociągnięcia. Atrament można wykorzystać do podświetlania innych obiektów, pokazywania połączeń i procesów oraz zwracania uwagi na konkretne elementy na slajdzie.

Aspose.Slides dostarcza typy potrzebne do pracy z obiektami atramentu. Na przykład interfejs IInk reprezentuje obiekt atramentu na slajdzie.

Różnice między zwykłymi obiektami a obiektami atramentu

Obiekty na slajdzie PowerPointa są zazwyczaj reprezentowane przez obiekty kształtu. W najprostszym wydaniu kształt jest kontenerem definiującym obszar samego obiektu (jego ramkę) oraz właściwości takie jak rozmiar kontenera, kształt i tło. Aby uzyskać więcej informacji, zobacz Format układu kształtu.

Jednak gdy PowerPoint obsługuje obiekt atramentu, ignoruje wszystkie właściwości ramki obiektu (kontenera) oprócz jego rozmiaru. Rozmiar obszaru kontenera jest określany przez standardowe metody IShape.getWidth i IShape.getHeight :

ink_powerpoint1

Ślady atramentu

Ślad atramentu jest podstawowym elementem służącym do rejestrowania trajektorii pióra, gdy użytkownik pisze cyfrowym atramentem. Ślad przechowuje sekwencję połączonych punktów.

Najprostszą formą kodowania jest określenie współrzędnych X i Y każdego punktu próbki. Gdy wszystkie połączone punkty zostaną wyrenderowane, powstaje obrazek podobny do tego:

ink_powerpoint2

Właściwości pędzla do rysowania

Pędzel służy do rysowania linii łączących punkty śladu atramentu. Pędzel posiada własny kolor i rozmiar, które są reprezentowane przez metody IInkBrush.getColor i IInkBrush.getSize .

Ustaw kolor pędzla atramentu

Ten kod w języku Java pokazuje, jak ustawić kolor pędzla atramentu:

import com.aspose.slides.*;
import java.awt.Color;

Presentation presentation = new Presentation("pres.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IInk ink = (IInk) slide.getShapes().get_Item(0);
    IInkBrush brush = ink.getTraces()[0].getBrush();
    brush.setColor(Color.RED);
} finally {
    presentation.dispose();
}

Ustaw rozmiar pędzla atramentu

Ten kod w języku Java pokazuje, jak ustawić rozmiar pędzla atramentu:

import com.aspose.slides.*;
import java.awt.Dimension;

Presentation presentation = new Presentation("pres.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IInk ink = (IInk) slide.getShapes().get_Item(0);
    IInkBrush brush = ink.getTraces()[0].getBrush();
    Dimension brushSize = new Dimension(5, 10);
    brush.setSize(brushSize);
} finally {
    presentation.dispose();
}

Zazwyczaj szerokość i wysokość pędzla nie są równe, dlatego PowerPoint nie wyświetla rozmiaru pędzla (odpowiednia sekcja danych jest przyciemniona). Gdy szerokość i wysokość pędzla są równe, PowerPoint wyświetla jego rozmiar w ten sposób:

ink_powerpoint3

Dla przejrzystości zwiększmy wysokość obiektu atramentu i przyjrzyjmy się istotnym wymiarom:

ink_powerpoint4

Kontener (ramka) nie uwzględnia rozmiaru pędzli — zawsze zakłada, że grubość linii wynosi zero (zobacz poprzedni obraz).

Zatem, aby określić widoczny obszar całego obiektu atramentu, należy wziąć pod uwagę rozmiar pędzla jego śladów. W tym przypadku docelowy obiekt (ślad odręcznego tekstu) został skalowany do rozmiaru kontenera (ramki). Gdy rozmiar kontenera się zmienia, rozmiar pędzla pozostaje stały i odwrotnie.

ink_powerpoint5

PowerPoint stosuje podobne zachowanie dla obiektów tekstowych:

ink_powerpoint6

Kontrola wyglądu atramentu podczas eksportu i renderowania

Aspose.Slides udostępnia interfejs IInkOptions , który umożliwia kontrolowanie wyglądu obiektów atramentu w wyjściu eksportowanym lub renderowanym. Możesz używać jego właściwości, aby całkowicie ukryć atrament lub zmienić sposób interpretacji operacji maski pędzla atramentu.

Opcje atramentu są dostępne poprzez opcje eksportu lub renderowania dla kilku typów wyjścia:

Wyjście Właściwość opcji atramentu
PDF PdfOptions.getInkOptions
HTML HtmlOptions.getInkOptions
SVG SVGOptions.getInkOptions
TIFF TiffOptions.getInkOptions
Slide image RenderingOptions.getInkOptions

Poniższe metody IInkOptions udostępniają te same dwa ustawienia:

Ukryj obiekty atramentu w wyjściu PDF

Domyślnie obiekty atramentu pozostają widoczne podczas eksportu. Aby uzyskać czysty wynik bez odręcznych adnotacji lub innej treści atramentowej, wywołaj IInkOptions.setHideInk z wartością true.

Poniższy przykład w języku Java eksportuje prezentację do PDF, ukrywając wszystkie obiekty atramentu:

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    PdfOptions pdfOptions = new PdfOptions();
    pdfOptions.getInkOptions().setHideInk(true);

    presentation.save("presentation_without_ink.pdf", SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

Ukryj obiekty atramentu przy renderowaniu slajdu jako obrazu

Aby ukryć obiekty atramentu przy renderowaniu slajdów jako obrazy bitmapowe, skonfiguruj RenderingOptions.getInkOptions i przekaż opcje renderowania do ISlide.getImage.

Poniższy przykład w języku Java renderuje pierwszy slajd jako obraz PNG bez obiektów atramentu:

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    RenderingOptions renderingOptions = new RenderingOptions();
    renderingOptions.getInkOptions().setHideInk(true);

    ISlide slide = presentation.getSlides().get_Item(0);
    IImage image = slide.getImage(renderingOptions);
    try {
        image.save("slide_without_ink.png", ImageFormat.Png);
    } finally {
        image.dispose();
    }
} finally {
    presentation.dispose();
}

Kontrola renderowania maski atramentu

Ustawienie IInkOptions.getInterpretMaskOpAsOpacity kontroluje, jak operacje maski są interpretowane przy renderowaniu pędzli atramentu. Domyślna wartość to true, co oznacza użycie przezroczystości. Aby zamiast tego użyć operacji ROP, wywołaj IInkOptions.setInterpretMaskOpAsOpacity z wartością false.

Poniższy przykład w języku Java eksportuje slajd do SVG i używa renderowania opartego na ROP dla operacji maski atramentu:

import com.aspose.slides.*;
import java.io.FileOutputStream;
import java.io.IOException;

Presentation presentation = new Presentation("presentation.pptx");
try {
    SVGOptions svgOptions = new SVGOptions();
    svgOptions.getInkOptions().setInterpretMaskOpAsOpacity(false);

    FileOutputStream stream = new FileOutputStream("slide.svg");
    ISlide slide = presentation.getSlides().get_Item(0);
    slide.writeAsSvg(stream, svgOptions);
} finally {
    presentation.dispose();
}

To samo ustawienie można zastosować poprzez TiffOptions.getInkOptions przy eksporcie prezentacji lub renderowaniu slajdu do TIFF.

Wybierz, czy ukrywać czy zachowywać atrament

Gdy potrzebujesz czystej wersji oznaczonej prezentacji do dystrybucji bez znaczników recenzji, wywołaj IInkOptions.setHideInk z wartością true podczas eksportu.

Pozostaw IInkOptions.getHideInk przy domyślnej wartości false, gdy adnotacje atramentowe są częścią zamierzonej treści, np. komentarze recenzenckie, odręczne notatki, podkreślenia lub rysunki, które powinny pozostać widoczne w wyeksportowanym wyniku. Umożliwia to aplikacjom generowanie osobnych wersji recenzji i finalnej z tej samej prezentacji bez modyfikowania źródłowych obiektów atramentu.

FAQ

Czy mogę zmienić kolor lub rozmiar istniejącego pociągnięcia atramentowego?

Tak. Pobierz ślad z IInk.getTraces , a następnie zmień jego IInkTrace.getBrush. Wywołaj IInkBrush.setColor lub IInkBrush.setSize , aby zmienić pędzel.

Czy ukrywanie atramentu zmienia źródłową prezentację?

Nie. Wywołanie IInkOptions.setHideInk wpływa wyłącznie na wynik renderowania lub eksportu; nie usuwa ani nie modyfikuje obiektów atramentu w źródłowej prezentacji.

Które formaty eksportu obsługują opcje atramentu?

Możesz konfigurować opcje atramentu dla PDF, HTML, SVG, TIFF oraz bitmapowych obrazów slajdów poprzez odpowiednie opcje eksportu lub renderowania przedstawione powyżej.

Dalsza lektura