Detect File Format ו- Check Compatibility

לפעמים יש צורך לקבוע את פורמט המסמך לפני הפתיחה, כי הרחבה הקובץ אינה מבטיחה כי התוכן של הקובץ מתאים. לדוגמה, ידוע כי דוחות קריסטל לעתים קרובות מפיקים מסמכים בפורמט RTF, אבל נותן להם את הסיומת.doc.

Aspose.Words מספק יכולת לקבל מידע על סוג הקובץ כדי למנוע חריג אם אתה לא בטוח מה התוכן האמיתי של הקובץ.

תבנית קובץ Detect ללא יוצא דופן

כאשר אתה מתמודד עם מסמכים מרובים בפורמטים שונים של קבצים, ייתכן שתצטרך להפריד קבצים אלה שניתן לעבד על ידי Aspose.Words מאלה שלא יכולים. אתה יכול גם לדעת מדוע חלק מהמסמכים לא ניתן לעבד.

אם אתה מנסה לטעון קובץ לתוך קובץ Document אובייקט ו Aspose.Words לא יכול לזהות את פורמט הקובץ או את התבנית לא נתמך. Aspose.Words לזרוק יוצא מן הכלל. אתה יכול לתפוס את החריגים האלה לנתח אותם, אבל Aspose.Words גם מספק detect_file_format שיטה המאפשרת לנו לקבוע במהירות את תבנית הקובץ מבלי לטעון מסמך עם חריגים אפשריים. שיטה זו מחזירה FileFormatInfo אובייקט המכיל את המידע מזוהה על סוג הקובץ.

עקבו אחרי Files Compatibility

אנו יכולים לבדוק את תאימות הפורמט של כל הקבצים בתיקיה שנבחרה ולמיין אותם על ידי פורמט לתוך מכפליים מקבילים.

מכיוון שאנו מתמודדים עם תוכן בתיקיה, הדבר הראשון שאנחנו צריכים לעשות הוא לקבל אוסף של כל הקבצים בתיקיה זו באמצעות שימוש בקובץ. רשימה מלוכלכת שיטת os מודול.

לדוגמה הקוד הבא מראה כיצד לקבל רשימה של כל הקבצים בתיקיה:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
fileList = (file for file in os.listdir(docs_base.my_dir)
if (os.path.isfile(os.path.join(docs_base.my_dir, file)) and not file.endswith("Corrupted document.docx")))

כאשר כל הקבצים נאספים, שאר העבודה מתבצעת על ידי detect_file_format שיטה, אשר בודקת את תבנית הקובץ.

הדוגמה הבאה של הקוד מראה כיצד להחליש מעל רשימת הקבצים שנאספו, לבדוק את התבנית של כל קובץ, ומעביר כל קובץ לתיקיה המתאימה:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
supported_dir = docs_base.artifacts_dir + "Supported"
unknown_dir = docs_base.artifacts_dir + "Unknown"
encrypted_dir = docs_base.artifacts_dir + "Encrypted"
pre97_dir = docs_base.artifacts_dir + "Pre97"
# Create the directories if they do not already exist.
if not os.path.exists(supported_dir):
os.makedirs(supported_dir)
if not os.path.exists(unknown_dir):
os.makedirs(unknown_dir)
if not os.path.exists(encrypted_dir):
os.makedirs(encrypted_dir)
if not os.path.exists(pre97_dir):
os.makedirs(pre97_dir)
fileList = (file for file in os.listdir(docs_base.my_dir)
if (os.path.isfile(os.path.join(docs_base.my_dir, file)) and not file.endswith("Corrupted document.docx")))
for fileName in fileList:
name_only = fileName
fileName = os.path.join(docs_base.my_dir, name_only)
print(name_only)
info = aw.FileFormatUtil.detect_file_format(fileName)
lf = info.load_format
# Display the document type
if lf == aw.LoadFormat.DOC:
print("\tMicrosoft Word 97-2003 document.")
elif lf == aw.LoadFormat.DOT:
print("\tMicrosoft Word 97-2003 template.")
elif lf == aw.LoadFormat.DOCX:
print("\tOffice Open XML WordprocessingML Macro-Free Document.")
elif lf == aw.LoadFormat.DOCM:
print("\tOffice Open XML WordprocessingML Macro-Enabled Document.")
elif lf == aw.LoadFormat.DOTX:
print("\tOffice Open XML WordprocessingML Macro-Free Template.")
elif lf == aw.LoadFormat.DOTM:
print("\tOffice Open XML WordprocessingML Macro-Enabled Template.")
elif lf == aw.LoadFormat.FLAT_OPC:
print("\tFlat OPC document.")
elif lf == aw.LoadFormat.RTF:
print("\tRTF format.")
elif lf == aw.LoadFormat.WORD_ML:
print("\tMicrosoft Word 2003 WordprocessingML format.")
elif lf == aw.LoadFormat.HTML:
print("\tHTML format.")
elif lf == aw.LoadFormat.MHTML:
print("\tMHTML (Web archive) format.")
elif lf == aw.LoadFormat.ODT:
print("\tOpenDocument Text.")
elif lf == aw.LoadFormat.OTT:
print("\tOpenDocument Text Template.")
elif lf == aw.LoadFormat.DOC_PRE_WORD60:
print("\tMS Word 6 or Word 95 format.")
elif lf == aw.LoadFormat.UNKNOWN:
print("\tUnknown format.")
if info.is_encrypted:
print("\tAn encrypted document.")
shutil.copyfile(fileName, os.path.join(encrypted_dir, name_only))
else:
if lf == aw.LoadFormat.DOC_PRE_WORD60:
shutil.copyfile(fileName, os.path.join(pre97_dir, name_only))
elif lf == aw.LoadFormat.UNKNOWN:
shutil.copyfile(fileName, os.path.join(unknown_dir, name_only))
else:
shutil.copyfile(fileName, os.path.join(supported_dir, name_only))

הקבצים מועברים למכפירים המתאימים באמצעות העתק שיטת סגור מודול.

הקבצים הבאים משמשים בדוגמה לעיל. שם הקובץ בצד שמאל והתיאור שלו מימין:

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