Napraw nieprawidłowy zbiór pól formularza i zapisz

Wstęp

Powitanie! Jeśli pracujesz z polami formularzy w dokumentach i napotykasz problemy z nieprawidłowymi zbiorami pól formularzy, jesteś we właściwym miejscu. W tym samouczku omówimy, jak naprawić nieprawidłowe pola formularza i zapisać dokument za pomocą Groupdocs.Editor dla .NET. Poprowadzimy Cię przez proces krok po kroku, upewniając się, że masz wszystkie szczegóły potrzebne do jego płynnego działania. Zacznijmy!

Warunki wstępne

Zanim przejdziemy do kodu, jest kilka rzeczy, które musisz mieć na miejscu:

  • Groupdocs.Editor dla .NET: Upewnij się, że zainstalowałeś bibliotekę Groupdocs.Editor dla .NET. Możesz go pobraćTutaj.
  • Środowisko programistyczne: Należy mieć skonfigurowane środowisko programistyczne .NET, takie jak Visual Studio.
  • Podstawowa znajomość języka C#: W tym samouczku założono, że masz podstawową wiedzę na temat programowania w języku C#.

Importuj przestrzenie nazw

Najpierw musisz zaimportować niezbędne przestrzenie nazw do swojego projektu C#. Dodaj następujące wiersze na początku pliku kodu:

using GroupDocs.Editor.Formats;
using GroupDocs.Editor.Options;
using GroupDocs.Editor.Words.FieldManagement;
using System;
using System.IO;

Krok 1: Uzyskaj ścieżkę pliku wejściowego

Pierwszym krokiem jest określenie ścieżki do pliku wejściowego. Plik ten powinien być dokumentem DOCX zawierającym pola formularza.

string inputFilePath = Constants.SampleLegacyFormFields_docx;

Krok 2: Utwórz strumień ze ścieżki pliku

Następnie utwórz strumień plików, aby odczytać dokument wejściowy. Umożliwi to załadowanie dokumentu do edytora.

using (FileStream fs = File.OpenRead(inputFilePath))

Krok 3: Utwórz opcje ładowania dokumentu

Na tym etapie musisz utworzyć opcje ładowania dokumentu. Jeśli dokument jest chroniony hasłem, możesz określić hasło. W tym przykładzie dokument nie jest chroniony, więc hasło jest ignorowane.

WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
loadOptions.Password = "some_password_to_open_a_document";

Krok 4: Załaduj dokument do instancji edytora

Teraz załaduj dokument z określonymi opcjami do instancji Editor. Tutaj będą miały miejsce główne operacje na dokumencie.

using (Editor editor = new Editor(delegate { return fs; }, delegate { return loadOptions; }))

Krok 4.1: Przeczytaj instancję FormFieldManager

TheFormFieldManager instancja odpowiada za zarządzanie polami formularzy w dokumencie. Aby uzyskać dostęp do pól formularza i manipulować nimi, musisz przeczytać tę instancję.

FormFieldManager fieldManager = editor.FormFieldManager;

Krok 4.2: Przeczytaj kolekcję FormField

TheFormFieldCollection zawiera wszystkie pola formularza w dokumencie. Przeczytasz tę kolekcję, aby sprawdzić i naprawić nieprawidłowe pola formularza.

FormFieldCollection collection = fieldManager.FormFieldCollection;

Krok 4.3: Automatyczna naprawa nieprawidłowych pól formularza

Spróbuj automatycznie naprawić nieprawidłowe pola formularza w dokumencie. Jest to wstępny krok w celu rozwiązania oczywistych problemów.

fieldManager.FixInvalidFormFieldNames(new InvalidFormField[0]);
collection = fieldManager.FormFieldCollection;

Krok 4.4: Sprawdź, czy nie ma nieprawidłowych pól formularza

Sprawdź, czy po próbie automatycznej naprawy pozostały jakieś nieprawidłowe pola formularza.

bool hasInvalidFormFields = fieldManager.HasInvalidFormFields();
Console.WriteLine("FormFieldCollection contains invalid items: {0}", hasInvalidFormFields);

Krok 4.4.1: Uzyskaj wszystkie nieprawidłowe nazwy pól formularza

Pobierz nazwy wszystkich nieprawidłowych pól formularza. Nazwy te zostaną użyte do naprawienia pól.

var invalidFormFields = fieldManager.GetInvalidFormFieldNames();

Krok 4.4.2: Utwórz unikalne nazwy dla nieprawidłowych pól

Dla każdego nieprawidłowego pola formularza utwórz unikalną nazwę. Zapewnia to brak konfliktów z istniejącymi nazwami pól formularza.

foreach (var invalidItem in invalidFormFields)
{
    invalidItem.FixedName = string.Format("{0}_{1}", invalidItem.Name, Guid.NewGuid());
}

Krok 4.4.3: Napraw nieprawidłowe pola formularza

Napraw nieprawidłowe pola formularza, używając unikalnych nazw utworzonych w poprzednim kroku.

fieldManager.FixInvalidFormFieldNames(invalidFormFields);
collection = fieldManager.FormFieldCollection;

Krok 5: Utwórz opcje zapisywania dokumentu

Skonfiguruj opcje zapisywania dokumentu. Obejmuje to określenie formatu i wszelkich dodatkowych ustawień zapisywania.

WordProcessingFormats docFormat = WordProcessingFormats.Docx;
WordProcessingSaveOptions saveOptions = new WordProcessingSaveOptions(docFormat);

Krok 5.1: Zoptymalizuj wykorzystanie pamięci

Jeśli dokument jest duży i może powodowaćOutOfMemoryExceptionwłącz opcję optymalizacji pamięci.

saveOptions.OptimizeMemoryUsage = true;

Krok 5.2: Chroń dokument przed zapisem

Aby zabezpieczyć dokument przed modyfikacją, za wyjątkiem pól formularza, należy ustawić hasło zabezpieczające.

saveOptions.Protection = new WordProcessingProtection(WordProcessingProtectionType.AllowOnlyFormFields, "write_password");

Krok 6: Zapisz dokument

Na koniec zapisz dokument z określonymi opcjami zapisywania. Przygotuj strumień pamięci do zapisania dokumentu wyjściowego.

using (MemoryStream outputStream = new MemoryStream())
{
    editor.Save(outputStream, saveOptions);
}
Console.WriteLine("FixInvalidFormFieldCollectionAndSave routine has successfully finished");

Wniosek

I masz to! Pomyślnie naprawiłeś nieprawidłowe pola formularza i zapisałeś dokument za pomocą Groupdocs.Editor dla .NET. Ten przewodnik krok po kroku powinien był sprawić, że proces będzie jasny i łatwy w zarządzaniu. Jeśli napotkasz jakiekolwiek problemy lub masz pytania, nie wahaj się sprawdzićdokumentacja lub skontaktuj się z namiwsparcie.

Często zadawane pytania

Co się stanie, jeśli mój dokument jest chroniony hasłem?

Hasło możesz określić w plikuWordProcessingLoadOptions aby otworzyć dokument.

Skąd mam wiedzieć, czy istnieją nieprawidłowe pola formularza?

UżyjHasInvalidFormFields metoda sprawdzania, czy w dokumencie nie ma nieprawidłowych pól formularza.

Czy mogę naprawić pola formularza bez zmiany ich nazw?

Aby uniknąć konfliktów, zaleca się utworzenie unikalnych nazw dla nieprawidłowych pól formularza.

W jakich formatach mogę zapisać dokument?

Możesz zapisać dokument w różnych formatach, takich jak DOCX, PDF i inne, ustawiając odpowiednieWordProcessingFormats.

Jak zoptymalizować wykorzystanie pamięci podczas zapisywania dużych dokumentów?

WłączOptimizeMemoryUsage opcja wWordProcessingSaveOptions wydajną obsługę dużych dokumentów.