แก้ไขการรวบรวมและบันทึกฟิลด์แบบฟอร์มที่ไม่ถูกต้อง
การแนะนำ
ยินดีต้อนรับ! หากคุณกำลังทำงานกับช่องแบบฟอร์มในเอกสารและประสบปัญหาเกี่ยวกับคอลเลกชันช่องแบบฟอร์มที่ไม่ถูกต้อง แสดงว่าคุณมาถูกที่แล้ว ในบทช่วยสอนนี้ เราจะเจาะลึกวิธีแก้ไขฟิลด์แบบฟอร์มที่ไม่ถูกต้อง และบันทึกเอกสารของคุณโดยใช้ Groupdocs.Editor สำหรับ .NET เราจะแนะนำคุณตลอดกระบวนการทีละขั้นตอน เพื่อให้มั่นใจว่าคุณมีรายละเอียดทั้งหมดที่จำเป็นเพื่อให้ทำงานได้อย่างราบรื่น มาเริ่มกันเลย!
ข้อกำหนดเบื้องต้น
ก่อนที่เราจะพูดถึงโค้ด มีบางสิ่งที่คุณต้องมี:
- Groupdocs.Editor สำหรับ .NET: ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งไลบรารี Groupdocs.Editor สำหรับ .NET แล้ว คุณสามารถดาวน์โหลดได้ที่นี่.
- สภาพแวดล้อมการพัฒนา: คุณควรตั้งค่าสภาพแวดล้อมการพัฒนา .NET เช่น Visual Studio
- ความรู้พื้นฐานของ C#: บทช่วยสอนนี้ถือว่าคุณมีความเข้าใจพื้นฐานเกี่ยวกับการเขียนโปรแกรม C#
นำเข้าเนมสเปซ
ขั้นแรก คุณต้องนำเข้าเนมสเปซที่จำเป็นในโปรเจ็กต์ C# ของคุณ เพิ่มบรรทัดต่อไปนี้ที่จุดเริ่มต้นของไฟล์โค้ดของคุณ:
using GroupDocs.Editor.Formats;
using GroupDocs.Editor.Options;
using GroupDocs.Editor.Words.FieldManagement;
using System;
using System.IO;
ขั้นตอนที่ 1: รับเส้นทางไฟล์อินพุต
ขั้นตอนแรกคือการระบุเส้นทางไปยังไฟล์อินพุตของคุณ ไฟล์นี้ควรเป็นเอกสาร DOCX ที่มีฟิลด์แบบฟอร์ม
string inputFilePath = Constants.SampleLegacyFormFields_docx;
ขั้นตอนที่ 2: สร้างสตรีมจากเส้นทางไฟล์
ถัดไป สร้างสตรีมไฟล์เพื่ออ่านเอกสารอินพุต ซึ่งจะช่วยให้คุณสามารถโหลดเอกสารลงในเครื่องมือแก้ไขได้
using (FileStream fs = File.OpenRead(inputFilePath))
ขั้นตอนที่ 3: สร้างตัวเลือกการโหลดสำหรับเอกสาร
ในขั้นตอนนี้ คุณจะต้องสร้างตัวเลือกการโหลดสำหรับเอกสารของคุณ หากเอกสารของคุณมีการป้องกันด้วยรหัสผ่าน คุณสามารถระบุรหัสผ่านได้ ในตัวอย่างนี้ เอกสารไม่ได้รับการป้องกัน ดังนั้นรหัสผ่านจึงถูกละเว้น
WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
loadOptions.Password = "some_password_to_open_a_document";
ขั้นตอนที่ 4: โหลดเอกสารลงในอินสแตนซ์ตัวแก้ไข
ตอนนี้ ให้โหลดเอกสารพร้อมตัวเลือกที่ระบุลงในอินสแตนซ์ตัวแก้ไข นี่คือที่ที่การดำเนินการหลักในเอกสารจะเกิดขึ้น
using (Editor editor = new Editor(delegate { return fs; }, delegate { return loadOptions; }))
ขั้นตอนที่ 4.1: อ่านอินสแตนซ์ FormFieldManager
ที่FormFieldManager
อินสแตนซ์มีหน้าที่จัดการฟิลด์แบบฟอร์มในเอกสาร คุณจะต้องอ่านอินสแตนซ์นี้เพื่อเข้าถึงและจัดการช่องแบบฟอร์ม
FormFieldManager fieldManager = editor.FormFieldManager;
ขั้นตอนที่ 4.2: อ่าน FormFieldCollection
ที่FormFieldCollection
มีช่องแบบฟอร์มทั้งหมดในเอกสาร คุณจะอ่านคอลเลกชันนี้เพื่อตรวจสอบและแก้ไขช่องแบบฟอร์มที่ไม่ถูกต้อง
FormFieldCollection collection = fieldManager.FormFieldCollection;
ขั้นตอนที่ 4.3: แก้ไขฟิลด์แบบฟอร์มที่ไม่ถูกต้องโดยอัตโนมัติ
พยายามแก้ไขช่องแบบฟอร์มที่ไม่ถูกต้องในเอกสารโดยอัตโนมัติ นี่เป็นขั้นตอนเบื้องต้นในการแก้ไขปัญหาที่ชัดเจน
fieldManager.FixInvalidFormFieldNames(new InvalidFormField[0]);
collection = fieldManager.FormFieldCollection;
ขั้นตอนที่ 4.4: ตรวจสอบฟิลด์แบบฟอร์มที่ไม่ถูกต้อง
ตรวจสอบว่ามีช่องแบบฟอร์มที่ไม่ถูกต้องเหลืออยู่หรือไม่หลังจากพยายามแก้ไขอัตโนมัติ
bool hasInvalidFormFields = fieldManager.HasInvalidFormFields();
Console.WriteLine("FormFieldCollection contains invalid items: {0}", hasInvalidFormFields);
ขั้นตอนที่ 4.4.1: รับชื่อฟิลด์แบบฟอร์มที่ไม่ถูกต้องทั้งหมด
ดึงข้อมูลชื่อของเขตข้อมูลแบบฟอร์มที่ไม่ถูกต้องทั้งหมด ชื่อเหล่านี้จะถูกนำมาใช้เพื่อแก้ไขฟิลด์
var invalidFormFields = fieldManager.GetInvalidFormFieldNames();
ขั้นตอนที่ 4.4.2: สร้างชื่อเฉพาะสำหรับฟิลด์ที่ไม่ถูกต้อง
สำหรับแต่ละฟิลด์แบบฟอร์มที่ไม่ถูกต้อง ให้สร้างชื่อที่ไม่ซ้ำกัน เพื่อให้แน่ใจว่าไม่มีข้อขัดแย้งกับชื่อฟิลด์แบบฟอร์มที่มีอยู่
foreach (var invalidItem in invalidFormFields)
{
invalidItem.FixedName = string.Format("{0}_{1}", invalidItem.Name, Guid.NewGuid());
}
ขั้นตอนที่ 4.4.3: แก้ไขฟิลด์แบบฟอร์มที่ไม่ถูกต้อง
แก้ไขช่องแบบฟอร์มที่ไม่ถูกต้องโดยใช้ชื่อเฉพาะที่สร้างในขั้นตอนก่อนหน้า
fieldManager.FixInvalidFormFieldNames(invalidFormFields);
collection = fieldManager.FormFieldCollection;
ขั้นตอนที่ 5: สร้างตัวเลือกการบันทึกเอกสาร
ตั้งค่าตัวเลือกสำหรับการบันทึกเอกสาร ซึ่งรวมถึงการระบุรูปแบบและการตั้งค่าการบันทึกเพิ่มเติม
WordProcessingFormats docFormat = WordProcessingFormats.Docx;
WordProcessingSaveOptions saveOptions = new WordProcessingSaveOptions(docFormat);
ขั้นตอนที่ 5.1: ปรับการใช้หน่วยความจำให้เหมาะสม
หากเอกสารของคุณมีขนาดใหญ่และอาจทำให้เกิดการOutOfMemoryException
ให้เปิดใช้งานตัวเลือกการเพิ่มประสิทธิภาพหน่วยความจำ
saveOptions.OptimizeMemoryUsage = true;
ขั้นตอนที่ 5.2: ป้องกันเอกสารจากการเขียน
หากต้องการป้องกันไม่ให้แก้ไขเอกสาร ยกเว้นช่องแบบฟอร์ม ให้ตั้งรหัสผ่านป้องกัน
saveOptions.Protection = new WordProcessingProtection(WordProcessingProtectionType.AllowOnlyFormFields, "write_password");
ขั้นตอนที่ 6: บันทึกเอกสาร
สุดท้าย ให้บันทึกเอกสารด้วยตัวเลือกการบันทึกที่ระบุ เตรียมสตรีมหน่วยความจำสำหรับบันทึกเอกสารเอาต์พุต
using (MemoryStream outputStream = new MemoryStream())
{
editor.Save(outputStream, saveOptions);
}
Console.WriteLine("FixInvalidFormFieldCollectionAndSave routine has successfully finished");
บทสรุป
และคุณก็ได้แล้ว! คุณได้แก้ไขช่องแบบฟอร์มที่ไม่ถูกต้องและบันทึกเอกสารของคุณโดยใช้ Groupdocs.Editor สำหรับ .NET เรียบร้อยแล้ว คำแนะนำทีละขั้นตอนนี้ควรทำให้กระบวนการมีความชัดเจนและสามารถจัดการได้ หากคุณพบปัญหาใดๆ หรือมีคำถาม โปรดตรวจสอบได้ที่เอกสารประกอบ หรือติดต่อไปที่สนับสนุน.
คำถามที่พบบ่อย
จะเกิดอะไรขึ้นหากเอกสารของฉันมีการป้องกันด้วยรหัสผ่าน?
คุณสามารถระบุรหัสผ่านได้ในWordProcessingLoadOptions
เพื่อเปิดเอกสาร
ฉันจะรู้ได้อย่างไรว่ามีฟิลด์แบบฟอร์มที่ไม่ถูกต้อง?
ใช้HasInvalidFormFields
วิธีการตรวจสอบฟิลด์แบบฟอร์มที่ไม่ถูกต้องในเอกสาร
ฉันสามารถแก้ไขฟิลด์แบบฟอร์มโดยไม่ต้องเปลี่ยนชื่อได้หรือไม่
ขอแนะนำให้สร้างชื่อที่ไม่ซ้ำกันสำหรับช่องแบบฟอร์มที่ไม่ถูกต้องเพื่อหลีกเลี่ยงความขัดแย้ง
ฉันสามารถบันทึกเอกสารในรูปแบบใดได้บ้าง
คุณสามารถบันทึกเอกสารในรูปแบบต่างๆ เช่น DOCX, PDF และอื่นๆ ได้โดยการตั้งค่าที่เหมาะสมWordProcessingFormats
.
ฉันจะเพิ่มประสิทธิภาพการใช้หน่วยความจำในขณะที่บันทึกเอกสารขนาดใหญ่ได้อย่างไร
เปิดใช้งานOptimizeMemoryUsage
ตัวเลือกในWordProcessingSaveOptions
เพื่อจัดการเอกสารขนาดใหญ่ได้อย่างมีประสิทธิภาพ