Làm việc với Văn bản
Làm việc với Văn bản
Văn bản trong tài liệu Word được tổ chức thành các nút Run (các ký tự liên tiếp chia sẻ cùng một định dạng phông chữ) được nhóm bên trong các nút Paragraph. Aspose.Words FOSS cho .NET cung cấp cả hai trực tiếp, cùng với Font cho định dạng ký tự, ParagraphFormat cho định dạng ở mức đoạn văn, và Range để đọc hoặc thay thế văn bản ở bất kỳ phần nào của cây. Hướng dẫn này đề cập đến các run và phông chữ, định dạng đoạn văn, đọc và thay thế văn bản, nhận xét, và định dạng danh sách ở mức đoạn văn.
Run và Định dạng Ký tự
Một Run đại diện cho một đoạn văn bản có cùng một bộ định dạng; thuộc tính Text của nó chứa nội dung văn bản thuần và thuộc tính Font (một đối tượng Font) chứa định dạng cấp ký tự — Name, Size, Bold, Italic, Underline, Color, HighlightColor, Subscript/Superscript, StrikeThrough, và nhiều hơn nữa. Font.ClearFormatting() đặt lại phông chữ của run về mặc định. Các run của một đoạn văn có sẵn thông qua thuộc tính Runs của nó, một RunCollection.
Đoạn văn và Định dạng Đoạn văn
Paragraph là một nút hợp thành chứa các run (và nội dung nội tuyến khác) của một đoạn văn; các đoạn văn của tài liệu hoặc thân tài liệu được hiển thị dưới dạng ParagraphCollection (Body.Paragraphs). Paragraph.ParagraphFormat (một đối tượng ParagraphFormat) kiểm soát bố cục cấp đoạn văn — Alignment, thụt lề (LeftIndent, RightIndent, FirstLineIndent), khoảng cách (SpaceBefore, SpaceAfter, LineSpacing, LineSpacingRule), và hành vi phân trang (KeepTogether, KeepWithNext, PageBreakBefore, WidowControl). ParagraphFormat.ClearFormatting() đặt lại chúng về mặc định, và Paragraph.JoinRunsWithSameFormatting() hợp nhất các run liền kề có cùng định dạng.
Đọc và Thay thế Văn bản bằng Range
Mỗi nút chứa nội dung — một Document, Section, Paragraph hoặc Run — sẽ tiết lộ một Range. Range.Text trả về văn bản thuần của mọi thứ bên trong phạm vi đó, và Range.Replace(pattern, replacement) thực hiện tìm-và-thay thế chỉ trong phạm vi đó, vì vậy bạn có thể, ví dụ, thay thế văn bản trong một đoạn mà không ảnh hưởng đến phần còn lại của tài liệu. Range.Delete() xóa hoàn toàn nội dung của phạm vi.
Comments
Một nút Comment gắn một bình luận vào một vị trí trong văn bản; tạo một nút bằng new Comment(doc, author, initial, dateTime) và đặt nội dung của nó bằng SetText(text), sau đó chèn nó vào tài liệu như bất kỳ nút nào khác. Comment.AddReply(author, initial, dateTime, text) đính kèm một phản hồi dạng chuỗi, và RemoveReply(reply) / RemoveAllReplies() xóa chúng. Các bình luận của tài liệu được tập hợp trong một CommentCollection.
Định dạng danh sách ở mức độ đoạn văn
Paragraph.ListFormat (một đối tượng ListFormat) báo cáo và kiểm soát xem một đoạn văn có phải là một phần của danh sách hay không: IsListItem và ListLevelNumber báo cáo trạng thái hiện tại của nó, ApplyBulletDefault() và ApplyNumberDefault() chuyển đoạn văn thành mục danh sách dấu đầu dòng hoặc đánh số mặc định, ListIndent() / ListOutdent() thay đổi mức độ lồng danh sách của nó, và RemoveNumbers() chuyển nó trở lại thành một đoạn văn bình thường.
Mẹo và Thực hành Tốt nhất
- Đặt các thuộc tính phông chữ trên
DocumentBuilder.Fonttrước khi viết văn bản bằng trình xây dựng thay vì viết văn bản trước và sau đó định dạng lại các đối tượngRunriêng lẻ. - Giới hạn
Range.Replacetrong phạm vi nhỏ nhất bao phủ những gì bạn thực sự muốn thay đổi — gọi nó trên phạm vi của mộtParagraphhoặcSectionthay vì toàn bộ tài liệu khi thay đổi không nên áp dụng trên toàn tài liệu. - Gọi
Paragraph.JoinRunsWithSameFormatting()sau một loạt các chỉnh sửa theo chương trình để tránh cấu trúc chạy bị phân mảnh không cần thiết. - Sử dụng
ListFormat.ApplyBulletDefault()/ApplyNumberDefault()để có danh sách mặc định nhanh thay vì tự xây dựng định nghĩa danh sách khi các mặc định tích hợp đã đủ. - Đọc kết quả
Comment.AddReplydưới dạng các nútComment— các phản hồi là các đối tượng bình luận đầy đủ, không phải chuỗi thông thường.
Các vấn đề thường gặp
| Vấn đề | Nguyên nhân | Cách khắc phục |
|---|---|---|
Định dạng Font của một Run không làm thay đổi trực quan văn bản liền kề | Văn bản liền kề nằm trong một Run khác với một thể hiện Font riêng của nó | Xác định và định dạng mọi Run bị ảnh hưởng, hoặc thiết lập định dạng qua DocumentBuilder.Font trước khi ghi |
Range.Replace thay đổi văn bản bên ngoài khu vực dự định | Replace đã được gọi trên Document.Range thay vì phạm vi của một nút hẹp hơn | Gọi Replace trên Paragraph cụ thể, Section, hoặc Range của node khác |
Một đoạn văn trông giống như một mục danh sách nhưng IsListItem là sai | Dấu đầu dòng/số là văn bản thủ công, không phải định dạng danh sách thực | Áp dụng định dạng danh sách thực với ListFormat.ApplyBulletDefault() hoặc ApplyNumberDefault() thay vì các ký tự đã gõ |
Tài liệu có nhiều nút Run hơn dự kiến | Các chỉnh sửa nhỏ lặp lại làm tách các run mà không nối lại chúng | Gọi Paragraph.JoinRunsWithSameFormatting() sau các lô chỉnh sửa |
FAQ
Sự khác nhau giữa Run và Paragraph là gì?
Một Run là một đoạn văn bản chia sẻ một bộ định dạng ký tự (Font); một Paragraph là nút tổng hợp chứa một hoặc nhiều đoạn chạy (và các nội dung nội tuyến khác) cùng với định dạng ở cấp độ đoạn văn (ParagraphFormat).
Làm sao tôi có thể đọc toàn bộ văn bản trong một tài liệu hoặc phần?
Đọc thuộc tính Text của Range của nút đó — ví dụ, document.Range.Text hoặc section.Range.Text.
Làm sao tôi có thể tìm và thay thế văn bản trong một đoạn duy nhất?
Gọi Replace(pattern, replacement) trên Range của Paragraph đó thay vì trên Document.Range.
Làm sao tôi có thể thêm bình luận vào tài liệu?
Tạo nó bằng new Comment(doc, author, initial, dateTime), đặt văn bản của nó bằng SetText(text), và chèn nó vào cây; trả lời nó bằng Comment.AddReply(author, initial, dateTime, text).
Làm sao tôi có thể chuyển một đoạn thành mục danh sách có dấu đầu dòng?
Gọi ApplyBulletDefault() trên ListFormat của đoạn đó; sử dụng ApplyNumberDefault() cho danh sách có số thứ tự thay thế.
API Reference Tóm tắt
| Lớp/Phương thức | Mô tả |
|---|---|
Run | Một đoạn văn bản chia sẻ một bộ định dạng ký tự. |
Font | Định dạng cấp ký tự — tên, kích thước, in đậm, in nghiêng, màu sắc và hơn nữa. |
Paragraph | Nút tổng hợp chứa các đoạn và định dạng của một đoạn văn. |
ParagraphFormat | Định dạng cấp đoạn — căn chỉnh, thụt lề, khoảng cách, phân trang. |
ParagraphCollection | Bộ sưu tập đã định kiểu của các nút Paragraph, ví dụ Body.Paragraphs. |
Range | Một vùng liền mạch của tài liệu; hỗ trợ Text, Replace và Delete. |
Comment | Một bình luận dạng chuỗi được neo vào một vị trí trong văn bản. |
CommentCollection | Bộ sưu tập bình luận của tài liệu. |
ListFormat | Kiểm soát việc một đoạn văn có tham gia vào danh sách hay không và cách thức tham gia. |