diff options
Diffstat (limited to 'src/utils.rs')
| -rw-r--r-- | src/utils.rs | 23 | 
1 files changed, 23 insertions, 0 deletions
| diff --git a/src/utils.rs b/src/utils.rs index 7ff4e41..12db115 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1,5 +1,7 @@  use lopdf::{Dictionary, Object}; +use crate::from_utf8; +  bitflags! {      pub struct FieldFlags: u32 {          const READONLY          = 0x1; @@ -47,3 +49,24 @@ pub fn get_field_flags(field: &Dictionary) -> u32 {          .as_i64()          .unwrap() as u32  } + +pub fn get_on_value(field: &Dictionary) -> String { +    let mut option = None; +    if let Ok(ap) = field.get(b"AP") { +        if let Ok(dict) = ap.as_dict() { +            if let Ok(values) = dict.get(b"N") { +                if let Ok(options) = values.as_dict() { +                    for (name, _) in options { +                        if let Ok(name) = from_utf8(name) { +                            if name != "Off" && option.is_none() { +                                option = Some(name.into()); +                            } +                        } +                    } +                } +            } +        } +    } + +    option.unwrap_or("Yes".into()) +} | 
