Cách xóa trang trắng trong Word bằng C#

Hướng dẫn nhanh này được thiết kế để giải thích cách xóa trang trống trong Word bằng C# như DOCX, DOC, v.v.. Hướng dẫn này cung cấp chi tiết để định cấu hình môi trường cùng với các bước thực hiện cho tác vụ và mã mẫu triển khai logic hoàn chỉnh để xóa trang trống trong Word bằng C#. Bạn có thể chạy mã này mà không cần cài đặt bất kỳ phần mềm bên thứ ba nào bằng bất kỳ hệ điều hành nào như Windows, Linux hoặc macOS.

Các bước để xóa trang trống trong Word bằng C#

  1. Định cấu hình dự án để thêm thư viện Aspose.Words vào dự án
  2. Tải tệp Word nguồn vào đối tượng lớp Document để xóa các trang trống
  3. Phân tích cú pháp qua tất cả các trang trong tài liệu nguồn và tìm nạp từng trang riêng biệt
  4. Tạo một tài liệu riêng với mỗi trang chỉ từ tài liệu nguồn
  5. Phân tích tài liệu một trang này và kiểm tra xem có bất kỳ section nào chứa nút văn bản/hình dạng nào đó hay không
  6. Duy trì danh sách tất cả các trang không trống trong tài liệu gốc
  7. Nối tất cả các trang không trống vào tệp Word mới
  8. Lưu tệp này chỉ có các trang với một số văn bản hoặc hình dạng

Các bước này cung cấp thông tin chi tiết để xóa trang trống trong Word bằng C#. Trước tiên, bạn tải tệp Word nguồn rồi phân tích cú pháp qua từng trang trong đó sao cho mỗi trang một tài liệu Word mới được tạo. Điều này là bắt buộc vì chúng ta phải phân tích từng trang riêng biệt và các tính năng của lớp Tài liệu sẽ giúp chúng ta xác định các trang không trống. Trong quá trình phân tích cú pháp, mỗi trang không trống sẽ được thêm vào một tệp Word mới sẽ chứa tất cả các trang đó.

Code Xóa Trang Trắng Trong Word bằng C#

using System.Collections;
using Aspose.Words;
namespace DeleteABlankPageInWordUsingCSharp
{
class Program
{
static void Main(string[] args) // Main function to delete a blank page in Word using CSharp
{
// Instantiate the license to avoid any trial version limitations
// and watermark in the output Word file
Aspose.Words.License licDeleteBlankPages= new Aspose.Words.License();
licDeleteBlankPages.SetLicense("Aspose.Words.lic");
// Load the Word file having blank pages in it
Document originalDocWithFewBlankPages = new Document("WordFileWithBlankPages.docx");
// Declare an array to store page numbers of the empty or blank pages
ArrayList listOfBlankPageNumbers = new ArrayList();
listOfBlankPageNumbers.Add(-1);
// Extract each page of the loaded document as a separate Word document
int totalPagesInOriginalDoc = originalDocWithFewBlankPages.PageCount;
for (int iCount = 0; iCount < totalPagesInOriginalDoc; iCount++)
{
// Create a new Word document containing the single page
Document DocWithOnePage = originalDocWithFewBlankPages.ExtractPages(iCount, 1);
// Parse through all the sections of the newly created document
// to count text segments and shapes if any
int shapesCounter = 0;
string pageText = "";
foreach (Section docSection in DocWithOnePage.Sections)
{
// Extract text from the section and also get shapes count in the newly created document
pageText = pageText + docSection.Body.ToString(SaveFormat.Text);
shapesCounter += docSection.Body.GetChildNodes(NodeType.Shape, true).Count;
}
// Check if the extracted page is null or not and also check if shapes count is 0 or not
// If text is blank and shapes count is 0, it means the page is blank
if (string.IsNullOrEmpty(pageText.Trim()) && shapesCounter == 0)
listOfBlankPageNumbers.Add(iCount);
}
listOfBlankPageNumbers.Add(totalPagesInOriginalDoc);
// Add all the non-empty pages to the final document
Document nonEmptyDocument = (Document)originalDocWithFewBlankPages.Clone(false);
nonEmptyDocument.RemoveAllChildren();
for (int iCount = 1; iCount < listOfBlankPageNumbers.Count; iCount++)
{
int index = (int)listOfBlankPageNumbers[iCount - 1] + 1;
int count = (int)listOfBlankPageNumbers[iCount] - index;
if (count > 0)
nonEmptyDocument.AppendDocument(originalDocWithFewBlankPages.ExtractPages(index, count), ImportFormatMode.KeepSourceFormatting);
}
// Save the output file having all the non-empty pages
nonEmptyDocument.Save(@"NonEmptyPages.docx");
System.Console.WriteLine("Done");
}
}
}

Mã này để xóa trang trống khỏi tài liệu Word bằng C# mô tả logic hoàn chỉnh trong đó mỗi trang của tệp Word nguồn được lưu vào một tệp Word mới và sau đó được phân tích cho bất kỳ nội dung nào trong đó. Trong quá trình này, đầu trang và chân trang không được xem xét tuy nhiên bạn cũng có thể bao gồm chúng. Khi tất cả các trang được phân tích và số của chúng được lưu trong một mảng, mảng này được sử dụng để nối tất cả các trang đó vào một tệp Word mới.

Trong hướng dẫn này, chúng tôi đã xóa tất cả các trang trống khỏi tệp Word. Nếu bạn muốn tìm hiểu một số chức năng khác như chuyển đổi tài liệu Word sang HTML, hãy tham khảo bài viết trên cách chuyển đổi tài liệu Word sang HTML bằng C#.

 Tiếng Việt