Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Khi làm việc với tài liệu, điều quan trọng là có thể dễ dàng trích xuất nội dung từ một phạm vi cụ thể trong tài liệu. Tuy nhiên, nội dung có thể bao gồm các phần tử phức tạp như đoạn văn, bảng, hình ảnh v.v…
Bất kể nội dung cần phải trích xuất là gì thì phương pháp để trích xuất nội dung đó sẽ luôn được xác định bởi các nút nào được chọn để trích xuất nội dung giữa. Đây có thể là toàn bộ văn bản hay chỉ là các đoạn văn bản đơn giản.
Có nhiều tình huống khả dĩ và do đó có nhiều loại nút khác nhau để xem xét khi trích xuất nội dung. Ví dụ, bạn có thể muốn trích xuất nội dung giữa:
Trong một số tình huống, bạn thậm chí còn cần kết hợp các loại nút khác nhau như trích xuất nội dung giữa đoạn và trường, hoặc giữa chạy và dấu sách.
Bài viết này cung cấp mã thực hiện cho việc chiết xuất văn bản giữa các nút khác nhau cũng như những ví dụ về các tình huống thông thường.
Đôi khi mục tiêu của việc chiết xuất nội dung là sao chép hoặc lưu trữ nó riêng biệt trong một tài liệu mới. Ví dụ, bạn có thể trích xuất nội dung và
Điều này có thể đạt được dễ dàng bằng cách sử dụng Aspose.Words và mã thực hiện bên dưới.
Mã trong phần này giải quyết tất cả các tình huống có thể mô tả ở trên với một phương pháp tổng quát và có thể tái sử dụng. Mở rộng chung của kỹ thuật này là:
Chúng ta sẽ làm việc với tài liệu dưới đây trong bài viết này. Như bạn thấy nó chứa một loại nội dung đa dạng. Cũng hãy lưu ý rằng tài liệu có một phần thứ hai bắt đầu ở giữa trang đầu tiên. Một dấu sách và bình luận cũng hiện diện trong tài liệu nhưng không hiển thị trong hình chụp màn hình dưới đây.

Để chiết xuất nội dung từ tài liệu của bạn bạn cần gọi phương thức ExtractContent dưới đây và truyền các tham số phù hợp.
Cơ sở của phương pháp này bao gồm việc tìm các node ở cấp khối (các đoạn văn và bảng) và sao chép chúng để tạo ra bản sao giống hệt. Nếu các nút đánh dấu được vượt qua là ở mức khối thì phương pháp này có thể đơn giản sao chép nội dung ở mức độ đó và thêm nó vào mảng.
Tuy nhiên, nếu các nút đánh dấu là inline (một con của một đoạn văn), thì tình huống trở nên phức tạp hơn, vì phải chia đoạn văn tại nút inline, dù là một chuỗi chạy, các trường đánh dấu sách, v.v… Nội dung trong các nút cha được ghim đã không hiện diện giữa các dấu hiệu là bị xóa bỏ. Quy trình này được dùng để đảm bảo rằng các nút inline vẫn sẽ giữ lại định dạng của đoạn văn cha.
Phương pháp cũng sẽ chạy kiểm tra trên các nút được truyền dưới dạng tham số và ném một ngoại lệ nếu bất kỳ nút nào không hợp lệ. Các tham số cần truyền cho phương thức này là:
StartNode và EndNode. Hai tham số đầu tiên là các nút xác định nơi mà việc trích xuất nội dung bắt đầu và kết thúc tương ứng. Các node này có thể là cả ở mức khối (Paragraph, Table) hoặc ở mức dòng (ví dụ như Run, FieldStart, BookmarkStart, v.v…):
IsInclusive. Định nghĩa nếu các dấu chỉ được bao gồm trong việc trích xuất hoặc không. Nếu tùy chọn này được đặt thành false và cùng một nút hoặc các nút liên tiếp được truyền qua, thì một danh sách rỗng sẽ được trả về:
Việc thực hiện phương thức ExtractContent bạn có thể tìm thấy ở here. Phương pháp này sẽ được tham chiếu trong các kịch bản trong bài viết này.
Chúng tôi cũng định nghĩa một phương thức tùy chỉnh để dễ dàng tạo ra một tài liệu từ các nút đã trích xuất. Phương pháp này được sử dụng trong nhiều kịch bản dưới đây và đơn giản là tạo một tài liệu mới và nhập nội dung đã trích xuất vào đó.
Mẫu mã sau cho thấy cách lấy một danh sách các nút và chèn chúng vào một tài liệu mới:
Đây là cách sử dụng phương pháp trên để trích xuất nội dung giữa các đoạn cụ thể. Trong trường hợp này, chúng ta muốn trích xuất phần thân của lá thư được tìm thấy ở nửa đầu của tài liệu. Chúng ta có thể biết rằng nó nằm giữa đoạn thứ 7 và 11.
Mã ở dưới đây thực hiện nhiệm vụ này. Các đoạn thích hợp được trích xuất bằng phương pháp getChild trên tài liệu và truyền các chỉ số đã chỉ định. Chúng tôi sau đó truyền các nút này đến phương pháp ExtractContent và tuyên bố rằng chúng phải được bao gồm trong việc trích xuất. Phương pháp này sẽ trả về nội dung sao chép giữa các nút này, sau đó được chèn vào một tài liệu mới.
Mã ví dụ sau cho thấy cách trích xuất nội dung giữa các đoạn văn cụ thể bằng phương pháp ExtractContent ở trên:
Tài liệu đầu ra có hai đoạn văn được trích xuất.

Chúng tôi có thể trích xuất nội dung giữa bất kỳ kết hợp nào của các nút cấp khối hoặc nhúng. Trong trường hợp này dưới đây chúng ta sẽ trích xuất nội dung giữa đoạn văn đầu tiên và bảng trong phần thứ hai bao gồm cả trong. Chúng ta lấy các nút đánh dấu bằng cách gọi phương thức getFirstParagraph và getChild trên phần thứ hai của tài liệu để lấy các nút Paragraph và Table thích hợp. Để có biến thể nhẹ nhàng, hãy nhân đôi nội dung và chèn nó ngay bên dưới bản gốc.
Ví dụ mã sau cho thấy cách trích xuất nội dung giữa đoạn văn và bảng bằng phương pháp ExtractContent:
Nội dung giữa đoạn văn và bảng đã được nhân đôi dưới đây là kết quả.

Bạn có thể cần phải trích xuất nội dung giữa các đoạn văn cùng kiểu hoặc khác kiểu, chẳng hạn như giữa các đoạn văn được đánh dấu bằng các kiểu tiêu đề.
Mã dưới đây cho thấy làm thế nào để đạt được điều này. Nó là một ví dụ đơn giản sẽ trích xuất nội dung giữa lần sử dụng đầu tiên của các kiểu “Tiêu đề 1” và “Tiêu đề 3” mà không lấy tiêu đề ra. Để làm như vậy chúng ta đặt tham số cuối cùng là false, điều này chỉ ra rằng các nút đánh dấu không nên được bao gồm.
Trong một sự thực hiện đúng đắn, điều này nên được chạy trong một vòng lặp để trích xuất nội dung giữa tất cả các đoạn văn của những phong cách này từ tài liệu. Nội dung đã được chiết xuất sẽ được sao chép vào một tài liệu mới.
Mã ví dụ sau cho thấy cách lấy nội dung giữa các đoạn văn với kiểu đặc biệt sử dụng phương pháp ExtractContent:
Dưới đây là kết quả của phép toán trước đó.

Bạn có thể trích xuất nội dung giữa các nút inline như một Run cũng vậy. Runs từ các đoạn khác nhau có thể được truyền qua các dấu hiệu. Mã dưới đây cho thấy cách trích xuất văn bản cụ thể giữa cùng một nút Paragraph.
Mã ví dụ dưới đây cho thấy cách trích xuất nội dung giữa các lần chạy cụ thể của cùng một đoạn văn bằng phương pháp ExtractContent:
Văn bản được trích xuất hiển thị trên console

Để sử dụng một trường làm dấu hiệu, nút FieldStart nên được truyền đi. Tham số cuối cùng của phương thức ExtractContent sẽ định nghĩa nếu toàn bộ trường được bao gồm hay không. Hãy trích xuất nội dung giữa trường “FullName” và một đoạn văn trong tài liệu. Chúng tôi sử dụng phương pháp moveToMergeField của lớp DocumentBuilder. Điều này sẽ trả về nút FieldStart từ tên của trường nhập hợp nhất được truyền cho nó.
Trong trường hợp của chúng ta hãy đặt tham số cuối cùng được truyền đến phương thức ExtractContent thành false để loại trừ trường khỏi quá trình trích xuất. Chúng tôi sẽ chuyển đổi nội dung được chiết xuất thành PDF.
Dưới đây là ví dụ về cách trích xuất nội dung giữa một trường cụ thể và đoạn văn trong tài liệu bằng phương pháp ExtractContent:
Nội dung trích xuất giữa trường và đoạn văn, không có các nút đánh dấu trường và đoạn được hiển thị sang PDF.

Trong một tài liệu, nội dung được định nghĩa trong một con dấu được bao bọc bởi các nút BookmarkStart và BookmarkEnd. Nội dung được tìm thấy giữa hai nút này tạo thành một dấu trang lưu. Bạn có thể truyền qua bất kỳ một trong hai nút này như là bất kỳ dấu hiệu nào, thậm chí cả từ các dấu hiệu khác nhau, miễn là dấu hiệu bắt đầu xuất hiện trước dấu hiệu kết thúc trong tài liệu.
Trong tài liệu mẫu của chúng tôi, chúng tôi có một con dấu, được đặt tên là “Bookmark1”. Nội dung của dấu thư mục này là nội dung được đánh dấu nổi bật trong tài liệu của chúng tôi:

Chúng tôi sẽ trích xuất nội dung này vào một tài liệu mới bằng mã sau. Cụm từ IsInclusive tham số hiển thị cách giữ lại hoặc loại bỏ dấu đánh chỉ mục.
Mã ví dụ cho thấy cách trích xuất nội dung được tham chiếu bởi một dấu hiệu sử dụng phương pháp ExtractContent:
Kết quả đã được trích xuất với tập IsInclusive tham số được đặt thành true. Bản sao sẽ giữ lại con dấu cũng vậy.

Kết quả được trích xuất với IsInclusive tham số được đặt thành false. Bản sao chứa nội dung nhưng không có dấu sách.

Một chú thích được tạo thành từ các CommentRangeStart, CommentRangeEnd và các nút Comment. Tất cả các node này đều là inline. Hai nút đầu tiên bao gồm nội dung trong tài liệu được tham chiếu bởi chú thích, như thấy trong hình chụp màn hình dưới đây.
Điểm nút Comment chính nó là một InlineStory có thể chứa các đoạn và dòng. Nó đại diện cho thông điệp của bình luận như được nhìn thấy dưới dạng bong bóng bình luận trong thanh xem xét. Như nút này là trong dòng và là hậu duệ của một cơ thể bạn cũng có thể trích xuất nội dung bên trong tin nhắn này cũng vậy.
Trong tài liệu của chúng tôi, chúng tôi có một chú thích. Hãy hiển thị nó bằng cách hiển thị mã đánh dấu trong tab “Xem lại”:

Bình luận bao gồm tiêu đề và đoạn văn đầu tiên và bảng trong phần thứ hai. Chúng ta hãy trích xuất nhận xét này vào một tài liệu mới. Tuỳ chọn IsInclusive chỉ ra liệu chú thích đó có được giữ lại hay bị bỏ đi.
Ví dụ mã sau cho thấy cách thực hiện điều này là dưới đây
Đầu tiên, đầu ra được trích xuất với IsInclusive tham số được đặt thành true. Bản sao sẽ chứa cả chú thích đó.

Thứ hai, đầu ra được trích xuất với Inclusives đặt thành false. Bản sao chứa nội dung nhưng không có chú thích.

Aspose.Words có thể được sử dụng không chỉ để tạo ra Microsoft Word các tài liệu bằng cách xây dựng chúng một cách động hoặc hợp nhất các mẫu với dữ liệu, nhưng cũng để phân tích các tài liệu nhằm trích xuất các phần tử tài liệu riêng biệt như tiêu đề, chân trang, đoạn văn, bảng, hình ảnh và những thứ khác. Một nhiệm vụ khả thi khác là tìm tất cả văn bản có định dạng hoặc phong cách cụ thể.
Dùng lớp DocumentVisitor để thực hiện tình huống này. Lớp này tương ứng với mẫu thiết kế Visitor nổi tiếng. Với DocumentVisitor, bạn có thể định nghĩa và thực thi các hoạt động tùy chỉnh mà yêu cầu phải liệt kê trên cây tài liệu.
DocumentVisitor cung cấp một tập các VisitXXX phương pháp được gọi khi một yếu tố tài liệu cụ thể (node) gặp phải. Ví dụ như, VisitParagraphStart được gọi khi tìm thấy đầu của một đoạn văn bản và VisitParagraphEnd được gọi khi kết thúc của một đoạn văn bản. Mỗi DocumentVisitor.VisitXXX phương thức chấp nhận đối tượng tương ứng mà nó gặp phải để bạn có thể sử dụng như cần (ví dụ lấy định dạng), ví dụ cả VisitParagraphStart và VisitParagraphEnd đều chấp nhận một đối tượng Paragraph.
Mỗi DocumentVisitor.VisitXXX phương pháp trả về một giá trị VisitorAction kiểm soát việc liệt kê các nút. Bạn có thể yêu cầu tiếp tục đếm số, bỏ qua nút hiện tại (nhưng tiếp tục đếm số) hoặc dừng đếm các nút.
Đây là các bước bạn nên làm theo để lập trình xác định và trích xuất nhiều phần khác nhau của một tài liệu:
DocumentVisitor cung cấp những thực thi mặc định cho tất cả các phương pháp DocumentVisitor.VisitXXX. Điều này giúp dễ dàng tạo ra người truy cập tài liệu mới, vì chỉ cần ghi đè lại các phương thức yêu cầu cho người truy cập cụ thể đó. Không cần phải ghi đè tất cả các phương thức của người truy cập.
Ví dụ sau cho thấy cách sử dụng mẫu Visitor để thêm các hoạt động mới vào mô hình đối tượng Aspose.Words. Trong trường hợp này, chúng ta tạo ra một bộ chuyển đổi tài liệu đơn giản sang một định dạng văn bản:
Cách lấy lại văn bản từ tài liệu là:
SaveFormat.Text đi.” Internally, nó gọi hàm save as text vào một luồng bộ nhớ và trả về chuỗi kết quả
“- Sử dụng Node.getText để lấy văn bản với tất cả các ký tự Microsoft Word kiểm soát bao gồm mã trường”Node.GetText và Node.ToStringMột văn bản word có thể chứa các ký tự kiểm soát chỉ định các phần tử đặc biệt như trường, cuối của ô, cuối của phần, v.v.. Danh sách đầy đủ các ký tự điều khiển có thể của Word được xác định trong lớp ControlChar. GetText" phương pháp trả về văn bản với tất cả các ký tự điều khiển hiện diện trong nút.
Gọi đến ToString trả về biểu diễn văn bản thuần túy của tài liệu mà không có các ký tự điều khiển. Để biết thêm thông tin về xuất sang văn bản thuần túy, hãy xem Using SaveFormat.Text.
Mã ví dụ sau cho thấy sự khác biệt giữa việc gọi các phương thức GetText và ToString trên một nút:
SaveFormat.TextVí dụ này lưu tài liệu theo cách sau đây:
Mẫu mã sau cho thấy cách lưu một tài liệu ở định dạng TXT:
Bạn có thể cần trích xuất hình ảnh tài liệu để thực hiện một số tác vụ. Aspose.Words cho phép bạn làm điều này cũng vậy.
Mã ví dụ sau cho thấy cách trích xuất ảnh từ một tài liệu":
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.