#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct PdfPermissions(u32);
bitflags::bitflags! {
impl PdfPermissions: u32 {
const PRINT = 1 << 2;
const MODIFY = 1 << 3;
const COPY = 1 << 4;
const ADD_ANNOTATIONS = 1 << 5;
const FILL_FORMS = 1 << 8;
const EXTRACT = 1 << 9;
const ASSEMBLE = 1 << 10;
const HIGH_QUALITY_PRINT = 1 << 11;
}
}
impl PdfPermissions {
pub(crate) fn to_lopdf(self) -> lopdf::Permissions {
let mut bits: u64 = u64::from(self.bits());
bits |= 0b11 << 6;
bits |= 0b1111 << 12;
bits |= 0xFFFF << 16;
bits |= 0xFFFF_FFFF << 32;
lopdf::Permissions::from_bits_retain(bits)
}
}