Úvod

Word dokumenty umisťují obrázky, textová pole a další volně plovoucí objekty do kreslicí vrstvy, která je oddělena od běžného toku odstavců a tabulek. Aspose.Words FOSS pro .NET tuto kreslicí vrstvu zpřístupňuje prostřednictvím tříd Shape a ShapeBase, čímž poskytuje programový přístup ke stejnému modelu AutoShape, obrázku, textového pole a OLE objektu, který Word sám interně používá. Tento průvodce ukazuje, jak knihovna představuje a manipuluje s těmito kreslicími objekty — umístěním, výplní a formátováním obrysu, vloženými obrázky a textem uspořádaným uvnitř tvaru — napříč dokumenty DOCX, DOCM, DOTX a DOTM.

To je užitečné pro kód, který vytváří šablony zpráv nebo hlaviček s umístěným logem či grafikou, generuje dokumenty s plovoucími textovými poli a bublinami, nebo kontroluje tvary již přítomné v nahraném dokumentu — extrahováním bajtů vloženého obrázku, čtením jména podepisujícího řádku podpisu nebo přemístěním existujícího obrázku.

Aspose.Words FOSS pro .NET je vydáno pod licencí MIT a cílí na .NET Standard 2.0, takže běží na .NET Framework 4.6.2+ a .NET 6, 8 a 10 bez nativních závislostí. Nainstalujte jej pomocí NuGet nebo jej sestavte ze zdrojového kódu (viz níže Rychlý start). Jedná se o stejný Aspose.Words dokumentový engine používaný komerčně, ne o přepis či obálku, takže třídy Shape a vrstvy kreslení popsané zde jsou produkční API.


Klíčové vlastnosti

Model objektů Shape a ShapeBase

Každý AutoShape, textové pole, vložený obrázek, OLE objekt nebo ActiveX ovládací prvek ukotvený v dokumentu Word je reprezentován třídou Shape — uzavřenou a postavenou na abstraktní základní třídě ShapeBase. Obě sdílejí stejné rozhraní pro umístění a formátování: Shape.Left, Shape.Top, Shape.Width, Shape.Height, Shape.Rotation a Shape.ZOrder pro geometrické údaje, plus příznaky Shape.IsGroup, Shape.IsImage, Shape.IsWordArt a Shape.IsInline popisující, jaký typ objektu daná instance obsahuje. Výčtový typ ShapeType vyjmenovává konkrétní typy tvarů, které Word rozpoznává — Rectangle, Ellipse, Line, Arrow, rodinu typů bublin a spojnic, TextBox, Image a OleObject mezi více než osmdesáti hodnotami — takže kód procházející tvary dokumentu se může rozhodovat na základě Shape.ShapeType, jak s každým zacházet. Více tvarů lze sloučit do jediného GroupShape, který je sám podtřídou ShapeBase, a udržuje sadu tvarů umístěných a změněných velikostí společně; DocumentBuilder.InsertGroupShape(shapes) vytvoří takový z existujícího pole tvarů.

Textová pole a WordArt

Jakýkoli Shape může nést vlastní text pomocí třídy TextBox, vystupující jako Shape.TextBox. Vlastnosti TextBox řídí, jak je text umístěn uvnitř tvaru: TextBox.InternalMarginLeft, TextBox.InternalMarginRight, TextBox.InternalMarginTop a TextBox.InternalMarginBottom pro odsazení, TextBox.FitShapeToText pro umožnění růstu tvaru s obsahem, LayoutFlow pro směr textu, TextBoxWrapMode pro způsob zalamování textu uvnitř pole a TextBox.VerticalAnchorTextBoxAnchor hodnota jako Top, Middle, BottomCentered nebo TopBaseline— pro svislé zarovnání. Propojená textová pole, kde přetékající text pokračuje ve druhém poli, jsou modelována pomocí TextBox.Next a TextBox.Previous. Související, ale odlišná třída, TextPath, definuje WordArt-styl textu, který následuje obrys tvaru místo toho, aby byl uvnitř něj, s vlastnostmi jako TextPath.Text, TextPath.FontFamily, TextPath.Bold a TextPath.RotateLetters, plus výčtový typ TextPathAlignment s hodnotami jako Stretch, Center a LetterJustify.

Obrázky a vložené obrázky

Když tvar obsahuje obrázek, Shape.HasImage je pravda a Shape.ImageData vrací objekt ImageData. ImageData zpřístupňuje surová data přes ImageData.ImageBytes, detekovaný formát přes ImageType (hodnoty včetně Jpeg, Png, Bmp, Gif, Emf, Wmf, Pict, Eps a WebP), rozměry pixelů a rozlišení přes ImageSize a ořez pomocí ImageData.CropTop, ImageData.CropBottom, ImageData.CropLeft a ImageData.CropRight. Úpravy barev— ImageData.Brightness, ImageData.Contrast, ImageData.GrayScale, ImageData.BiLevel a ImageData.ChromaKey— jsou vlastnosti stejného objektu a ImageData.IsLink/ImageData.IsLinkOnly rozlišují vložený obrázek od toho, který jen odkazuje na externí cestu souboru. DocumentBuilder.InsertImage() má přetížení, která přijímají obrázek, cestu k souboru, pole bajtů nebo stream, včetně variant, které také nastavují explicitní šířku, výšku, horizontální a vertikální pozici a WrapType při vkládání.

Výplň, obrys a efekty tvaru

Každý Shape a GroupShape obsahuje objekt Fill a objekt Stroke pro vnitřek a obrys. Fill podporuje šest typů výplně přes FillType, s hodnotami včetně Solid, Patterned, Gradient, Textured, Background a Picture, nastavitelnými metodami jako Fill.Solid(color), Fill.OneColorGradient(style, variant, degree), Fill.TwoColorGradient(color1, color2, style, variant), Fill.Patterned(patternType) nebo Fill.SetImage(fileName). Stroke řídí obrys: Stroke.Weight, DashStyle, JoinStyle, EndCap a Stroke.LineStyle (hodnota ShapeLineStyle) pokrývají samotnou čáru, zatímco Stroke.StartArrowType a Stroke.EndArrowType ve spojení s výčty ArrowWidth a ArrowLength konfigrují šipky na konektorech a čárových tvarech. Kromě výplně a obrysu Shape zpřístupňuje čtyři další objekty efektů— ShadowFormat, ReflectionFormat, GlowFormat a SoftEdgeFormat— z nichž každý má vlastní vlastnosti barvy a průhlednosti pro odpovídající vizuální efekt.

Umístění a zalamování textu

Tvary, které plavou relativně k stránce nebo odstavci, používají RelativeHorizontalPosition a RelativeVerticalPosition k ukotvení— například k okraji, stránce nebo sloupci— v kombinaci s RelativeHorizontalSize a RelativeVerticalSize pro ukotvení velikosti, plus HorizontalAlignment a VerticalAlignment pro jednoduché umístění vlevo/střed/vpravo nebo nahoře/uprostřed/dole. To, jak okolní text reaguje na tvar, řídí WrapType, s hodnotami včetně Inline, Square, Tight, TopBottom a None; pro zalamování Square a Tight WrapSide dále upřesňuje na Left, Right, Both nebo Largest. FlipOrientation zrcadlí tvar horizontálně nebo vertikálně bez změny jeho souřadnic a příznaky Shape.AllowOverlap/Shape.BehindText určují, jak tvar interaguje s ostatním plovoucím obsahem a textovou vrstvou pod ním.

Řádky podpisu a vodorovné čáry

Další dva specializované typy tvarů existují ve stejném modelu kreslení. SignatureLine, nakonfigurovaný při vkládání přes SignatureLineOptions (vlastnosti zahrnují SignatureLineOptions.Signer, SignatureLineOptions.SignerTitle, SignatureLineOptions.Email, SignatureLineOptions.Instructions, SignatureLineOptions.ShowDate a SignatureLineOptions.AllowComments), vykresluje vizuální blok podpisu, který se objevuje v tištěných dokumentech, a zpřístupňuje SignatureLine.IsSigned a SignatureLine.IsValid, jakmile je na něj aplikován podpis—jedná se o odlišnou věc od kryptografického ověřování digitálního podpisu, které je popsáno jinde a pracuje s podepsanými částmi dokumentu, nikoli se samotným tvarem. HorizontalRuleFormat zahrnuje jednoduchou oddělovací čáru vloženou pomocí DocumentBuilder.InsertHorizontalRule(), s vlastnostmi HorizontalRuleFormat.WidthPercent, HorizontalRuleFormat.Height, HorizontalRuleFormat.NoShade, HorizontalRuleFormat.Color a HorizontalRuleFormat.Alignment (poslední je hodnota HorizontalRuleAlignment).


Rychlý start

Aspose.Words FOSS pro .NET je k dispozici přes NuGet:

dotnet add package Aspose.Words.FOSS

Pro sestavení ze zdrojového kódu místo toho:

git clone https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git
cd Aspose.Words-FOSS-for-.NET
dotnet build Aspose.Words.sln -c Release

Přidejte referenci na projekt Aspose.Words.csproj ze své aplikace. Odtud práce s vrstvou kreslení následuje vzor použitý v celém tomto příspěvku: načtěte nebo vytvořte Document, projděte jeho tvary pomocí Document.GetChildNodes(NodeType.Shape, true) nebo vložte nový pomocí metody DocumentBuilder, jako je DocumentBuilder.InsertImage(), DocumentBuilder.InsertGroupShape() nebo DocumentBuilder.InsertHorizontalRule(), poté čtěte nebo nastavujte vlastnosti na vráceném ShapeShape.ImageData, Shape.TextBox, Shape.Fill, Shape.Stroke, Shape.WrapType a další—před zavoláním Document.Save().


Podporované formáty

FormátPříponaČístZapsat
DOCX.docx
DOCM.docm
DOTX.dotx
DOTM.dotm
Flat OPC (všechny varianty)(různé)
Markdown.md
Text.txt

Toto vydání úmyslně vylučuje rozvržení stránky a vykreslování — žádný export do PDF, XPS ani obrázků a žádný tisk — takže Shape.Bounds tvaru a geometrie závislá na rozvržení odrážejí hodnoty uložené v dokumentu místo vypočteného rozvržení stránky. Další konvertory formátů (DOC, RTF, ODT, HTML, EPUB, MHTML, MOBI, AZW3 a WordML) nejsou čteny ani zapisovány; jedná se o stejné subsystémy odstraněné z komerčního kódu, aby bylo toto vydání zdarma.


Open Source a licence

Aspose.Words FOSS pro .NET je vydáno pod licencí MIT, zdarma pro komerční i osobní použití bez poplatků ani omezení šíření. Plný zdrojový kód je k dispozici na GitHub v Aspose.Words FOSS pro .NET repozitáři.


Začínáme

Související zdroje