รับจำนวนหน้าและสกัดข้อมูลเอกสารด้วย GroupDocs.Editor
บทนำ
ในบทแนะนำเชิงลึกนี้ คุณจะได้เรียนรู้วิธี รับจำนวนหน้า และสกัดข้อมูลรายละเอียดของเอกสาร—รวมถึงรูปแบบ, ขนาด, และสถานะการเข้ารหัส—โดยใช้ GroupDocs.Editor สำหรับ .NET ไม่ว่าคุณจะกำลังสร้างระบบจัดการเอกสาร, ระบบรายงาน, หรือกระบวนการแปลงอัตโนมัติ การเข้าใจเมตาดาต้าของไฟล์เป็นขั้นตอนแรกสู่การประมวลผลที่เชื่อถือได้ เราจะเดินผ่านขั้นตอนทั้งหมด ตั้งแต่การโหลดไฟล์จนถึงการปล่อยทรัพยากรอย่างปลอดภัย
คำตอบด่วน
- ฉันจะดึงจำนวนหน้าของเอกสารได้อย่างไร?
เรียกeditor.GetDocumentInfo().PageCountหลังจากโหลดไฟล์ด้วยEditor - รูปแบบไฟล์ใดบ้างที่รองรับการสกัดเมตาดาต้า?
มากกว่า 50 รูปแบบ รวมถึง DOCX, XLSX, PPTX, PDF, TXT, และ HTML - ฉันสามารถสกัดเมตาดาต้าจากไฟล์ที่ป้องกันด้วยรหัสผ่านได้หรือไม่?
ได้—ให้รหัสผ่านเมื่อสร้างอินสแตนซ์Editor - ฉันต้องปล่อยทรัพยากรด้วยตนเองหรือไม่?
แน่นอน; ควรเรียกeditor.Dispose()หรือใช้บล็อกusingกับ editor - ต้องใช้เวอร์ชันใดของ GroupDocs.Editor?
รุ่นที่เสถียรล่าสุด (v23.12+ ณ เวลาที่เขียน) รองรับคุณลักษณะทั้งหมดที่แสดง
“get page count” คืออะไรใน GroupDocs.Editor?
GetDocumentInfo() เป็นเมธอดที่คืนค่าอ็อบเจกต์ DocumentInfo ซึ่งบรรจุจำนวนหน้า, รูปแบบ, ขนาด และเมตาดาต้าอื่น ๆ ของเอกสาร การเรียกครั้งเดียวนี้ให้ข้อมูลโดยตรงโดยไม่ต้องพาร์สไฟล์ด้วยตนเอง การใช้เมธอดนี้ช่วยหลีกเลี่ยงการโหลดเอกสารทั้งหมดเข้าสู่หน่วยความจำ ซึ่งช่วยเพิ่มประสิทธิภาพโดยเฉพาะไฟล์ขนาดใหญ่และลดการใช้ทรัพยากรของเซิร์ฟเวอร์
ทำไมต้องสกัดเมตาดาต้าเอกสารด้วย GroupDocs.Editor?
GroupDocs.Editor สามารถประมวลผล รูปแบบเข้าและออกกว่า 50 ประเภท และสกัดเมตาดาต้าสำหรับไฟล์ขนาดสูงสุด 2 GB โดยไม่ต้องโหลดเอกสารทั้งหมดเข้าสู่หน่วยความจำ ประสิทธิภาพนี้ช่วยลดภาระเซิร์ฟเวอร์ได้ถึง 70 % เมื่อเทียบกับการพาร์สเอกสารเต็มรูปแบบ ทำให้เหมาะกับแอปพลิเคชันที่ต้องการประมวลผลจำนวนมาก
ข้อกำหนดเบื้องต้น
- พื้นฐานการพัฒนา C# – คุณควรคุ้นเคยกับ Visual Studio และโครงสร้างโครงการ .NET
- Visual Studio 2022 (หรือเวอร์ชันล่าสุดใดก็ได้) ที่ติดตั้งบนเครื่องของคุณ
- GroupDocs.Editor for .NET – ดาวน์โหลดแพคเกจล่าสุดจาก download page
วิธีโหลดเอกสารของคุณ?
Editor เป็นคลาสหลักที่แทนเอกสารและให้เมธอดสำหรับการโหลดและจัดการ โหลดไฟล์เป้าหมายโดยสร้างอินสแตนซ์ Editor และส่งพาธไฟล์เข้าไป ตัว editor จะตรวจจับรูปแบบโดยอัตโนมัติ ดังนั้นคุณไม่จำเป็นต้องระบุตัวเลือกการโหลด วิธีนี้ทำงานกับไฟล์ที่รองรับทุกประเภทและทำให้การตั้งค่าเริ่มต้นง่ายขึ้น
using System;
using GroupDocs.Editor.Metadata;
วิธีดึงข้อมูลเอกสาร?
GetDocumentInfo() คืนค่าอ็อบเจกต์ DocumentInfo ที่บรรจุเมตาดาต้า เช่น จำนวนหน้า, รูปแบบ, ขนาด, และสถานะการเข้ารหัส หลังจากโหลดไฟล์แล้ว ให้เรียกเมธอดนี้เพื่อดึงอ็อบเจกต์ที่ได้ DocumentInfo จะให้ภาพรวมสั้น ๆ ของคุณลักษณะไฟล์ ช่วยให้คุณตัดสินใจได้โดยไม่ต้องประมวลผลต่อ
string docxInputFilePath = "YourSampleDocument.docx";
Editor editorDocx = new Editor(docxInputFilePath);
วิธีกำหนดประเภทเอกสาร?
DocumentType เป็น enum ที่บ่งบอกว่าเอกสารเป็น WordProcessing, Spreadsheet หรือ Text การรู้ประเภทไฟล์ช่วยกำหนดวิธีการจัดการต่อไป ใช้คุณสมบัติ DocumentType ของอ็อบเจกต์ DocumentInfo เพื่อทำการตัดสินใจและแยกสาขาโลจิกตามประเภท
IDocumentInfo infoDocx = editorDocx.GetDocumentInfo(null);
วิธีสกัดข้อมูลรายละเอียดสำหรับไฟล์ประมวลผลคำ?
WordProcessing หมายถึงเอกสารเช่น DOCX, ODT, และ RTF ที่จัดการเป็นไฟล์ประมวลผลคำ หาก DocumentType เป็น WordProcessing คุณสามารถอ่านคุณสมบัติเพิ่มเติมเช่น format, extension, page count, size, และ encryption flag ได้โดยตรงจากอ็อบเจกต์ DocumentInfo รายละเอียดเหล่านี้ช่วยปรับขั้นตอนการประมวลผล เช่น การแปลงเฉพาะหรือการตรวจสอบความปลอดภัย
bool isSpreadsheet = infoDocx is SpreadsheetDocumentInfo;
bool isText = infoDocx is TextualDocumentInfo;
bool isWordProcessing = infoDocx is WordProcessingDocumentInfo;
Console.WriteLine($"Is '{docxInputFilePath}' a Spreadsheet: {isSpreadsheet}");
Console.WriteLine($"Is '{docxInputFilePath}' a Textual document: {isText}");
Console.WriteLine($"Is '{docxInputFilePath}' a WordProcessing document: {isWordProcessing}");
วิธีจัดการสเปรดชีตและเอกสารข้อความ?
Spreadsheet หมายถึงไฟล์สเปรดชีตเช่น XLSX ส่วน Text แทนไฟล์ข้อความธรรมดา สำหรับสเปรดชีต (Spreadsheet) และไฟล์ข้อความ (Text) อ็อบเจกต์ DocumentInfo ยังให้เมตาดาต้าแกนหลัก (extension, size, page count) บางรูปแบบอาจไม่แสดงจำนวนหน้า ซึ่งค่าจะเป็น 0 คุณยังสามารถอ้างอิงเมตาดาต้าอื่น ๆ เพื่อใช้ในโลจิกต่อไปได้
if (isWordProcessing)
{
WordProcessingDocumentInfo casted = (WordProcessingDocumentInfo)infoDocx;
Console.WriteLine($"Format: {casted.Format.Name}; Extension: {casted.Format.Extension}; Page count: {casted.PageCount}; Size: {casted.Size} bytes; Is encrypted: {casted.IsEncrypted}");
}
วิธีทำงานกับเอกสารที่ป้องกันด้วยรหัสผ่าน?
Password เป็นสตริงที่ส่งให้คอนสตรัคเตอร์ Editor เพื่อเปิดไฟล์ที่เข้ารหัส เมื่อเอกสารถูกเข้ารหัส ให้ลองเปิดโดยไม่ระบุรหัสผ่านก่อน หากล้มเหลว ให้ดักจับข้อยกเว้นแล้วลองใหม่ด้วยรหัสผ่านที่ถูกต้อง คอนสตรัคเตอร์ Editor ยอมรับพารามิเตอร์ Password เพื่อรองรับการจัดการไฟล์ที่ป้องกันอย่างราบรื่น
string xlsxInputFilePath = "YourSampleDocument.xlsx";
Editor editorXlsx = new Editor(xlsxInputFilePath);
IDocumentInfo infoXlsx = editorXlsx.GetDocumentInfo(null);
bool isXlsxSpreadsheet = infoXlsx is SpreadsheetDocumentInfo;
Console.WriteLine($"Is '{xlsxInputFilePath}' a Spreadsheet: {isXlsxSpreadsheet}");
if (isXlsxSpreadsheet)
{
SpreadsheetDocumentInfo casted = (SpreadsheetDocumentInfo)infoXlsx;
Console.WriteLine($"Format: {casted.Format.Name}; Extension: {casted.Format.Extension}; Tabs count: {casted.PageCount}; Size: {casted.Size} bytes; Is encrypted: {casted.IsEncrypted}");
}
วิธีประมวลผลเอกสารแบบข้อความ?
DocumentInfo ให้เมตาดาต้าเบื้องต้นเช่น ขนาด, ส่วนขยาย, และการเข้ารหัสสำหรับไฟล์ข้อความ ไฟล์ข้อความ (เช่น .txt, .md) ถูกจัดการเป็นสตรีมง่าย ๆ คุณยังคงสามารถดึงข้อมูลขนาดและการเข้ารหัสจาก DocumentInfo ซึ่งมีประโยชน์ในการตรวจสอบความสมบูรณ์ของไฟล์หรือกำหนดสายการประมวลผลที่เหมาะสม
string xlsInputFilePath = "YourSampleDocument.xls";
Editor editorXls = new Editor(xlsInputFilePath);
try
{
IDocumentInfo infoXls = editorXls.GetDocumentInfo(null);
}
catch (PasswordRequiredException)
{
Console.WriteLine("This document is password-protected.");
}
try
{
IDocumentInfo infoXls = editorXls.GetDocumentInfo("incorrect_password");
}
catch (IncorrectPasswordException)
{
Console.WriteLine("The provided password is incorrect.");
}
IDocumentInfo infoXlsValid = editorXls.GetDocumentInfo("correct_password");
bool isXlsSpreadsheet = infoXlsValid is SpreadsheetDocumentInfo;
Console.WriteLine($"Password-protected document is a Spreadsheet: {isXlsSpreadsheet}");
if (isXlsSpreadsheet)
{
SpreadsheetDocumentInfo casted = (SpreadsheetDocumentInfo)infoXlsValid;
Console.WriteLine($"Format: {casted.Format.Name}; Extension: {casted.Format.Extension}; Tabs count: {casted.PageCount}; Size: {casted.Size} bytes; Is encrypted: {casted.IsEncrypted}");
}
วิธีปล่อยทรัพยากรอย่างถูกต้อง?
Editor เป็นคลาสหลักที่ถือทรัพยากรที่ไม่ได้จัดการโดย .NET และต้องปล่อยหลังการใช้งาน เพื่อป้องกันการรั่วไหลของหน่วยความจำ ควรปล่อยอินสแตนซ์ Editor เสมอหลังจากดึงข้อมูลเสร็จ การใช้คำสั่ง using เป็นรูปแบบที่ปลอดภัยที่สุด เพราะมันรับประกันการปล่อยทรัพยากรแม้เกิดข้อยกเว้น ทำให้การจัดการทรัพยากรเป็นระเบียบ
string xmlInputFilePath = "YourSampleDocument.xml";
Editor editorXml = new Editor(xmlInputFilePath);
IDocumentInfo infoXml = editorXml.GetDocumentInfo(null);
bool isXmlText = infoXml is TextualDocumentInfo;
Console.WriteLine($"Is '{xmlInputFilePath}' a Textual document: {isXmlText}");
if (isXmlText)
{
TextualDocumentInfo casted = (TextualDocumentInfo)infoXml;
Console.WriteLine($"Format: {casted.Format.Name}; Extension: {casted.Format.Extension}; Encoding: {casted.Encoding}; Size: {casted.Size} bytes");
}
ปัญหาทั่วไปและวิธีแก้ไข
| ปัญหา | สาเหตุ | วิธีแก้ไข |
|---|---|---|
| PageCount returns 0 | รูปแบบไม่รองรับการแบ่งหน้า (เช่น plain text) | ตรวจสอบ DocumentInfo.DocumentType ก่อนพึ่งพา PageCount. |
| Unsupported file format | ส่วนขยายไฟล์ไม่ถูกจดจำ | ตรวจสอบว่าไฟล์เป็นหนึ่งในรูปแบบที่รองรับกว่า 50 รูปแบบ; อัปเดต GroupDocs.Editor เป็นเวอร์ชันล่าสุด. |
| Password exception | รหัสผ่านที่ให้ไม่ถูกต้อง | ดักจับ PasswordProtectedException แล้วแจ้งผู้ใช้ให้ใส่รหัสผ่านใหม่. |
| Memory spike on large files | โหลด PDF ขนาดใหญ่มากโดยไม่ใช้การสตรีม | ใช้ LoadOptions กับ LoadOptions.LoadMode = LoadMode.Stream (มีในรุ่นใหม่กว่า). |
คำถามที่พบบ่อย
Q: ฉันสามารถสกัดเมตาดาต้าจากประเภทเอกสารใดได้บ้าง?
A: GroupDocs.Editor รองรับไฟล์ประมวลผลคำ, สเปรดชีต, พรีเซนเทชัน, PDF, และไฟล์ข้อความธรรมดา—รวมกว่า 50 รูปแบบทั้งหมด.
Q: ฉันจะดึงส่วนขยายไฟล์ได้อย่างไร?
A: เข้าถึง DocumentInfo.Extension หลังจากเรียก GetDocumentInfo(); จะคืนค่าส่วนขยายโดยไม่มีจุดนำหน้า.
Q: ฉันสามารถรับขนาดของเอกสารเป็นเมกะไบต์ได้หรือไม่?
A: ได้—DocumentInfo.Size คืนค่าขนาดเป็นไบต์; หารด้วย 1,048,576 เพื่อแปลงเป็นเมกะไบต์.
Q: การประมวลผลไฟล์ที่ป้องกันด้วยรหัสผ่านบนเซิร์ฟเวอร์ปลอดภัยหรือไม่?
A: แน่นอน—GroupDocs.Editor ไม่เคยเขียนรหัสผ่านลงดิสก์และทำลายอ็อบเจกต์การเข้ารหัสทั้งหมดหลังการใช้งาน.
Q: ฉันจะหาแนวทางช่วยเหลือเพิ่มเติมได้จากที่ไหนหากเจอปัญหา?
A: คุณสามารถรับการสนับสนุนจาก GroupDocs.Editor support forum.
อัปเดตล่าสุด: 2026-06-01
ทดสอบกับ: GroupDocs.Editor 23.12 for .NET
ผู้เขียน: GroupDocs
editorDocx.Dispose();
editorXlsx.Dispose();
editorXls.Dispose();
editorXml.Dispose();
Console.WriteLine("ExtractingDocumentInfo routine has successfully finished");