บทนำ
Aspose.Words FOSS สำหรับ .NET มีโมเดลอ็อบเจกต์การจัดรูปแบบข้อความเดียวกับเอนจินเชิงพาณิชย์ Aspose.Words: Font สำหรับคุณลักษณะระดับรัน, ParagraphFormat สำหรับคุณลักษณะระดับย่อหน้า, ListFormat สำหรับรายการที่มีหมายเลขและรายการแบบหัวข้อย่อย, FrameFormat สำหรับกรอบข้อความที่กำหนดตำแหน่ง, และ Range.Replace สำหรับการค้นหาและแทนที่. คู่มือฉบับนี้มุ่งเน้นเฉพาะชั้นนั้น — การจัดรูปแบบและการเขียนทับข้อความที่มีอยู่แล้วในเอกสาร — ไม่ใช่การสร้างโครงสร้างของเอกสารตั้งแต่ต้น (ดู introduction post เพื่อภาพรวมของการปล่อยเวอร์ชัน).
ไลบรารีนี้ใช้ลิขสิทธิ์ MIT โดยไม่มีการพึ่งพาเนทีฟและมุ่งเป้าไปที่ .NET Standard 2.0 ดังนั้นจึงทำงานบน .NET Framework 4.6.2+ และ .NET 6, 8, และ 10. ติดตั้งผ่าน NuGet หรือสร้างจากซอร์สโค้ด (ดู เริ่มต้นอย่างรวดเร็ว ด้านล่าง). ทุกอย่างที่อธิบายไว้ที่นี่ทำงานกับ .docx, .docm, .dotx, .dotm และไฟล์ Flat OPC ที่โหลดด้วย new Document(fileName), หรือกับเอกสารที่สร้างในหน่วยความจำด้วย DocumentBuilder.
เนื่องจาก Aspose.Words FOSS สำหรับ .NET เป็นโค้ดเบส Aspose.Words ดั้งเดิมที่ถูกลดเหลือเป็นคอร์ฟรีแทนการเขียนใหม่ โมเดลอ็อบเจกต์ของ Font, ParagraphFormat, ListFormat และ FrameFormat จะถูกถ่ายโอนโดยตรงไปยัง Aspose.Words เชิงพาณิชย์สำหรับ .NET หากโครงการในภายหลังต้องการการจัดวางหน้า, การเรนเดอร์, หรือตัวแปลงรูปแบบเพิ่มเติมที่เวอร์ชันนี้ไม่ได้รวมไว้.
คุณสมบัติหลัก
การจัดรูปแบบระดับรันพร้อมฟอนต์
ทุก Run จะเปิดเผยคุณสมบัติ Font, และ DocumentBuilder.Font ตั้งค่าฟอนต์ที่จะนำไปใช้กับข้อความที่เขียนต่อไป นอกจาก Bold, Italic, และ Underline ที่ชัดเจน (enum Underline ที่มีค่ารวมถึง Single, Double, Dotted, Dash, Wavy และรูปแบบ *Heavy ของพวกมัน) Font ครอบคลุม StrikeThrough, DoubleStrikeThrough, Superscript, Subscript, SmallCaps, AllCaps, Hidden, Shadow, Outline, Emboss, Engrave, Color, HighlightColor, Spacing, Position, Kerning, Scaling, และ EmphasisMark. Font.Style, Font.StyleName, และ Font.StyleIdentifier เชื่อมโยงรันกลับไปยังสไตล์ตัวอักษร, และ Font.ClearFormatting() รีเซ็ตการจัดรูปแบบโดยตรงของรันกลับไปยังค่าเริ่มต้นของสไตล์. DocumentBuilder ยังเปิดเผย Bold, Italic, และ Underline โดยตรงเป็นทางลัด, พร้อมกับ PushFont() และ PopFont() เพื่อบันทึกและคืนสถานะฟอนต์ปัจจุบันของบิลเดอร์รอบการเปลี่ยนแปลงการจัดรูปแบบชั่วคราว.
การจัดรูปแบบย่อหน้าด้วย ParagraphFormat
ParagraphFormat (เข้าถึงได้ผ่าน Paragraph.ParagraphFormat หรือ DocumentBuilder.ParagraphFormat) ควบคุมการจัดแนวผ่าน enum ParagraphAlignment (Left, Center, Right, Justify, Distributed, พร้อมตัวแปรแบบ Arabic kashida และ Thai-distributed) การเยื้องผ่าน LeftIndent, RightIndent และ FirstLineIndent (พร้อมเทียบเท่า CharacterUnit* สำหรับการจัดวางแบบเอเชียตะวันออก) และช่องว่างผ่าน SpaceBefore, SpaceAfter และ LineSpacingRule/LineSpacing. พฤติกรรมการแบ่งหน้าได้รับการควบคุมด้วย KeepTogether, KeepWithNext, PageBreakBefore และ WidowControl, และ Bidi ทำเครื่องหมายย่อหน้าเป็นจากขวาไปซ้าย. จุดหยุดแท็บที่กำหนดเองอยู่ใน ParagraphFormat.TabStops, ซึ่งเป็น TabStopCollection ของวัตถุ TabStop, แต่ละอันมี Position, TabAlignment (Left, Center, Right, Decimal, Bar) และ TabLeader (None, Dots, Dashes, Line, Heavy, MiddleDot). เช่นเดียวกับ Font, ParagraphFormat.Style และ StyleName เชื่อมโยงย่อหน้ากับ Style ที่มีชื่อ, และ ClearFormatting() ล้างการจัดรูปแบบย่อหน้าโดยตรง.
รายการด้วย ListFormat
ListFormat (บน Paragraph.ListFormat หรือ DocumentBuilder.ListFormat) ใช้การจัดรูปแบบรายการกับย่อหน้า: ApplyBulletDefault() และ ApplyNumberDefault() เปลี่ยนเป็นรายการหัวข้อแบบจุดหรือหมายเลขเริ่มต้น, RemoveNumbers() ลบการจัดรูปแบบรายการทั้งหมด, และ ListIndent()/ListOutdent() ย้ายระหว่างระดับรายการ. ListFormat.List คืนค่าการกำหนด List พื้นฐาน, และ ListFormat.ListLevel คืนค่า ListLevel ที่มีผลสำหรับย่อหน้านั้น, ซึ่งมีการตั้งค่าระดับต่าง ๆ เช่น NumberStyle, NumberFormat, Alignment (เป็น ListLevelAlignment ของ Left, Center, หรือ Right), StartAt, RestartAfterLevel, Font เฉพาะระดับ, และ TrailingCharacter (เป็น ListTrailingCharacter ของ Tab, Space, หรือ Nothing) ที่ควบคุมช่องว่างระหว่างป้ายรายการกับข้อความย่อหน้า. การกำหนดรายการใหม่มาจาก ListCollection.Add(listTemplate) โดยใช้หนึ่งในพรีเซ็ต ListTemplate ที่สร้างมาในตัว (BulletDefault, NumberArabicDot, NumberUppercaseRomanDot, และที่คล้ายกัน), หรือ AddSingleLevelList สำหรับรายการระดับเดียว; รายการในเอกสารจะถูกนับผ่าน Document.Lists.
กรอบข้อความด้วย FrameFormat
Paragraph.FrameFormat เป็นอ็อบเจ็กต์รายงานแบบอ่านอย่างเดียว: ทุกคุณสมบัติบนอ็อบเจ็กต์นี้สะท้อนของย่อหน้า ปัจจุบัน สถานะเฟรมแทนที่จะให้คุณตั้งค่าโดยตรง. IsFrame รายงานว่าขณะนี้ย่อหน้ามีเป็นเฟรมหรือไม่; Width, Height, และ HeightRule รายงานขนาดของมัน; HorizontalPosition และ VerticalPosition, พร้อมกับ RelativeHorizontalPosition และ RelativeVerticalPosition, รายงานว่ามันถูกยึดตำแหน่งอย่างไรสัมพันธ์กับหน้า, ขอบ, คอลัมน์, หรือย่อหน้า; และ HorizontalDistanceFromText/VerticalDistanceFromText รายงานช่องว่างระหว่างกรอบกับข้อความหลักที่ล้อมรอบ. HorizontalAlignment และ VerticalAlignment รายงานว่าเนื้อหาเรียงตำแหน่งอย่างไรภายในกรอบ.
ค้นหาและแทนที่ด้วยช่วงและ IReplacingCallback
Range.Replace — มีให้ใช้บน Document.Range สำหรับการดำเนินการทั่วทั้งเอกสาร, หรือบน Range ของโหนดใดก็ได้ — มี overload สำหรับคู่ pattern/replacement ธรรมดาและสำหรับคู่ pattern/replacement ที่รวมกับอินสแตนซ์ FindReplaceOptions, รองรับการจับคู่แบบ regex. FindReplaceOptions.MatchCase และ FindWholeWordsOnly จำกัดสิ่งที่ถือเป็นการจับคู่; Direction (FindReplaceDirection.Forward หรือ Backward) กำหนดลำดับการสแกน; ApplyFont และ ApplyParagraphFormat ทำให้การแทนที่พาไปยังการจัดรูปแบบของข้อความแทนที่; และชุดของแฟล็ก Ignore* (IgnoreDeleted, IgnoreInserted, IgnoreFields, IgnoreFieldCodes, IgnoreFootnotes, IgnoreStructuredDocumentTags, IgnoreShapes, IgnoreOfficeMath) ยกเว้นหมวดเนื้อหาเฉพาะจากการจับคู่. สำหรับตรรกะการแทนที่ที่สตริงคงที่ไม่สามารถแสดงได้, ให้ทำการ implement IReplacingCallback.Replacing(args) และตั้งค่าเป็น FindReplaceOptions.ReplacingCallback (หรือส่งผ่านไปยังหนึ่งในคอนสตรัคเตอร์ FindReplaceOptions ที่รับ callback โดยตรง); พารามิเตอร์ args เป็น ReplacingArgs ที่เปิดเผย Match, MatchNode, MatchOffset, และสตริง Replacement ที่ตั้งค่าได้เพื่อให้ callback คำนวณค่าต่อการจับคู่แต่ละครั้ง. enum ReplaceAction ที่เกี่ยวข้อง (Replace, Skip, Stop) อธิบายผลลัพธ์ที่เป็นไปได้สำหรับการจับคู่เดียวระหว่างการดำเนินการ.
เริ่มต้นอย่างรวดเร็ว
Aspose.Words FOSS สำหรับ .NET มีให้ผ่าน NuGet:
dotnet add package Aspose.Words.FOSSเพื่อสร้างจากซอร์สแทน:
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
จากนั้นเพิ่มการอ้างอิงโปรเจกต์ไปยัง Aspose.Words.csproj. เพื่อจัดรูปแบบข้อความขณะเขียน ให้ตั้งค่าคุณสมบัติของ DocumentBuilder.Font (Bold, Italic, Underline), คุณสมบัติของ DocumentBuilder.ParagraphFormat (Alignment, การเยื้อง, ระยะห่าง), และ DocumentBuilder.ListFormat (ApplyBulletDefault(), ApplyNumberDefault()) ก่อนเรียก Write(), Writeln() หรือ InsertParagraph() — ตัวสร้างจะใช้สถานะการจัดรูปแบบปัจจุบันกับทุกอย่างที่เขียนจนกว่าคุณจะเปลี่ยนแปลงอีกครั้ง หรือห่อการเปลี่ยนแปลงชั่วคราวด้วย PushFont()/PopFont(). เพื่อจัดรูปแบบใหม่หรือเขียนทับข้อความที่มีอยู่ในเอกสาร เปิดเอกสารด้วย new Document(fileName) แล้วเรียก Range.Replace() บน doc.Range — ไม่ว่าจะเป็นการ overload แบบ pattern/replace ธรรมดา หรือ overload ที่รับ FindReplaceOptions พร้อม MatchCase, FindWholeWordsOnly หรือ IReplacingCallback ที่กำหนดเอง — จากนั้น Save() ผลลัพธ์.
รูปแบบที่รองรับ
| รูปแบบ | ส่วนขยาย | อ่าน | เขียน |
|---|---|---|---|
| DOCX | .docx | ✓ | ✓ |
| DOCM | .docm | ✓ | ✓ |
| DOTX | .dotx | ✓ | ✓ |
| DOTM | .dotm | ✓ | ✓ |
| Flat OPC (ทุกรูปแบบ) | (หลายรูปแบบ) | ✓ | ✓ |
| Markdown | .md | ✓ | ✓ |
| Text | .txt | ✓ | ✓ |
คลาสการจัดรูปแบบข้างต้นทำงานในลักษณะเดียวกันไม่ว่าหนังสือเอกสารจะถูกโหลดหรือบันทึกจากรูปแบบใดก็ตาม. รุ่นนี้ไม่รองรับ DOC, RTF, ODT, HTML, EPUB, MHTML, MOBI, AZW3, หรือ WordML สำหรับการอ่านหรือเขียน, และไม่รองรับ PDF, XPS, หรือการส่งออกภาพ, เนื่องจากการจัดหน้าและการเรนเดอร์อยู่นอกขอบเขตของมัน.
โอเพ่นซอร์ส & การให้สิทธิ์
Aspose.Words FOSS สำหรับ .NET ถูกปล่อยภายใต้สัญญาอนุญาต MIT, ฟรีสำหรับการใช้งานเชิงพาณิชย์และส่วนบุคคลโดยไม่มีค่าโรยัลตีหรือข้อจำกัดการกระจายซ้ำ. โค้ดต้นฉบับทั้งหมด รวมถึงการทำงานของ Font, ParagraphFormat, ListFormat, FrameFormat และ Range ที่อธิบายข้างต้น มีให้ที่ GitHub ใน Aspose.Words FOSS สำหรับ .NET repository.