Deteksi Format File dan Periksa Kompatibilitas Format

Terkadang perlu menentukan format suatu dokumen sebelum dibuka karena ekstensi file tidak menjamin kesesuaian isi file. Misalnya, Crystal Reports diketahui sering mengeluarkan dokumen dalam format RTF, tetapi memberinya ekstensi .doc.

Aspose.Words menyediakan kemampuan untuk memperoleh informasi tentang jenis file untuk menghindari pengecualian jika Anda tidak yakin dengan konten sebenarnya dari file tersebut.

Deteksi Format File tanpa Pengecualian

Saat Anda berurusan dengan banyak dokumen dalam berbagai format file, Anda mungkin perlu memisahkan file-file yang dapat diproses oleh Aspose.Words dari file-file yang tidak dapat diproses. Anda mungkin juga ingin mengetahui mengapa beberapa dokumen tidak dapat diproses.

Jika Anda mencoba memuat file ke objek Document dan Aspose.Words tidak dapat mengenali format file atau formatnya tidak didukung, Aspose.Words akan mengeluarkan pengecualian. Anda dapat menangkap pengecualian tersebut dan menganalisisnya, namun Aspose.Words juga menyediakan metode detect_file_format yang memungkinkan kita menentukan format file dengan cepat tanpa memuat dokumen dengan kemungkinan pengecualian. Metode ini mengembalikan objek FileFormatInfo yang berisi informasi yang terdeteksi tentang jenis file.

Periksa Kompatibilitas Format File

Kami dapat memeriksa kompatibilitas format semua file di folder yang dipilih dan mengurutkannya berdasarkan format ke dalam subfolder yang sesuai.

Karena kita berurusan dengan konten dalam sebuah folder, hal pertama yang perlu kita lakukan adalah mengumpulkan semua file dalam folder ini menggunakan metode listdir pada modul os.

Contoh kode berikut menunjukkan cara mendapatkan daftar semua file dalam folder:

# 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")))

Ketika semua file dikumpulkan, sisa pekerjaan dilakukan dengan metode detect_file_format, yang memeriksa format file.

Contoh kode berikut menunjukkan cara mengulangi daftar file yang dikumpulkan, memeriksa format setiap file, dan memindahkan setiap file ke folder yang sesuai:

# 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))

File dipindahkan ke subfolder yang sesuai menggunakan metode copyfile pada modul tutup.

File berikut digunakan dalam contoh di atas. Nama file di sebelah kiri dan deskripsinya di sebelah kanan:

Group File Dokumen Masukan Jenis
Format file yang didukung File Uji (Dok).doc Dokumen Microsoft Word 95/6.0 atau Microsoft Word 97 – 2003.
File Uji (Dot).dot Templat Microsoft Word 95/6.0 atau Microsoft Word 97 – 2003.
File Uji (Docx).docx Dokumen Office Open XML WordprocessingML tanpa makro.
File Uji (Docm).docm Dokumen Office Open XML WordprocessingML dengan makro.
File Uji (Dotx).dotx Templat Office Open XML WordprocessingML.
File Uji (Dotm).dotm Templat Office Open XML WordprocessingML dengan makro.
File Uji (XML).xml Dokumen FlatOPC OOXML.
File Uji (RTF).rtf Dokumen Format Teks Kaya.
File Uji (WordML).xml Dokumen Microsoft Word 2003 WordprocessingML.
File Uji (HTML).html dokumen HTML.
File Uji (MHTML).mhtml Dokumen MHTML (arsip Web).
File Uji (Aneh).odt Teks OpenDocument (Penulis OpenOffice).
File Uji (Ott).ott Templat Dokumen OpenDocument.
File Uji (DocPreWord60).doc dokumen Microsoft Word 2.0.
Dokumen terenkripsi File Uji (Enc).doc Dokumen Microsoft Word 95/6.0 atau Microsoft Word 97 – 2003 terenkripsi.
File Uji (Enc).docx Dokumen Office Open XML WordprocessingML terenkripsi.
Format file tidak didukung File Uji (JPG).jpg File gambar JPEG.