Obnovovací tvary Samostatně od dokumentu

Při zpracování dokumentů je společným úkolem extrahovat všechny obrázky nalezené v dokumentu a exportovat je na vnější místo. Tento úkol se stává jednoduchý s Aspose.Words API, která již poskytuje funkci pro získávání a ukládání obrazových dat. Někdy však můžete chtít podobně extrahovat jiné typy grafického obsahu, které jsou reprezentovány jiným typem kreslícího objektu, například textový rámeček obsahující odstavce, tvary šipek a malý obraz. Neexistuje jednoduchý způsob vykreslování tohoto objektu, protože se jedná o kombinaci jednotlivých prvků obsahu. Můžete se také setkat s případem, kdy obsah byl seskupen do objektu, který vypadá jako jeden obrázek.

Aspose.Words poskytuje funkce pro extrahování tohoto typu obsahu stejným způsobem, jak můžete extrahovat jednoduchý obraz z tvaru kresleného obsahu. Tento článek popisuje, jak využít této funkce k vytvoření tvarů nezávisle na dokumentu.

Typy tvarů Aspose.Words

Veškerý obsah v kresbě dokumentu představuje Shape nebo GroupShape uzel v Aspose.Words Modul objektu dokumentu (DOM). Takovým obsahem mohou být textové schránky, obrázky, AutoShapes, OLE objekty atd. Některá pole jsou importována také jako tvary, například INCLUDEPICTURE pole.

Jednoduchý obrázek představuje Shape uzel ShapeType.Image. Tento tvar uzel nemá dětské uzly, ale obrazové údaje obsažené v tomto tvaru uzlu lze získat pomocí Shape.ImageData majetek. Naproti tomu tvar může být také tvořen mnoha dětskými uzly. Například tvar textového pole, který představuje ShapeType.TextBox majetek, může být tvořen z mnoha uzlů, jako je Paragraph a Table. Většina tvarů může zahrnovat Paragraph a Table blokové uzly. Jsou to stejné uzly jako ty, které se objevují v hlavním těle. Tvary jsou vždy součástí některého odstavce, buď přímo inline nebo ukotvené na Odstavec, ale všude na stránce dokumentu.

rendering-shapes-separately-from-a-document-aspose-words-java-1

Dokument může také obsahovat tvary, které jsou seskupeny dohromady. Grouping může být povolen Microsoft Word výběrem více objektů a kliknutím na tlačítko?GroupV pravém menu.

rendering-shapes-separately-from-a-document-aspose-words-java-2

In Aspose.Words, Tyto skupiny tvarů jsou zastoupeny GroupShape Uzel. Lze je také použít stejným způsobem, aby se celá skupina dostala k obrazu.

rendering-shapes-separately-from-a-document-aspose-words-java-3

Formát DOCX může obsahovat speciální typy obrázků, jako jsou diagramy nebo grafy. Tyto tvary jsou také zastoupeny prostřednictvím Shape uzel Aspose.Words, která také poskytuje podobnou metodu pro jejich zobrazování jako obrázky. Podle návrhu nemůže tvar obsahovat jako dítě jiný tvar, pokud tento tvar není obrazem (ShapeType.Image). Například, Microsoft Word nedovoluje vám vložit textové pole do jiného textového pole.

Výše popsané typy tvarů poskytují speciální metodu, jak tvary vykreslit ShapeRenderer třída. Instance ShapeRenderer třída se získává pro Shape nebo GroupShape skrze GetShapeRenderer metoda nebo předáním Shape Konstruktorovi ShapeRenderer třída. Tato třída poskytuje přístup k členům, které umožňují vykreslit následující tvar:

Předání souboru nebo streamu

The Save metoda poskytuje přetížení, které vytváří tvar přímo do souboru nebo proudu. Oba přetížení přijmout případ ImageSaveOptions třída, která umožňuje definovat možnosti pro vykreslení tvaru. To funguje stejně jako Document.Save metoda. I když je tento parametr vyžadován, můžete předat nulovou hodnotu, která stanoví, že neexistují žádné vlastní možnosti.

Tvar lze exportovat v jakémkoli formátu obrázku uvedeném v SaveFormat výčtu. Například obraz může být přeložen jako rastrový obraz, jako je JPEG zadáním SaveFormat.Jpeg počet nebo jako vektorový obraz, jako je EMF upřesněním SaveFormat.Emf.

Příklad kódu níže ilustruje vykreslování tvaru do EMF obrazu odděleně od dokumentu a uložení na disk:

Příklad kódu níže ilustruje vykreslení tvaru obrazu JPEG odděleně od dokumentu a uložení do streamu:

The ImageSaveOptions třída umožňuje určit různé možnosti, které kontrolují, jak je obraz vykreslen. Výše popsané funkce lze aplikovat stejným způsobem na GroupShape a Shape uzly.

Předávám Graphics Předmět

Předávám přímo Graphics objekt umožňuje definovat vlastní nastavení a stav pro Graphics objekt. Společný scénář zahrnuje vytvoření tvaru přímo do Graphics objekt získaný z a Windows Forma nebo Bitmap. Když Shape Uzel je vykreslen, nastavení ovlivní vzhled tvaru. Například můžete otočit nebo zvětšit tvar pomocí RotateTransform nebo ScaleTransform metody Graphics objekt.

Následující příklad ukazuje, jak vytvořit tvar na Graphics objekt odděleně od dokumentu a použít rotaci na vykreslený obrázek:

Podobně jako RenderToSize metoda, RenderToSizemetoda dědičná po NodeRendererBase je užitečný pro tvorbu náhledů obsahu dokumentu. Velikost tvaru je určena konstruktorem. The RenderToSize metoda přijímá Graphics objekt, souřadnice X a Y polohy obrazu a velikost obrazu (šířka a výška), které budou nakresleny na Graphics objekt.

The Shape může být přeložen do určitého rozsahu pomocí ShapeRenderer.RenderToScale metoda dědičná po NodeRendererBase třída. Je to podobné jako u Document.RenderToScale metoda, která přijímá stejné hlavní parametry. Rozdíl mezi těmito dvěma metodami je, že s ShapeRenderer.RenderToScale metoda, místo doslovné velikosti, zvolíte float hodnotu, která měří tvar během jeho vykreslování. Pokud hodnota plováku rovná 1.0 způsobí, že tvar bude vykreslen na 100% původní velikosti. Hodnota plováku 0,5 sníží velikost obrazu o polovinu.

Obnovit tvarový obrázek

The Shape třída představuje objekty v kresbové vrstvě, jako je AutoShape, textový box, freeform, OLE objekt, ActiveX ovládání, nebo obrázek. Použití Shape třída, můžete vytvořit nebo upravit tvary v Microsoft Word dokument. Důležitá vlastnost tvaru je jeho ShapeType. Tvary různých typů mohou mít různé schopnosti v dokumentu Word. Například pouze obrázky a tvary OLE mohou mít obrázky uvnitř sebe, zatímco většina tvarů může mít pouze text.

Následující příklad ukazuje, jak vykreslit obraz Tvar na obraz JPEG odděleně od dokumentu a uložit jej na disk:

Získávání velikosti tvaru

The ShapeRenderer třída také poskytuje funkčnost pro získání velikosti tvaru v pixelech prostřednictvím GetSizeInPixels metoda. Tato metoda akceptuje dva float (Single) parametry: Metoda vrací Size objekt, který obsahuje šířku a výšku vypočtené velikosti. To je užitečné, když je třeba předem znát velikost vykresleného tvaru, například při vytváření nového Bitmapu z vykresleného výstupu.

Níže uvedený příklad ukazuje, jak vytvořit nový objekt Bitmap a Graphics s šířkou a výškou tvaru, který má být přeložen:

Při použití RenderToSize nebo RenderToScale metody, vykreslené velikosti obrazu se vrací také v SizeF objekt. To může být přiřazeno proměnné a v případě potřeby použito.

The SizeInPoints vlastnost vrací velikost tvaru naměřená v bodech (viz ShapeRenderer). Výsledkem je: SizeF objekt obsahující šířku a výšku.