use crate::PdfDocument;
pub use pdf_xfa::error::XfaError;
pub use pdf_xfa::extract::XfaPackets;
pub use pdf_xfa::session::{
XfaCommitOutcome, XfaFieldModel, XfaFieldOption, XfaFieldType, XfaRect, XfaScriptError,
XfaScriptErrorKind, XfaScriptReport, XfaScriptsSkipped, XfaSession, XfaSetOutcome, XfaWidget,
XfaWriteValue, XfaWritebackReport,
};
pub use pdf_xfa::PresenceChange;
pub use xfa_json::{export_schema, form_tree_to_json, form_tree_to_value, FormData, FormSchema};
pub use xfa_layout_engine::form::{FormNodeId, FormTree};
pub fn extract_packets(document: &PdfDocument) -> Result<XfaPackets, XfaError> {
pdf_xfa::extract::extract_xfa(document.pdf())
}
pub fn has_xfa(document: &PdfDocument) -> bool {
pdf_xfa::extract::extract_xfa_from_acroform(document.pdf())
.is_some_and(|packets| packets.template().is_some())
}
pub fn flatten(document: &PdfDocument) -> Result<Vec<u8>, XfaError> {
pdf_xfa::flatten_xfa_to_pdf(document.pdf().data().as_ref())
}
pub fn flatten_cached(document: &PdfDocument) -> Result<std::sync::Arc<Vec<u8>>, XfaError> {
pdf_xfa::flatten_cache::flatten_cached(document.pdf().data().as_ref())
}
pub use pdf_xfa::flatten_cache::FlattenCacheStats;
pub fn flatten_cache_stats() -> FlattenCacheStats {
pdf_xfa::flatten_cache::stats()
}
pub fn clear_flatten_cache() {
pdf_xfa::flatten_cache::clear();
}
pub fn flatten_with_password(document: &PdfDocument, password: &str) -> Result<Vec<u8>, XfaError> {
pdf_xfa::flatten::flatten_xfa_to_pdf_with_password(document.pdf().data().as_ref(), password)
}