Správa objektů ink v PowerPointu v JavaScriptu

Úvod

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

Aspose.Slides poskytuje typy potřebné pro práci s objekty ink. Například třída Ink 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šší formě je tvar kontejner, který definuje oblast samotného objektu (jeho rámec) spolu s vlastnostmi, jako je velikost, tvar a pozadí kontejneru. Další informace najdete v Shape Layout Format.

Nicméně, když PowerPoint pracuje s objektem ink, ignoruje všechny vlastnosti rámce objektu (kontejneru) kromě jeho velikosti. Velikost oblastí kontejneru je určena standardními metodami Shape.getWidth a Shape.getHeight :

ink_powerpoint1

Ink stopy

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

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

ink_powerpoint2

Vlastnosti štětce pro kreslení

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

Nastavení barvy ink štětce

This JavaScript code shows how to set the color of an ink brush:

const aspose = {
    slides: require("aspose.slides.via.java")
};
const java = require("java");

const presentation = new aspose.slides.Presentation("pres.pptx");
try {
    const slide = presentation.getSlides().get_Item(0);
    const ink = slide.getShapes().get_Item(0);
    const brush = ink.getTraces()[0].getBrush();
    const red = java.getStaticFieldValue("java.awt.Color", "RED");
    brush.setColor(red);
} finally {
    presentation.dispose();
}

Nastavení velikosti ink štětce

This JavaScript code shows how to set the size of an ink brush:

const aspose = {
    slides: require("aspose.slides.via.java")
};
const java = require("java");

const presentation = new aspose.slides.Presentation("pres.pptx");
try {
    const slide = presentation.getSlides().get_Item(0);
    const ink = slide.getShapes().get_Item(0);
    const brush = ink.getTraces()[0].getBrush();
    const brushSize = java.newInstanceSync("java.awt.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 (příslušná část 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 objektu ink 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 nula (viz předchozí obrázek).

Proto, aby bylo možné určit viditelnou oblast celého objektu ink, je třeba zohlednit velikost štětce jeho stop. Zde byl cílový objekt (stopa ručně psaného textu) přizpůsoben velikosti kontejneru (rámce). Když se změní velikost kontejneru, velikost štětce zůstává konstantní a naopak.

ink_powerpoint5

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

ink_powerpoint6

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

Aspose.Slides poskytuje třídu InkOptions, která umožňuje ovládat, jak se objekty ink zobrazují v exportovaném nebo vykresleném výstupu. Její vlastnosti můžete použít k úplnému skrytí ink nebo ke změně interpretace operací masky štětce ink.

Možnosti ink jsou k dispozici prostřednictvím možností exportu nebo vykreslování pro několik typů výstupu:

Výstup Vlastnost InkOptions
PDF PdfOptions.getInkOptions
HTML HtmlOptions.getInkOptions
SVG SVGOptions.getInkOptions
TIFF TiffOptions.getInkOptions
Slide image RenderingOptions.getInkOptions

Následující metody InkOptions odhalují stejné dvě nastavení:

Skrytí objektů ink v PDF výstupu

Ve výchozím nastavení jsou objekty ink během exportu viditelné. Pro vytvoření čistého výstupu bez ručně psaných anotací nebo jiného ink obsahu zavolejte InkOptions.setHideInk s true.

Následující příklad JavaScriptu exportuje prezentaci do PDF a přitom skryje všechny objekty ink:

const aspose = {
    slides: require("aspose.slides.via.java")
};

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

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

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

Pro skrytí objektů ink při vykreslování snímků jako bitmapových obrázků nakonfigurujte RenderingOptions.getInkOptions a předložte možnosti vykreslování metodě Slide.getImage.

Následující příklad JavaScriptu vykreslí první snímek jako PNG obrázek bez objektů ink:

const aspose = {
    slides: require("aspose.slides.via.java")
};

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

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

Řízení vykreslování ink masky

Nastavení InkOptions.getInterpretMaskOpAsOpacity řídí, jak jsou operace masky interpretovány při vykreslování štětců ink. Výchozí hodnota je true, což používá průhlednost. Pro použití operace ROP místo toho zavolejte InkOptions.setInterpretMaskOpAsOpacity s false.

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

const aspose = {
    slides: require("aspose.slides.via.java")
};
const java = require("java");

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

    const outputStream = java.newInstanceSync("java.io.FileOutputStream", "slide.svg");
    try {
        const slide = presentation.getSlides().get_Item(0);
        slide.writeAsSvg(outputStream, svgOptions);
    } finally {
        outputStream.close();
    }
} finally {
    presentation.dispose();
}

Stejné nastavení lze použít prostřednictvím TiffOptions.getInkOptions když exportujete prezentaci nebo vykreslujete snímek 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 InkOptions.setHideInk s true.

Ponechte InkOptions.getHideInk na výchozí hodnotě false, když jsou ink 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 ve výsledném exportu viditelné. To umožňuje aplikacím vytvořit samostatné recenzní a finální výstupy ze stejné prezentace bez úpravy zdrojových objektů ink.

Často kladené otázky

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

Ano. Získejte stopu pomocí Ink.getTraces a poté změňte její InkTrace.getBrush. Zavolejte InkBrush.setColor nebo InkBrush.setSize a změňte štětec.

Mění skrytí ink zdrojovou prezentaci?

Ne. Zavolání InkOptions.setHideInk ovlivní pouze výsledný vykreslený nebo exportovaný výstup; neodstraní ani neupraví objekty ink ve zdrojové prezentaci.

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

Můžete nastavit možnosti ink pro PDF, HTML, SVG, TIFF a bitmapové obrázky snímků prostřednictvím odpovídajících možností exportu nebo vykreslování uvedených výše.

Další čtení