use serde::ser::SerializeStruct;
use serde::{Deserialize, Serialize, Serializer};
use crate::results::MinimalFallback;
#[derive(Debug, Clone, Deserialize, Default)]
pub struct PdfMetadata {
pub page_count: Option<usize>,
pub pdf_version: Option<String>,
pub is_encrypted: Option<bool>,
pub file_size: Option<usize>,
pub title: Option<String>,
pub author: Option<String>,
pub subject: Option<String>,
pub creator: Option<String>,
pub producer: Option<String>,
pub creation_date: Option<String>,
pub modification_date: Option<String>,
}
impl Serialize for PdfMetadata {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let mut state = serializer.serialize_struct("PdfMetadata", 11)?;
crate::serialize_optional!(state, self.page_count, "page_count");
crate::serialize_optional!(state, self.pdf_version, "pdf_version");
crate::serialize_optional!(state, self.title, "title");
crate::serialize_optional!(state, self.author, "author");
crate::serialize_optional!(state, self.subject, "subject");
crate::serialize_optional!(state, self.creator, "creator");
crate::serialize_optional!(state, self.producer, "producer");
crate::serialize_optional!(state, self.creation_date, "creation_date");
crate::serialize_optional!(state, self.modification_date, "modification_date");
crate::serialize_optional!(state, self.is_encrypted, "is_encrypted");
crate::serialize_optional!(state, self.file_size, "file_size");
state.end()
}
}
crate::impl_minimal_fallback!(PdfMetadata, file_size);