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.Font trướ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ượng Run riêng lẻ.
  • Giới hạn Range.Replace trong 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ột Paragraph hoặc Section thay 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.AddReply dưới dạng các nút Comment — 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ânCá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ự địnhReplace đã được gọi trên Document.Range thay vì phạm vi của một nút hẹp hơnGọ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à saiDấ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ếnCá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úngGọ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ứcMô tả
RunMộ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.
ParagraphNú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.
ParagraphCollectionBộ sưu tập đã định kiểu của các nút Paragraph, ví dụ Body.Paragraphs.
RangeMột vùng liền mạch của tài liệu; hỗ trợ Text, Replace và Delete.
CommentMột bình luận dạng chuỗi được neo vào một vị trí trong văn bản.
CommentCollectionBộ sưu tập bình luận của tài liệu.
ListFormatKiể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.

Xem thêm

 Tiếng Việt