Skip to main content

excelize_rs/xml/
app.rs

1//! Extended document properties (`docProps/app.xml`).
2//!
3//! Ported from Go `xmlApp.go`.
4
5use serde::{Deserialize, Serialize};
6
7use super::common::XlsxInnerXml;
8
9/// Directly maps the document application properties.
10#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
11pub struct AppProperties {
12    #[serde(default)]
13    pub application: String,
14    #[serde(default)]
15    pub scale_crop: bool,
16    #[serde(default)]
17    pub doc_security: i32,
18    #[serde(default)]
19    pub company: String,
20    #[serde(default)]
21    pub links_up_to_date: bool,
22    #[serde(default)]
23    pub hyperlinks_changed: bool,
24    #[serde(default)]
25    pub app_version: String,
26}
27
28/// OOXML document properties such as the template used, the number of pages and
29/// words, and the application name and version.
30#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
31#[serde(rename = "Properties", rename_all = "PascalCase")]
32pub struct XlsxProperties {
33    #[serde(rename = "@xmlns:vt", default, skip_serializing_if = "Option::is_none")]
34    pub vt: Option<String>,
35    #[serde(default, skip_serializing_if = "Option::is_none")]
36    pub template: Option<String>,
37    #[serde(default, skip_serializing_if = "Option::is_none")]
38    pub manager: Option<String>,
39    #[serde(default, skip_serializing_if = "Option::is_none")]
40    pub company: Option<String>,
41    #[serde(default, skip_serializing_if = "Option::is_none")]
42    pub pages: Option<i64>,
43    #[serde(default, skip_serializing_if = "Option::is_none")]
44    pub words: Option<i64>,
45    #[serde(default, skip_serializing_if = "Option::is_none")]
46    pub characters: Option<i64>,
47    #[serde(
48        rename = "PresentationFormat",
49        default,
50        skip_serializing_if = "Option::is_none"
51    )]
52    pub presentation_format: Option<String>,
53    #[serde(default, skip_serializing_if = "Option::is_none")]
54    pub lines: Option<i64>,
55    #[serde(default, skip_serializing_if = "Option::is_none")]
56    pub paragraphs: Option<i64>,
57    #[serde(default, skip_serializing_if = "Option::is_none")]
58    pub slides: Option<i64>,
59    #[serde(default, skip_serializing_if = "Option::is_none")]
60    pub notes: Option<i64>,
61    #[serde(rename = "TotalTime", default, skip_serializing_if = "Option::is_none")]
62    pub total_time: Option<i64>,
63    #[serde(
64        rename = "HiddenSlides",
65        default,
66        skip_serializing_if = "Option::is_none"
67    )]
68    pub hidden_slides: Option<i64>,
69    #[serde(rename = "MMClips", default, skip_serializing_if = "Option::is_none")]
70    pub mm_clips: Option<i64>,
71    #[serde(default, skip_serializing_if = "Option::is_none")]
72    pub scale_crop: Option<bool>,
73    #[serde(
74        rename = "HeadingPairs",
75        default,
76        skip_serializing_if = "Option::is_none"
77    )]
78    pub heading_pairs: Option<XlsxVectorVariant>,
79    #[serde(
80        rename = "TitlesOfParts",
81        default,
82        skip_serializing_if = "Option::is_none"
83    )]
84    pub titles_of_parts: Option<XlsxVectorLpstr>,
85    #[serde(
86        rename = "LinksUpToDate",
87        default,
88        skip_serializing_if = "Option::is_none"
89    )]
90    pub links_up_to_date: Option<bool>,
91    #[serde(
92        rename = "CharactersWithSpaces",
93        default,
94        skip_serializing_if = "Option::is_none"
95    )]
96    pub characters_with_spaces: Option<i64>,
97    #[serde(rename = "SharedDoc", default, skip_serializing_if = "Option::is_none")]
98    pub shared_doc: Option<bool>,
99    #[serde(
100        rename = "HyperlinkBase",
101        default,
102        skip_serializing_if = "Option::is_none"
103    )]
104    pub hyperlink_base: Option<String>,
105    #[serde(rename = "HLinks", default, skip_serializing_if = "Option::is_none")]
106    pub h_links: Option<XlsxVectorVariant>,
107    #[serde(
108        rename = "HyperlinksChanged",
109        default,
110        skip_serializing_if = "Option::is_none"
111    )]
112    pub hyperlinks_changed: Option<bool>,
113    #[serde(rename = "DigSig", default, skip_serializing_if = "Option::is_none")]
114    pub dig_sig: Option<XlsxDigSig>,
115    #[serde(default, skip_serializing_if = "Option::is_none")]
116    pub application: Option<String>,
117    #[serde(
118        rename = "AppVersion",
119        default,
120        skip_serializing_if = "Option::is_none"
121    )]
122    pub app_version: Option<String>,
123    #[serde(
124        rename = "DocSecurity",
125        default,
126        skip_serializing_if = "Option::is_none"
127    )]
128    pub doc_security: Option<i64>,
129}
130
131/// Specifies the set of hyperlinks that were in the document when last saved.
132#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
133pub struct XlsxVectorVariant {
134    #[serde(rename = "$value", default)]
135    pub content: String,
136}
137
138#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
139pub struct XlsxVectorLpstr {
140    #[serde(rename = "$value", default)]
141    pub content: String,
142}
143
144/// Contains the signature of a digitally signed document.
145#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
146pub struct XlsxDigSig {
147    #[serde(flatten, default)]
148    pub inner: XlsxInnerXml,
149}