Zarządzaj obiektami atramentu w prezentacji na Androidzie

Wprowadzenie

PowerPoint zapewnia funkcję atramentu, która pozwala rysować dowolne pociągnięcia. Atrament może być używany do podświetlania innych obiektów, pokazywania połączeń i procesów oraz zwracania uwagi na określone elementy na slajdzie.

Aspose.Slides udostępnia 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 PowerPoint są zazwyczaj reprezentowane przez obiekty kształtu. W najprostszym ujęciu kształt jest kontenerem definiującym obszar samego obiektu (jego ramkę) wraz z właściwościami takimi 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 używanym do rejestrowania trajektorii pióra, gdy użytkownik pisze cyfrowym atramentem. Ślad przechowuje sekwencję połączonych punktów.

Najprostsza forma kodowania określa współrzędne X i Y każdego punktu próbki. Gdy wszystkie połączone punkty zostaną wyrenderowane, powstaje obraz podobny do tego:

ink_powerpoint2

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

Pędzel jest używany do rysowania linii łączących punkty śladu atramentu. Pędzel ma własny kolor i rozmiar, 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 android.graphics.Color;
import com.aspose.slides.*;

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 com.aspose.slides.android.SizeF;

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();
    SizeF brushSize = new SizeF(5, 10);
    brush.setSize(brushSize);
} finally {
    presentation.dispose();
}

Z reguły szerokość i wysokość pędzla nie są równe, więc PowerPoint nie wyświetla rozmiaru pędzla (odpowiednia sekcja danych jest przygaszona). Gdy szerokość i wysokość pędzla są równe, PowerPoint wyświetla jego rozmiar w ten sposób:

ink_powerpoint3

Dla jasności zwiększmy wysokość obiektu atramentu i przeanalizujmy ważne wymiary:

ink_powerpoint4

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

Dlatego, aby określić widoczny obszar całego obiektu atramentu, należy uwzględnić rozmiar pędzla jego śladów. Tutaj docelowy obiekt (ślad ręcznego tekstu) został przeskalowany 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 służący do kontrolowania, jak obiekty atramentu wyglądają 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ć czyste wyjście bez ręcznych adnotacji lub innej zawartości atramentu, 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 podczas renderowania slajdu jako obrazu

Aby ukryć obiekty atramentu podczas renderowania 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();
}

Kontroluj renderowanie maski atramentu

Ustawienie IInkOptions.getInterpretMaskOpAsOpacity kontroluje, jak operacje maski są interpretowane przy renderowaniu pędzli atramentu. Domyślna wartość to true, co używa nieprzezroczystoś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;

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

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

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

Wybierz, czy ukryć, czy zachować 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 na domyślnej wartości false, gdy adnotacje atramentowe są częścią zamierzonej treści, takiej jak komentarze recenzji, ręczne notatki, podświetlenia lub rysunki, które powinny pozostać widoczne w wyjściu eksportowanym. Umożliwia to aplikacjom generowanie oddzielnych wersji recenzji i finalnych z tej samej prezentacji bez modyfikowania źródłowych obiektów atramentu.

FAQ

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

Tak. Pobierz ślad przy użyciu IInk.getTraces, 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 tylko na wynik renderowany lub eksportowany; 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 obrazów bitmapowych slajdów poprzez odpowiednie opcje eksportu lub renderowania pokazane powyżej.

Dalsza lektura