Giriş

Word belgeleri, görüntüleri, metin kutularını ve diğer serbest yüzen nesneleri, paragraflar ve tabloların normal akışının dışında bir çizim katmanına yerleştirir. Aspose.Words FOSS for .NET, bu çizim katmanını Shape ve ShapeBase sınıfları aracılığıyla ortaya çıkararak, Word’ün kendisinin dahili olarak kullandığı aynı AutoShape, resim, metin kutusu ve OLE nesne modeline programatik erişim sağlar. Bu kılavuz, kütüphanenin bu çizim nesnelerini — konumlandırma, dolgu ve kenarlık biçimlendirme, gömülü resimler ve bir şekil içinde yer alan metin — DOCX, DOCM, DOTX ve DOTM belgelerinde nasıl temsil edip manipüle ettiğini gösterir.

Bu, konumlandırılmış bir logo veya grafik içeren rapor veya antet şablonları oluşturan kodlar, yüzen metin kutuları ve açıklama balonlarıyla belgeler üreten kodlar veya yüklenmiş bir belgede zaten bulunan şekilleri inceleyen kodlar için faydalıdır — gömülü bir resmin baytlarını çıkarmak, bir imza satırının imzalayan adını okumak veya mevcut bir resmi yeniden konumlandırmak.

Aspose.Words FOSS for .NET, MIT lisansı altında yayınlanmış olup .NET Standard 2.0’ı hedefler, bu nedenle .NET Framework 4.6.2+ ve .NET 6, 8 ve 10 üzerinde yerel bağımlılık olmadan çalışır. NuGet aracılığıyla kurun veya kaynak koddan derleyin (aşağıdaki Hızlı Başlangıç’a bakın). Bu, ticari olarak kullanılan aynı Aspose.Words belge motorudur, bir yeniden yazım veya sarmalayıcı değildir, bu yüzden burada açıklanan Shape ve çizim katmanı sınıfları üretim API’dir.


Temel Özellikler

Şekil ve ShapeBase Nesne Modeli

Bir Word belgesine yerleştirilmiş her AutoShape, metin kutusu, gömülü resim, OLE nesnesi veya ActiveX denetimi, Shape sınıfı tarafından temsil edilir — mühürlenmiş ve soyut ShapeBase temel sınıfı üzerine inşa edilmiştir. İkisi de aynı konumlandırma ve biçimlendirme yüzeyini paylaşır: geometri için Shape.Left, Shape.Top, Shape.Width, Shape.Height, Shape.Rotation ve Shape.ZOrder, ayrıca verilen bir örneğin hangi tür nesne içerdiğini tanımlayan Shape.IsGroup, Shape.IsImage, Shape.IsWordArt ve Shape.IsInline bayrakları. ShapeType enumu, Word’ün tanıdığı somut şekil türlerini listeler — Dikdörtgen, Elips, Çizgi, Ok, bir dizi açıklama ve bağlayıcı türü, TextBox, Görüntü ve OleObject gibi seksenin üzerinde değer — böylece bir belgenin şekillerinde dolaşan kod, her birini nasıl işleyeceğine karar vermek için Shape.ShapeType üzerinden dallanabilir. Birden çok şekil, tek bir GroupShape içinde birleştirilebilir; bu kendisi bir ShapeBase alt sınıfıdır ve şekilleri birlikte konumlandırıp yeniden boyutlandıran bir set tutar; DocumentBuilder.InsertGroupShape(shapes) mevcut bir şekil dizisinden birini oluşturur.

Metin Kutuları ve WordArt

Herhangi bir Shape, TextBox sınıfı aracılığıyla kendi metnini taşıyabilir ve bu Shape.TextBox olarak sunulur. TextBox özellikleri, metnin şekil içinde nasıl konumlandığını kontrol eder: dolgu için TextBox.InternalMarginLeft, TextBox.InternalMarginRight, TextBox.InternalMarginTop ve TextBox.InternalMarginBottom, TextBox.FitShapeToText şeklin içeriğiyle büyümesine izin verir, LayoutFlow metin yönü için, TextBoxWrapMode kutu içinde metnin nasıl kaydırıldığını belirler ve TextBox.VerticalAnchorTextBoxAnchor bir değeri, örneğin Üst, Orta, BottomCentered veya TopBaseline — dikey hizalama için. Taşan metnin ikinci bir kutuya devam ettiği bağlanmış metin kutuları, TextBox.Next ve TextBox.Previous ile modellenir. İlgili ancak ayrı bir sınıf olan TextPath, şeklin içi yerine dış çizgisini izleyen WordArt-stili metni tanımlar; TextPath.Text, TextPath.FontFamily, TextPath.Bold ve TextPath.RotateLetters gibi özelliklere sahiptir ve ayrıca TextPathAlignment enum’ı Stretch, Center ve LetterJustify gibi değerler içerir.

Resimler ve Gömülü Görseller

Bir şekil bir resim içerdiğinde, Shape.HasImage doğru olur ve Shape.ImageData bir ImageData nesnesi döndürür. ImageData, ham baytları ImageData.ImageBytes aracılığıyla, tespit edilen formatı ImageType (Jpeg, Png, Bmp, Gif, Emf, Wmf, Pict, Eps ve WebP değerleri dahil) üzerinden, piksel boyutlarını ve çözünürlüğü ImageSize ile ve kırpmayı ImageData.CropTop, ImageData.CropBottom, ImageData.CropLeft ve ImageData.CropRight aracılığıyla sunar. Renk ayarlamaları — ImageData.Brightness, ImageData.Contrast, ImageData.GrayScale, ImageData.BiLevel ve ImageData.ChromaKey — aynı nesnenin özellikleridir ve ImageData.IsLink/ImageData.IsLinkOnly, gömülü resmi yalnızca dış dosya yoluna referans veren bir resimden ayırır. DocumentBuilder.InsertImage(), bir görüntü, dosya yolu, bayt dizisi veya akış kabul eden aşırı yüklemelere sahiptir; ayrıca ekleme sırasında açık genişlik, yükseklik, yatay ve dikey konum ve WrapType ayarlayan varyantları da içerir.

Dolgu, Kenarlık ve Şekil Efektleri

Her Shape ve GroupShape, iç kısmı için bir Fill nesnesi ve dış çizgisi için bir Stroke nesnesi taşır. Fill, FillType aracılığıyla altı dolgu türünü destekler; değerler arasında Katı, Desenli, Gradyan, Dokulu, ArkaPlan ve Resim bulunur ve Fill.Solid(color), Fill.OneColorGradient(style, variant, degree), Fill.TwoColorGradient(color1, color2, style, variant), Fill.Patterned(patternType) veya Fill.SetImage(fileName) gibi yöntemlerle ayarlanır. Stroke dış çizgiyi kontrol eder: Stroke.Weight, DashStyle, JoinStyle, EndCap ve Stroke.LineStyle (bir ShapeLineStyle değeri) çizgiyi kapsar, Stroke.StartArrowType ve Stroke.EndArrowType, ArrowWidth ve ArrowLength enumlarıyla eşleştirilerek bağlayıcı ve çizgi şekillerindeki ok uçlarını yapılandırır. Dolgu ve kenarlığın ötesinde, Shape dört ek efekt nesnesini — ShadowFormat, ReflectionFormat, GlowFormat ve SoftEdgeFormat — ortaya çıkarır; her biri ilgili görsel etki için kendi renk ve şeffaflık özelliklerine sahiptir.

Konumlandırma ve Metin Kaydırma

Sayfaya veya paragrafa göre yüzen şekiller, kendilerini RelativeHorizontalPosition ve RelativeVerticalPosition ile sabitler — örneğin kenar boşluğuna, sayfaya veya sütuna — ve boyut sabitlemesi için RelativeHorizontalSize ve RelativeVerticalSize ile eşleştirilir, ayrıca basit sol/merkez/sağ veya üst/orta/alt yerleşim için HorizontalAlignment ve VerticalAlignment kullanılır. Çevreleyen metnin bir şekle tepkisi WrapType ile kontrol edilir; değerler arasında Satırİçi, Kare, Sıkı, TopBottom ve Yok bulunur; Kare ve Sıkı kaydırma için WrapSide, seçeneği Sol, Sağ, Her İki ve En Büyük olarak daraltır. FlipOrientation, koordinatları değiştirmeden bir şekli yatay veya dikey olarak yansıtır ve Shape.AllowOverlap/Shape.BehindText bayrakları, bir şeklin diğer yüzen içeriklerle ve altındaki metin katmanıyla nasıl etkileşeceğini belirler.

İmza Satırları ve Yatay Çizgiler

İki daha özel şekil türü aynı çizim modelinde bulunur. SignatureLine, ekleme sırasında SignatureLineOptions aracılığıyla yapılandırılır (özellikler arasında SignatureLineOptions.Signer, SignatureLineOptions.SignerTitle, SignatureLineOptions.Email, SignatureLineOptions.Instructions, SignatureLineOptions.ShowDate ve SignatureLineOptions.AllowComments bulunur), yazdırılabilir belgelerde görülen görsel imza bloğunu oluşturur ve bir imza uygulandığında SignatureLine.IsSigned ve SignatureLine.IsValid öğelerini ortaya çıkarır — bu, şeklin kendisi yerine imzalı belge bölümleriyle çalışan, başka bir yerde ele alınan kriptografik dijital imza doğrulamasından farklıdır. HorizontalRuleFormat, DocumentBuilder.InsertHorizontalRule() ile eklenen basit ayırıcı çizgiyi kapsar ve HorizontalRuleFormat.WidthPercent, HorizontalRuleFormat.Height, HorizontalRuleFormat.NoShade, HorizontalRuleFormat.Color ve HorizontalRuleFormat.Alignment özelliklerine sahiptir (sonuncusu bir HorizontalRuleAlignment değeridir).


Hızlı Başlangıç

Aspose.Words FOSS, .NET için NuGet aracılığıyla mevcuttur:

dotnet add package Aspose.Words.FOSS

Bunun yerine kaynaktan derlemek için:

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

Uygulamanızdan Aspose.Words.csproj için bir proje referansı ekleyin. Bundan sonra, çizim katmanıyla çalışmak bu gönderide kullanılan desenin izlenmesidir: bir Document yükleyin veya oluşturun, şekillerini Document.GetChildNodes(NodeType.Shape, true) ile dolaşın ya da DocumentBuilder yöntemiyle yeni bir tane ekleyin; örnek olarak DocumentBuilder.InsertImage(), DocumentBuilder.InsertGroupShape() veya DocumentBuilder.InsertHorizontalRule() kullanılabilir, ardından döndürülen Shape üzerindeki özellikleri okuyun veya ayarlayın — Shape.ImageData, Shape.TextBox, Shape.Fill, Shape.Stroke, Shape.WrapType ve diğerleri — Document.Save() çağırmadan önce.


Desteklenen Biçimler

BiçimUzantıOkumaYazma
DOCX.docx
DOCM.docm
DOTX.dotx
DOTM.dotm
Flat OPC (tüm varyantlar)(çeşitli)
Markdown.md
Text.txt

Bu sürüm, sayfa düzeni ve render’ı kasıtlı olarak dışarıda bırakır — PDF, XPS veya görüntü dışa aktarımı yok ve yazdırma yok — böylece bir şeklin Shape.Bounds ve düzen bağımlı geometrisi, hesaplanmış bir sayfa düzeni yerine belgede saklanan değerleri yansıtır. Ek format dönüştürücüleri (DOC, RTF, ODT, HTML, EPUB, MHTML, MOBI, AZW3 ve WordML) okunmaz veya yazılmaz; bunlar, bu sürümü ücretsiz tutmak için ticari kod tabanından kaldırılan aynı alt sistemlerdir.


Açık Kaynak & Lisanslama

Aspose.Words FOSS for .NET MIT lisansı altında yayınlanmıştır, ticari ve kişisel kullanım için ücretsiz, telif ücreti veya yeniden dağıtım kısıtlaması olmaksızın. Tam kaynak kodu GitHub’da Aspose.Words FOSS için .NET deposunda mevcuttur.


Başlarken

İlgili Kaynaklar