Správa inkových objektů prezentace v Javě

Úvod

PowerPoint poskytuje funkci ink, která umožňuje kreslit volně tvarované tahy. Ink lze použít k zvýraznění jiných objektů, zobrazení spojení a procesů a upoutání pozornosti na konkrétní položky na snímku.

Aspose.Slides poskytuje typy potřebné k práci s objekty ink. Například rozhraní IInk představuje objekt ink na snímku.

Rozdíly mezi běžnými objekty a objekty ink

Objekty na snímku PowerPointu jsou typicky reprezentovány objekty tvaru. V nejjednodušší podobě je tvar kontejner, který definuje oblast samotného objektu (jeho rámec) spolu s vlastnostmi, jako je velikost kontejneru, tvar a pozadí. Další informace najdete v Shape Layout Format.

Nicméně když PowerPoint zpracovává objekt ink, ignoruje všechny vlastnosti rámce objektu (kontejneru) s výjimkou jeho velikosti. Velikost oblasti kontejneru je určena standardními metodami IShape.getWidth a IShape.getHeight:

ink_powerpoint1

Inkové stopy

Inková stopa je základní prvek používaný k zaznamenání trajektorie pera, když uživatel píše digitální ink. Stopa ukládá sekvenci spojených bodů.

Nejjednodušší forma kódování určuje souřadnice X a Y každého vzorkového bodu. Když jsou všechny spojené body vykresleny, vytvoří obrázek jako tento:

ink_powerpoint2

Vlastnosti štětce pro kreslení

Štětec se používá k vykreslení čar, které spojují body inkové stopy. Štětec má vlastní barvu a velikost, reprezentované metodami IInkBrush.getColor a IInkBrush.getSize.

Nastavení barvy štětce Ink

Tento Java kód ukazuje, jak nastavit barvu štětce ink:

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();
}

Nastavení velikosti štětce Ink

Tento Java kód ukazuje, jak nastavit velikost štětce ink:

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();
}

Obecně šířka a výška štětce neodpovídají, takže PowerPoint nezobrazuje velikost štětce (odpovídající sekce dat je šedá). Když se šířka a výška štětce shodují, PowerPoint zobrazí jeho velikost takto:

ink_powerpoint3

Pro přehlednost zvýšíme výšku inkového objektu a podíváme se na důležité rozměry:

ink_powerpoint4

Kontejner (rámec) nebere v úvahu velikost štětců – vždy předpokládá, že tloušťka čáry je nulová (viz předchozí obrázek).

Proto je pro určení viditelné oblasti celého inkového objektu třeba zohlednit velikost štětce jeho stop. Zde byl cílový objekt (stopa ručně psaného textu) škálován na velikost kontejneru (rámce). Když se velikost kontejneru změní, velikost štětce zůstane konstantní a naopak.

ink_powerpoint5

PowerPoint používá podobné chování pro textové objekty:

ink_powerpoint6

Řízení vzhledu ink při exportu a renderování

Aspose.Slides poskytuje rozhraní IInkOptions k řízení toho, jak se inkové objekty zobrazují v exportovaném nebo renderovaném výstupu. Jeho vlastnosti můžete použít k úplnému skrytí ink nebo ke změně interpretace operací masky štětce ink.

Ink možnosti jsou k dispozici prostřednictvím exportních nebo renderovacích možností pro několik typů výstupu:

Výstup Vlastnost ink možností
PDF PdfOptions.getInkOptions
HTML HtmlOptions.getInkOptions
SVG SVGOptions.getInkOptions
TIFF TiffOptions.getInkOptions
Slide image RenderingOptions.getInkOptions

Následující metody IInkOptions odhalují stejné dva nastavení:

Skrytí objektů ink ve výstupu PDF

Ve výchozím nastavení zůstávají inkové objekty při exportu viditelné. Pro vytvoření čistého výstupu bez ručně psaných poznámek nebo jiného inkového obsahu zavolejte IInkOptions.setHideInk s true.

Následující Java příklad exportuje prezentaci do PDF při skrytí všech inkových objektů:

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();
}

Skrytí objektů ink při renderování snímku jako obrázku

Pro skrytí inkových objektů při renderování snímků jako bitmapových obrázků nakonfigurujte RenderingOptions.getInkOptions a předávejte renderovací možnosti do ISlide.getImage.

Následující Java příklad vykresluje první snímek jako PNG obrázek bez inkových objektů:

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();
}

Řízení renderování masky ink

Nastavení IInkOptions.getInterpretMaskOpAsOpacity řídí, jak jsou maskové operace interpretovány při renderování inkových štětců. Výchozí hodnota je true, což používá opacity. Pro použití ROP operace místo toho zavolejte IInkOptions.setInterpretMaskOpAsOpacity s false.

Následující Java příklad exportuje snímek do SVG a používá renderování založené na ROP pro operace masky ink:

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();
}

Stejné nastavení lze použít přes TiffOptions.getInkOptions při exportu prezentace nebo renderování snímku do TIFF.

Zvolte, zda skrýt nebo zachovat ink

Když potřebujete čistou verzi anotované prezentace k distribuci bez recenzních značek, zavolejte během exportu IInkOptions.setHideInk s true.

Nechte IInkOptions.getHideInk na jeho výchozí hodnotě false, když jsou inkové anotace součástí zamýšleného obsahu, například recenzní komentáře, ručně psané poznámky, zvýraznění nebo kresby, které mají zůstat viditelné ve výstupu. To umožňuje aplikacím generovat samostatné recenzní a finální výstupy ze stejné prezentace bez úpravy zdrojových inkových objektů.

FAQ

Mohu změnit barvu nebo velikost existujícího tahu ink?

Ano. Získejte stopu pomocí IInk.getTraces, poté změňte její IInkTrace.getBrush. Zavolejte IInkBrush.setColor nebo IInkBrush.setSize pro změnu štětce.

Mění skrytí ink zdrojovou prezentaci?

Ne. Volání IInkOptions.setHideInk ovlivňuje pouze renderovaný nebo exportovaný výsledek; neodstraňuje ani nemodifikuje inkové objekty ve zdrojové prezentaci.

Které exportní formáty podporují možnosti ink?

Možnosti ink můžete konfigurovat pro PDF, HTML, SVG, TIFF a bitmapové snímky přes odpovídající exportní nebo renderovací možnosti uvedené výše.

Další informace