Giới thiệu

Aspose.Words FOSS cho .NET bao gồm cùng mô hình đối tượng định dạng văn bản như engine thương mại Aspose.Words: Font cho các thuộc tính mức chạy, ParagraphFormat cho các thuộc tính mức đoạn, ListFormat cho danh sách có số và dấu đầu mục, FrameFormat cho khung văn bản được định vị, và Range.Replace cho tìm và thay thế. Hướng dẫn này tập trung cụ thể vào lớp đó — định dạng và viết lại văn bản đã tồn tại trong tài liệu — thay vì xây dựng cấu trúc tài liệu từ đầu (xem bài giới thiệu để có tổng quan về bản phát hành).

Thư viện được cấp phép MIT mà không có phụ thuộc gốc và nhắm tới .NET Standard 2.0, vì vậy nó chạy trên .NET Framework 4.6.2+ và .NET 6, 8, và 10. Cài đặt nó qua NuGet, hoặc xây dựng từ mã nguồn (xem Bắt đầu nhanh bên dưới). Mọi thứ được mô tả ở đây hoạt động với .docx, .docm, .dotx, .dotm, và các tệp Flat OPC được tải bằng new Document(fileName), hoặc với các tài liệu được tạo trong bộ nhớ bằng DocumentBuilder.

Vì Aspose.Words FOSS cho .NET là mã nguồn Aspose.Words thực sự được giảm xuống thành lõi miễn phí thay vì một bản viết lại, mô hình đối tượng Font, ParagraphFormat, ListFormat, và FrameFormat được chuyển thẳng sang Aspose.Words thương mại cho .NET nếu một dự án sau này cần bố cục trang, render, hoặc các bộ chuyển đổi định dạng bổ sung mà phiên bản này không bao gồm.


Các tính năng chính

Định dạng mức chạy với phông chữ

Mỗi Run cung cấp một thuộc tính Font, và DocumentBuilder.Font đặt phông chữ sẽ được áp dụng cho văn bản được viết tiếp theo. Ngoài các Bold, Italic, và Underline hiển nhiên (một enum Underline với các giá trị bao gồm Single, Double, Dotted, Dash, Wavy, và các biến thể *Heavy của chúng), Font bao gồm StrikeThrough, DoubleStrikeThrough, Superscript, Subscript, SmallCaps, AllCaps, Hidden, Shadow, Outline, Emboss, Engrave, Color, HighlightColor, Spacing, Position, Kerning, Scaling, và EmphasisMark. Font.Style, Font.StyleName, và Font.StyleIdentifier liên kết một run trở lại với kiểu ký tự, và Font.ClearFormatting() đặt lại định dạng trực tiếp trên một run về mặc định kiểu của nó. DocumentBuilder cũng cung cấp Bold, Italic, và Underline trực tiếp như các phím tắt, cộng thêm PushFont()PopFont() để lưu và khôi phục trạng thái phông chữ hiện tại của builder quanh một thay đổi định dạng tạm thời.

Định dạng đoạn văn với ParagraphFormat

ParagraphFormat (có thể truy cập qua Paragraph.ParagraphFormat hoặc DocumentBuilder.ParagraphFormat) kiểm soát căn chỉnh thông qua enum ParagraphAlignment (Left, Center, Right, Justify, Distributed, cùng với các biến thể kashida tiếng Ả Rập và phân phối tiếng Thái), thụt lề thông qua LeftIndent, RightIndent, và FirstLineIndent (với các tương đương CharacterUnit* cho bố cục Đông Á), và khoảng cách thông qua SpaceBefore, SpaceAfter, và LineSpacingRule/LineSpacing. Hành vi phân trang được kiểm soát bằng KeepTogether, KeepWithNext, PageBreakBefore, và WidowControl, và Bidi đánh dấu một đoạn văn là từ phải sang trái. Các tab dừng tùy chỉnh nằm trong ParagraphFormat.TabStops, một TabStopCollection của các đối tượng TabStop, mỗi đối tượng có một Position, một TabAlignment (Left, Center, Right, Decimal, Bar), và một TabLeader (None, Dots, Dashes, Line, Heavy, MiddleDot). Giống như Font, ParagraphFormat.StyleStyleName liên kết đoạn văn với một Style có tên, và ClearFormatting() xóa định dạng đoạn văn trực tiếp.

Danh sách với ListFormat

ListFormat (trên Paragraph.ListFormat hoặc DocumentBuilder.ListFormat) áp dụng định dạng danh sách cho một đoạn văn: ApplyBulletDefault()ApplyNumberDefault() chuyển nó thành danh sách có dấu đầu dòng hoặc danh sách có số mặc định, RemoveNumbers() loại bỏ hoàn toàn định dạng danh sách, và ListIndent()/ListOutdent() di chuyển nó giữa các cấp danh sách. ListFormat.List trả về định nghĩa List cơ bản, và ListFormat.ListLevel trả về ListLevel đang áp dụng cho đoạn văn đó, chứa các cài đặt theo cấp như NumberStyle, NumberFormat, Alignment (một ListLevelAlignment của Left, Center, hoặc Right), StartAt, RestartAfterLevel, một Font riêng cho mỗi cấp, và TrailingCharacter (một ListTrailingCharacter của Tab, Space, hoặc Nothing) kiểm soát khoảng cách giữa nhãn danh sách và văn bản đoạn. Định nghĩa danh sách mới đến từ ListCollection.Add(listTemplate) sử dụng một trong các mẫu ListTemplate tích hợp (BulletDefault, NumberArabicDot, NumberUppercaseRomanDot, và các tương tự), hoặc AddSingleLevelList cho danh sách một cấp; các danh sách trong tài liệu được liệt kê qua Document.Lists.

Khung văn bản với FrameFormat

Paragraph.FrameFormat là một đối tượng báo cáo chỉ đọc: mọi thuộc tính trên nó phản ánh một đoạn văn bản hiện tại trạng thái khung thay vì cho phép bạn đặt nó trực tiếp. IsFrame báo cáo liệu đoạn văn hiện đang là một khung hay không; Width, Height, và HeightRule báo cáo kích thước của nó; HorizontalPositionVerticalPosition, cùng với RelativeHorizontalPositionRelativeVerticalPosition, báo cáo vị trí neo so với trang, lề, cột hoặc đoạn văn; và HorizontalDistanceFromText/VerticalDistanceFromText báo cáo khoảng cách giữa khung và văn bản xung quanh. HorizontalAlignmentVerticalAlignment báo cáo cách nội dung căn chỉnh bên trong khung.

Tìm và Thay thế với Range và IReplacingCallback

Range.Replace — khả dụng trên Document.Range để thực hiện một lượt toàn tài liệu, hoặc trên Range của bất kỳ nút nào — có các overload cho một cặp mẫu/thay thế đơn giản và cho một cặp mẫu/thay thế kết hợp với một thể hiện FindReplaceOptions, hỗ trợ khớp dựa trên regex. FindReplaceOptions.MatchCaseFindWholeWordsOnly thu hẹp những gì được tính là khớp; Direction (FindReplaceDirection.Forward hoặc Backward) thiết lập thứ tự quét; ApplyFontApplyParagraphFormat cho phép một lượt thay thế mang định dạng sang văn bản thay thế; và một tập hợp các cờ Ignore* (IgnoreDeleted, IgnoreInserted, IgnoreFields, IgnoreFieldCodes, IgnoreFootnotes, IgnoreStructuredDocumentTags, IgnoreShapes, IgnoreOfficeMath) loại trừ các danh mục nội dung cụ thể khỏi việc khớp. Đối với logic thay thế mà một chuỗi cố định không thể diễn đạt, triển khai IReplacingCallback.Replacing(args) và đặt nó làm FindReplaceOptions.ReplacingCallback (hoặc truyền nó vào một trong các hàm khởi tạo FindReplaceOptions chấp nhận callback trực tiếp); tham số args là một ReplacingArgs tiết lộ Match, MatchNode, MatchOffset, và một chuỗi Replacement có thể đặt để callback có thể tính giá trị cho mỗi khớp. Một enum ReplaceAction liên quan (Replace, Skip, Stop) mô tả các kết quả khả dĩ cho một khớp duy nhất trong quá trình thực hiện.


Bắt đầu nhanh

Aspose.Words FOSS cho .NET có sẵn qua NuGet:

dotnet add package Aspose.Words.FOSS

Để biên dịch từ nguồn thay thế:

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

Sau đó thêm một tham chiếu dự án tới Aspose.Words.csproj. Để định dạng văn bản khi bạn viết, hãy thiết lập các thuộc tính DocumentBuilder.Font (Bold, Italic, Underline), các thuộc tính DocumentBuilder.ParagraphFormat (Alignment, thụt lề, khoảng cách), và DocumentBuilder.ListFormat (ApplyBulletDefault(), ApplyNumberDefault()) trước khi gọi Write(), Writeln(), hoặc InsertParagraph() — bộ xây dựng sẽ áp dụng trạng thái định dạng hiện tại cho mọi nội dung được viết cho đến khi bạn thay đổi lại, hoặc bọc một thay đổi tạm thời trong PushFont()/PopFont(). Để định dạng lại hoặc ghi lại văn bản đã có trong tài liệu, mở nó bằng new Document(fileName) và gọi Range.Replace() trên doc.Range — είτε phiên bản overload mẫu/đổi thế đơn giản, hoặc overload nhận một FindReplaceOptions với MatchCase, FindWholeWordsOnly, hoặc một IReplacingCallback tùy chỉnh — sau đó Save() kết quả.


Định dạng được hỗ trợ

Định dạngPhần mở rộngĐọcViết
DOCX.docx
DOCM.docm
DOTX.dotx
DOTM.dotm
Flat OPC (tất cả các biến thể)(đa dạng)
Markdown.md
Text.txt

Các lớp định dạng ở trên áp dụng theo cùng một cách bất kể tài liệu được tải lên hay lưu dưới định dạng nào trong số này. Phiên bản này không hỗ trợ DOC, RTF, ODT, HTML, EPUB, MHTML, MOBI, AZW3, hoặc WordML để đọc hoặc ghi, và không hỗ trợ PDF, XPS, hoặc xuất hình ảnh, vì bố cục trang và việc render nằm ngoài phạm vi của nó.


Mã nguồn mở & Giấy phép

Aspose.Words FOSS for .NET được phát hành dưới giấy phép MIT, miễn phí cho việc sử dụng thương mại và cá nhân mà không có phí bản quyền hoặc hạn chế tái phân phối. Mã nguồn đầy đủ, bao gồm các triển khai Font, ParagraphFormat, ListFormat, FrameFormat, và Range được mô tả ở trên, có sẵn trên GitHub trong Aspose.Words FOSS cho .NET repository.


Bắt đầu

Tài nguyên liên quan