Giriş
Aspose.Words FOSS for .NET, ticari Aspose.Words motoruyla aynı metin-biçimlendirme nesne modelini içerir: Font koşul seviyesi öznitelikleri için, ParagraphFormat paragraf seviyesi öznitelikleri için, ListFormat numaralı ve madde işaretli listeler için, FrameFormat konumlandırılmış metin çerçeveleri için ve Range.Replace bul-ve-değiştir için. Bu kılavuz özellikle bu katmana bakar — bir belgede zaten var olan metni biçimlendirme ve yeniden yazma — sıfırdan bir belgenin yapısını oluşturmak yerine (sürümün genel bakışı için introduction post bölümüne bakın).
Kütüphane MIT lisanslıdır, yerel bağımlılıkları yoktur ve .NET Standard 2.0’ı hedefler, bu nedenle .NET Framework 4.6.2+ ve .NET 6, 8 ve 10 üzerinde çalışır. NuGet aracılığıyla kurun veya kaynak koddan derleyin (aşağıdaki Hızlı Başlangıç’a bakın). Burada açıklanan her şey .docx, .docm, .dotx, .dotm ve new Document(fileName) ile yüklenen Düz OPC dosyalarına karşı çalışır, ya da DocumentBuilder ile bellekte oluşturulan belgelere karşı çalışır.
Çünkü Aspose.Words FOSS for .NET, yeniden yazım değil ücretsiz bir çekirdeğe indirgenmiş gerçek Aspose.Words kod tabanıdır, Font, ParagraphFormat, ListFormat ve FrameFormat nesne modeli doğrudan ticari Aspose.Words for .NET‘a taşınır; bir proje daha sonra sayfa düzeni, renderleme veya bu sürümün dışarıda bıraktığı ek format dönüştürücülerine ihtiyaç duyarsa.
Temel Özellikler
Koşul Seviyesi Biçimlendirme ve Yazı Tipi
Her Run, bir Font özelliği sunar ve DocumentBuilder.Font, bir sonraki yazılan metne uygulanacak yazı tipini ayarlar. Açıkça görülen Bold, Italic ve Underline (değerleri Single, Double, Dotted, Dash, Wavy ve bunların *Heavy varyantlarını içeren bir Underline enumu) dışında, Font StrikeThrough, DoubleStrikeThrough, Superscript, Subscript, SmallCaps, AllCaps, Hidden, Shadow, Outline, Emboss, Engrave, Color, HighlightColor, Spacing, Position, Kerning, Scaling ve EmphasisMark kapsamını içerir. Font.Style, Font.StyleName ve Font.StyleIdentifier, bir koşulu karakter stiline bağlar ve Font.ClearFormatting(), bir koşudaki doğrudan biçimlendirmeyi stil varsayılanlarına sıfırlar. DocumentBuilder, ayrıca Bold, Italic ve Underline‘ı doğrudan kısayollar olarak sunar, ayrıca geçici bir biçimlendirme değişikliği sırasında oluşturucunun mevcut yazı tipi durumunu kaydetmek ve geri yüklemek için PushFont() ve PopFont()‘i sağlar.
Paragraf Biçimlendirme ParagraphFormat ile
ParagraphFormat (Paragraph.ParagraphFormat veya DocumentBuilder.ParagraphFormat üzerinden erişilebilir) hizalamayı ParagraphAlignment enum’u aracılığıyla (Left, Center, Right, Justify, Distributed, Arap kashida ve Tay dağıtımlı varyantlar dahil) kontrol eder, girintiyi LeftIndent, RightIndent ve FirstLineIndent ile (Doğu Asya yerleşimleri için CharacterUnit* eşdeğerleriyle) ayarlar ve boşluğu SpaceBefore, SpaceAfter ve LineSpacingRule/LineSpacing ile belirler. Sayfalama davranışı KeepTogether, KeepWithNext, PageBreakBefore ve WidowControl ile kontrol edilir, Bidi bir paragrafı sağdan sola işaretler. Özel sekme durakları ParagraphFormat.TabStops‘de bulunur, bu TabStopCollection TabStop nesnelerinden oluşur, her biri bir Position, bir TabAlignment (Left, Center, Right, Decimal, Bar) ve bir TabLeader (None, Dots, Dashes, Line, Heavy, MiddleDot) içerir. Font gibi, ParagraphFormat.Style ve StyleName paragrafı adlandırılmış bir Style‘ye bağlar ve ClearFormatting() doğrudan paragraf biçimlendirmesini temizler.
Listeler ListFormat ile
ListFormat (Paragraph.ListFormat veya DocumentBuilder.ListFormat üzerinde) bir paragrafın liste biçimlendirmesini uygular: ApplyBulletDefault() ve ApplyNumberDefault() onu varsayılan madde işaretli veya numaralı listeye dönüştürür, RemoveNumbers() liste biçimlendirmesini tamamen kaldırır ve ListIndent()/ListOutdent() liste seviyeleri arasında taşır. ListFormat.List temel List tanımını döndürür, ListFormat.ListLevel ise o paragraf için geçerli ListLevel‘i döndürür; bu, NumberStyle, NumberFormat, Alignment ( ListLevelAlignment Left, Center veya Right ), StartAt, RestartAfterLevel, seviyeye özgü bir Font ve TrailingCharacter ( ListTrailingCharacter Tab, Space veya Nothing ) gibi seviye-bazlı ayarları içerir; bu ayarlar liste etiketi ile paragraf metni arasındaki boşluğu kontrol eder. Yeni liste tanımları ListCollection.Add(listTemplate) üzerinden yerleşik ListTemplate ön ayarlarından (BulletDefault, NumberArabicDot, NumberUppercaseRomanDot ve benzerleri) biri kullanılarak oluşturulur veya tek-seviye liste için AddSingleLevelList kullanılır; bir belgenin listeleri Document.Lists aracılığıyla enumerate edilir.
Metin Çerçeveleri FrameFormat ile
Paragraph.FrameFormat salt okunur bir raporlama nesnesidir: üzerindeki her özelliği bir paragrafın geçerli çerçeve durumunu yansıtır ve doğrudan ayarlamanıza izin vermez. IsFrame paragrafın şu anda bir çerçeve olup olmadığını rapor eder; Width, Height, ve HeightRule boyutunu rapor eder; HorizontalPosition ve VerticalPosition, ile birlikte RelativeHorizontalPosition ve RelativeVerticalPosition, rapor edin sayfaya, kenara, sütuna veya paragrafına göre nerede bağlandığını; ve HorizontalDistanceFromText/VerticalDistanceFromText çerçeve ile çevresindeki gövde metni arasındaki boşluğu rapor edin. HorizontalAlignment ve VerticalAlignment içeriğin çerçeve içinde nasıl hizalandığını rapor edin.
Aralık ve IReplacingCallback ile Bul ve Değiştir
Range.Replace — Document.Range üzerinde tüm belge için bir geçişte ya da herhangi bir düğümün Range‘sinde bulunur — düz bir desen/değiştirme çifti ve bir FindReplaceOptions örneğiyle birleştirilmiş desen/değiştirme çifti için aşırı yüklemelere sahiptir, regex tabanlı eşleşmeyi destekler. FindReplaceOptions.MatchCase ve FindWholeWordsOnly neyin eşleşme sayılacağını daraltır; Direction (FindReplaceDirection.Forward veya Backward) tarama sırasını ayarlar; ApplyFont ve ApplyParagraphFormat bir değiştirme geçişinin biçimlendirmeyi değiştirme metnine taşımasına izin verir; ve Ignore* bayrak seti (IgnoreDeleted, IgnoreInserted, IgnoreFields, IgnoreFieldCodes, IgnoreFootnotes, IgnoreStructuredDocumentTags, IgnoreShapes, IgnoreOfficeMath) belirli içerik kategorilerini eşleşmeden hariç tutar. Sabit bir dizeyle ifade edilemeyen değiştirme mantığı için, IReplacingCallback.Replacing(args) uygulayın ve FindReplaceOptions.ReplacingCallback olarak ayarlayın (veya doğrudan bir geri aramayı kabul eden FindReplaceOptions yapıcılarından birine geçirin); args parametresi, Match, MatchNode, MatchOffset ve ayarlanabilir bir Replacement dizesi sunan bir ReplacingArgs olup, geri aramanın her eşleşme için bir değer hesaplamasını sağlar. İlgili bir ReplaceAction enum (Replace, Skip, Stop) işlem sırasında tek bir eşleşme için olası sonuçları tanımlar.
Hızlı Başlangıç
Aspose.Words FOSS, .NET için NuGet aracılığıyla mevcuttur:
dotnet add package Aspose.Words.FOSSBunun yerine kaynak kodundan 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
Ardından Aspose.Words.csproj için bir proje referansı ekleyin. Metni yazarken biçimlendirmek için, DocumentBuilder.Font özelliklerini (Bold, Italic, Underline), DocumentBuilder.ParagraphFormat özelliklerini (Alignment, girintiler, boşluklar) ve DocumentBuilder.ListFormat (ApplyBulletDefault(), ApplyNumberDefault()) ayarlayın, ardından Write(), Writeln() veya InsertParagraph() çağırın — oluşturucu, tekrar değiştirene kadar yazılan her şeye mevcut biçimlendirme durumunu uygular veya geçici bir değişikliği PushFont()/PopFont() içinde sarar. Bir belgede zaten bulunan metni yeniden biçimlendirmek veya yeniden yazmak için, new Document(fileName) ile açın ve Range.Replace()‘ı doc.Range üzerinde çağırın — ya basit desen/değiştirme aşırı yüklemesini, ya da FindReplaceOptions alan bir aşırı yüklemeyi MatchCase, FindWholeWordsOnly veya özel bir IReplacingCallback ile kullanın — ardından sonucu Save().
Desteklenen Biçimler
| Biçim | Uzantı | Oku | Yaz |
|---|---|---|---|
| DOCX | .docx | ✓ | ✓ |
| DOCM | .docm | ✓ | ✓ |
| DOTX | .dotx | ✓ | ✓ |
| DOTM | .dotm | ✓ | ✓ |
| Düz OPC (tüm varyantlar) | (çeşitli) | ✓ | ✓ |
| Markdown | .md | ✓ | ✓ |
| Text | .txt | ✓ | ✓ |
Yukarıdaki biçimlendirme sınıfları, bir belgenin hangi biçimden yüklendiği veya hangi biçime kaydedildiği fark etmeksizin aynı şekilde uygulanır. Bu sürüm, okuma veya yazma için DOC, RTF, ODT, HTML, EPUB, MHTML, MOBI, AZW3 veya WordML biçimlerini desteklemez ve sayfa düzeni ve renderleme kapsamı dışında olduğundan PDF, XPS veya görüntü dışa aktarmayı desteklemez.
Açık Kaynak & Lisanslama
Aspose.Words FOSS for .NET MIT license altında yayınlanmıştır, ticari ve kişisel kullanım için ücretsizdir, hiçbir telif ücreti ya da yeniden dağıtım kısıtlaması yoktur. Yukarıda açıklanan Font, ParagraphFormat, ListFormat, FrameFormat ve Range uygulamaları dahil olmak üzere tam kaynak kodu GitHub üzerindeki Aspose.Words FOSS for .NET repository içinde mevcuttur.