Detect File Format ו- Check Compatibility
לפעמים יש צורך לקבוע את פורמט המסמך לפני הפתיחה, כי הרחבה הקובץ אינה מבטיחה כי התוכן של הקובץ מתאים. לדוגמה, ידוע כי דוחות קריסטל לעתים קרובות מפיקים מסמכים בפורמט RTF, אבל נותן להם את הסיומת.doc.
Aspose.Words מספק יכולת לקבל מידע על סוג הקובץ כדי למנוע חריג אם אתה לא בטוח מה התוכן האמיתי של הקובץ.
תבנית קובץ Detect ללא יוצא דופן
כאשר אתה מתמודד עם מסמכים מרובים בפורמטים שונים של קבצים, ייתכן שתצטרך להפריד קבצים אלה שניתן לעבד על ידי Aspose.Words מאלה שלא יכולים. אתה יכול גם לדעת מדוע חלק מהמסמכים לא ניתן לעבד.
אם אתה מנסה לטעון קובץ לתוך קובץ Document אובייקט ו Aspose.Words לא יכול לזהות את פורמט הקובץ או את התבנית לא נתמך. Aspose.Words לזרוק יוצא מן הכלל. אתה יכול לתפוס את החריגים האלה לנתח אותם, אבל Aspose.Words גם מספק DetectFileFormat שיטה המאפשרת לנו לקבוע במהירות את תבנית הקובץ מבלי לטעון מסמך עם חריגים אפשריים. שיטה זו מחזירה FileFormatInfo אובייקט המכיל את המידע מזוהה על סוג הקובץ.
עקבו אחרי Files Compatibility
אנו יכולים לבדוק את תאימות הפורמט של כל הקבצים בתיקיה שנבחרה ולמיין אותם על ידי פורמט לתוך מכפליים מקבילים.
מכיוון שאנו מתמודדים עם תוכן בתיקיה, הדבר הראשון שאנחנו צריכים לעשות הוא לקבל אוסף של כל הקבצים בתיקיה זו באמצעות שימוש בקובץ. GetFiles שיטת Directory
מעמד (מתוך System.IO
שם מקום).
לדוגמה הקוד הבא מראה כיצד לקבל רשימה של כל הקבצים בתיקיה:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// We have a corrupted document for one of the examples in our folder, so exclude it from our collection. | |
IEnumerable<string> fileList = Directory.GetFiles(MyDir).Where(name => !name.EndsWith("Corrupted document.docx")); |
כאשר כל הקבצים נאספים, שאר העבודה מתבצעת על ידי DetectFileFormat שיטה, אשר בודקת את תבנית הקובץ.
הדוגמה הבאה של הקוד מראה כיצד להחליש מעל רשימת הקבצים שנאספו, לבדוק את התבנית של כל קובץ, ומעביר כל קובץ לתיקיה המתאימה:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
string supportedDir = ArtifactsDir + "Supported"; | |
string unknownDir = ArtifactsDir + "Unknown"; | |
string encryptedDir = ArtifactsDir + "Encrypted"; | |
string pre97Dir = ArtifactsDir + "Pre97"; | |
// Create the directories if they do not already exist. | |
if (Directory.Exists(supportedDir) == false) | |
Directory.CreateDirectory(supportedDir); | |
if (Directory.Exists(unknownDir) == false) | |
Directory.CreateDirectory(unknownDir); | |
if (Directory.Exists(encryptedDir) == false) | |
Directory.CreateDirectory(encryptedDir); | |
if (Directory.Exists(pre97Dir) == false) | |
Directory.CreateDirectory(pre97Dir); | |
// We have a corrupted document for one of the examples in our folder, so exclude it from our collection. | |
IEnumerable<string> fileList = Directory.GetFiles(MyDir).Where(name => !name.EndsWith("Corrupted document.docx")); | |
foreach (string fileName in fileList) | |
{ | |
string nameOnly = Path.GetFileName(fileName); | |
Console.Write(nameOnly); | |
// Display the document type. | |
FileFormatInfo info = FileFormatUtil.DetectFileFormat(fileName); | |
switch (info.LoadFormat) | |
{ | |
case LoadFormat.Doc: | |
Console.WriteLine("\tMicrosoft Word 97-2003 document."); | |
break; | |
case LoadFormat.Dot: | |
Console.WriteLine("\tMicrosoft Word 97-2003 template."); | |
break; | |
case LoadFormat.Docx: | |
Console.WriteLine("\tOffice Open XML WordprocessingML Macro-Free Document."); | |
break; | |
case LoadFormat.Docm: | |
Console.WriteLine("\tOffice Open XML WordprocessingML Macro-Enabled Document."); | |
break; | |
case LoadFormat.Dotx: | |
Console.WriteLine("\tOffice Open XML WordprocessingML Macro-Free Template."); | |
break; | |
case LoadFormat.Dotm: | |
Console.WriteLine("\tOffice Open XML WordprocessingML Macro-Enabled Template."); | |
break; | |
case LoadFormat.FlatOpc: | |
Console.WriteLine("\tFlat OPC document."); | |
break; | |
case LoadFormat.Rtf: | |
Console.WriteLine("\tRTF format."); | |
break; | |
case LoadFormat.WordML: | |
Console.WriteLine("\tMicrosoft Word 2003 WordprocessingML format."); | |
break; | |
case LoadFormat.Html: | |
Console.WriteLine("\tHTML format."); | |
break; | |
case LoadFormat.Mhtml: | |
Console.WriteLine("\tMHTML (Web archive) format."); | |
break; | |
case LoadFormat.Odt: | |
Console.WriteLine("\tOpenDocument Text."); | |
break; | |
case LoadFormat.Ott: | |
Console.WriteLine("\tOpenDocument Text Template."); | |
break; | |
case LoadFormat.DocPreWord60: | |
Console.WriteLine("\tMS Word 6 or Word 95 format."); | |
break; | |
case LoadFormat.Unknown: | |
Console.WriteLine("\tUnknown format."); | |
break; | |
} | |
if (info.IsEncrypted) | |
{ | |
Console.WriteLine("\tAn encrypted document."); | |
File.Copy(fileName, Path.Combine(encryptedDir, nameOnly), true); | |
} | |
else | |
{ | |
switch (info.LoadFormat) | |
{ | |
case LoadFormat.DocPreWord60: | |
File.Copy(fileName, Path.Combine(pre97Dir, nameOnly), true); | |
break; | |
case LoadFormat.Unknown: | |
File.Copy(fileName, Path.Combine(unknownDir, nameOnly), true); | |
break; | |
default: | |
File.Copy(fileName, Path.Combine(supportedDir, nameOnly), true); | |
break; | |
} | |
} | |
} |
הקבצים מועברים למכפירים המתאימים באמצעות Move
שיטת File
מעמד, מאותו System.IO
שם.
הקבצים הבאים משמשים בדוגמה לעיל. שם הקובץ בצד שמאל והתיאור שלו מימין:
Group קבצים | Input Document | סוג |
---|---|---|
פורמטים קובץ | מבחן (Doc)doc | Microsoft Word 95/6.0 Microsoft Word 97 - 2003 מסמך |
File (Dot (Dot) |
Microsoft Word 95/6.0 Microsoft Word 97 - 2003 תבנית | |
File File (Docx)docx | Office Open XML Wordprocessing מסמך ML ללא מאקרו | |
File File (DoCM) | Office Open XML Wordprocessing ML מסמך עם מאקרו | |
תגית: dotx | Office Open XML Wordprocessing תבנית ML | |
תגית: Dotm | Office Open XML Wordprocessing תבנית ML עם מאקרו | |
תגית: XML | מסמך FlatOPC OOXML | |
תגית:RTF | מסמך פורמט טקסט עשיר | |
שם הסרטון:WordML | Microsoft Word 2003 Wordprocessing מסמך ML | |
File File (HTML)html | מסמך HTML | |
מבחן (MHTML)mhtml | מסמך MHTML (ארכיון אינטרנט) | |
מבחן (Odt) | OpenDocument Text (OpenOffice Writer) | |
מבחן (Ot) | קוד פתוח | |
מבחן (DocPreWord60).doc | Microsoft Word 2.0 מסמך | |
מסמכים מוצפנים | מבחן (Enc)doc | הצפנה Microsoft Word 95/6.0 Microsoft Word 97 - 2003 מסמך |
מבחן (Enc)docx | Office Open XML Wordprocessing מסמך ML | |
פורמטים קובץ לא נתמך | תגית: JPG jpg | קובץ JPEG |