cpp-filetype
 
Loading...
Searching...
No Matches
document.hpp
1#ifndef FILETYPE_TYPES_DOCUMENT_HPP
2#define FILETYPE_TYPES_DOCUMENT_HPP
3
4#include <array>
5#include <cstdint>
6#include "filetype/type.hpp"
7
8namespace filetype {
9namespace document {
10
11using Type = ::filetype::Type;
12
13//------------------------------------------------------------------------------
14// Document file type definitions
15//------------------------------------------------------------------------------
16
17// PDF document format
18// Magic: 25 50 44 46 ("%PDF")
19inline const std::array<uint8_t, 4> PDF_MAGIC = {0x25, 0x50, 0x44, 0x46};
20inline const Type TYPE_PDF{"application/pdf", "pdf"};
21
22// Microsoft DOC document format
23// Magic: D0 CF 11 E0 A1 B1 1A E1 (Office Binary Document)
24inline const std::array<uint8_t, 8> DOC_MAGIC = {0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1};
25inline const Type TYPE_DOC{"application/msword", "doc"};
26
27// Microsoft DOCX document format
28// Magic: 50 4B 03 04 (PK..)
29// Note: This is a ZIP file signature; additional verification is needed.
30inline const std::array<uint8_t, 4> DOCX_MAGIC = {0x50, 0x4B, 0x03, 0x04};
31inline const Type TYPE_DOCX{
32 "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "docx"};
33
34// Microsoft XLS spreadsheet format
35// Magic: D0 CF 11 E0 A1 B1 1A E1 (same as DOC)
36inline const std::array<uint8_t, 8> XLS_MAGIC = {0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1};
37inline const Type TYPE_XLS{"application/vnd.ms-excel", "xls"};
38
39// Microsoft XLSX spreadsheet format
40// Magic: 50 4B 03 04 (PK..)
41// Note: This is a ZIP file signature; additional verification is needed.
42inline const std::array<uint8_t, 4> XLSX_MAGIC = {0x50, 0x4B, 0x03, 0x04};
43inline const Type TYPE_XLSX{"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
44 "xlsx"};
45
46// Microsoft PowerPoint presentation format
47// Magic: D0 CF 11 E0 A1 B1 1A E1 (same as DOC)
48inline const std::array<uint8_t, 8> PPT_MAGIC = {0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1};
49inline const Type TYPE_PPT{"application/vnd.ms-powerpoint", "ppt"};
50
51// Microsoft PowerPoint PPTX presentation format
52// Magic: 50 4B 03 04 (PK..)
53// Note: This is a ZIP file signature; additional verification is needed.
54inline const std::array<uint8_t, 4> PPTX_MAGIC = {0x50, 0x4B, 0x03, 0x04};
55inline const Type TYPE_PPTX{
56 "application/vnd.openxmlformats-officedocument.presentationml.presentation", "pptx"};
57
58// OpenDocument Text format
59// Magic: 50 4B 03 04 (PK..)
60// Note: This is a ZIP file signature; additional verification is needed.
61inline const std::array<uint8_t, 4> ODT_MAGIC = {0x50, 0x4B, 0x03, 0x04};
62inline const Type TYPE_ODT{"application/vnd.oasis.opendocument.text", "odt"};
63
64// OpenDocument Spreadsheet format
65// Magic: 50 4B 03 04 (PK..)
66// Note: This is a ZIP file signature; additional verification is needed.
67inline const std::array<uint8_t, 4> ODS_MAGIC = {0x50, 0x4B, 0x03, 0x04};
68inline const Type TYPE_ODS{"application/vnd.oasis.opendocument.spreadsheet", "ods"};
69
70// OpenDocument Presentation format
71// Magic: 50 4B 03 04 (PK..)
72// Note: This is a ZIP file signature; additional verification is needed.
73inline const std::array<uint8_t, 4> ODP_MAGIC = {0x50, 0x4B, 0x03, 0x04};
74inline const Type TYPE_ODP{"application/vnd.oasis.opendocument.presentation", "odp"};
75
76// Rich Text Format
77// Magic: 7B 5C 72 74 66 ("{\\rtf")
78inline const std::array<uint8_t, 5> RTF_MAGIC = {0x7B, 0x5C, 0x72, 0x74, 0x66};
79inline const Type TYPE_RTF{"application/rtf", "rtf"};
80
81// EPUB document format
82// Magic: 50 4B 03 04 (PK..)
83// Note: This is a ZIP file signature; additional verification is needed.
84inline const std::array<uint8_t, 4> EPUB_MAGIC = {0x50, 0x4B, 0x03, 0x04};
85inline const Type TYPE_EPUB{"application/epub+zip", "epub"};
86
87} // namespace document
88} // namespace filetype
89
90#endif // FILETYPE_TYPES_DOCUMENT_HPP