// Generated by gir (https://github.com/gtk-rs/gir @ 36917718ae60)
// from
// from gir-files (https://github.com/gtk-rs/gir-files @ 6cef10cd64df)
// DO NOT EDIT

#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
#![allow(
    clippy::approx_constant,
    clippy::type_complexity,
    clippy::unreadable_literal,
    clippy::upper_case_acronyms
)]
#![cfg_attr(docsrs, feature(doc_cfg))]

use cairo_sys as cairo;
use gio_sys as gio;
use glib_sys as glib;
use gobject_sys as gobject;

#[allow(unused_imports)]
use libc::{FILE, intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t};
#[cfg(unix)]
#[allow(unused_imports)]
use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
#[allow(unused_imports)]
use std::ffi::{
    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
};

#[allow(unused_imports)]
use glib::{GType, gboolean, gconstpointer, gpointer};

// Enums
pub type PopplerActionLayerAction = c_int;
pub const POPPLER_ACTION_LAYER_ON: PopplerActionLayerAction = 0;
pub const POPPLER_ACTION_LAYER_OFF: PopplerActionLayerAction = 1;
pub const POPPLER_ACTION_LAYER_TOGGLE: PopplerActionLayerAction = 2;

pub type PopplerActionMovieOperation = c_int;
pub const POPPLER_ACTION_MOVIE_PLAY: PopplerActionMovieOperation = 0;
pub const POPPLER_ACTION_MOVIE_PAUSE: PopplerActionMovieOperation = 1;
pub const POPPLER_ACTION_MOVIE_RESUME: PopplerActionMovieOperation = 2;
pub const POPPLER_ACTION_MOVIE_STOP: PopplerActionMovieOperation = 3;

pub type PopplerActionType = c_int;
pub const POPPLER_ACTION_UNKNOWN: PopplerActionType = 0;
pub const POPPLER_ACTION_NONE: PopplerActionType = 1;
pub const POPPLER_ACTION_GOTO_DEST: PopplerActionType = 2;
pub const POPPLER_ACTION_GOTO_REMOTE: PopplerActionType = 3;
pub const POPPLER_ACTION_LAUNCH: PopplerActionType = 4;
pub const POPPLER_ACTION_URI: PopplerActionType = 5;
pub const POPPLER_ACTION_NAMED: PopplerActionType = 6;
pub const POPPLER_ACTION_MOVIE: PopplerActionType = 7;
pub const POPPLER_ACTION_RENDITION: PopplerActionType = 8;
pub const POPPLER_ACTION_OCG_STATE: PopplerActionType = 9;
pub const POPPLER_ACTION_JAVASCRIPT: PopplerActionType = 10;
pub const POPPLER_ACTION_RESET_FORM: PopplerActionType = 11;

pub type PopplerAdditionalActionType = c_int;
pub const POPPLER_ADDITIONAL_ACTION_FIELD_MODIFIED: PopplerAdditionalActionType = 0;
pub const POPPLER_ADDITIONAL_ACTION_FORMAT_FIELD: PopplerAdditionalActionType = 1;
pub const POPPLER_ADDITIONAL_ACTION_VALIDATE_FIELD: PopplerAdditionalActionType = 2;
pub const POPPLER_ADDITIONAL_ACTION_CALCULATE_FIELD: PopplerAdditionalActionType = 3;

pub type PopplerAnnotExternalDataType = c_int;
pub const POPPLER_ANNOT_EXTERNAL_DATA_MARKUP_3D: PopplerAnnotExternalDataType = 0;
pub const POPPLER_ANNOT_EXTERNAL_DATA_MARKUP_UNKNOWN: PopplerAnnotExternalDataType = 1;

pub type PopplerAnnotFreeTextQuadding = c_int;
pub const POPPLER_ANNOT_FREE_TEXT_QUADDING_LEFT_JUSTIFIED: PopplerAnnotFreeTextQuadding = 0;
pub const POPPLER_ANNOT_FREE_TEXT_QUADDING_CENTERED: PopplerAnnotFreeTextQuadding = 1;
pub const POPPLER_ANNOT_FREE_TEXT_QUADDING_RIGHT_JUSTIFIED: PopplerAnnotFreeTextQuadding = 2;

pub type PopplerAnnotMarkupReplyType = c_int;
pub const POPPLER_ANNOT_MARKUP_REPLY_TYPE_R: PopplerAnnotMarkupReplyType = 0;
pub const POPPLER_ANNOT_MARKUP_REPLY_TYPE_GROUP: PopplerAnnotMarkupReplyType = 1;

pub type PopplerAnnotStampIcon = c_int;
pub const POPPLER_ANNOT_STAMP_ICON_UNKNOWN: PopplerAnnotStampIcon = 0;
pub const POPPLER_ANNOT_STAMP_ICON_APPROVED: PopplerAnnotStampIcon = 1;
pub const POPPLER_ANNOT_STAMP_ICON_AS_IS: PopplerAnnotStampIcon = 2;
pub const POPPLER_ANNOT_STAMP_ICON_CONFIDENTIAL: PopplerAnnotStampIcon = 3;
pub const POPPLER_ANNOT_STAMP_ICON_FINAL: PopplerAnnotStampIcon = 4;
pub const POPPLER_ANNOT_STAMP_ICON_EXPERIMENTAL: PopplerAnnotStampIcon = 5;
pub const POPPLER_ANNOT_STAMP_ICON_EXPIRED: PopplerAnnotStampIcon = 6;
pub const POPPLER_ANNOT_STAMP_ICON_NOT_APPROVED: PopplerAnnotStampIcon = 7;
pub const POPPLER_ANNOT_STAMP_ICON_NOT_FOR_PUBLIC_RELEASE: PopplerAnnotStampIcon = 8;
pub const POPPLER_ANNOT_STAMP_ICON_SOLD: PopplerAnnotStampIcon = 9;
pub const POPPLER_ANNOT_STAMP_ICON_DEPARTMENTAL: PopplerAnnotStampIcon = 10;
pub const POPPLER_ANNOT_STAMP_ICON_FOR_COMMENT: PopplerAnnotStampIcon = 11;
pub const POPPLER_ANNOT_STAMP_ICON_FOR_PUBLIC_RELEASE: PopplerAnnotStampIcon = 12;
pub const POPPLER_ANNOT_STAMP_ICON_TOP_SECRET: PopplerAnnotStampIcon = 13;
pub const POPPLER_ANNOT_STAMP_ICON_NONE: PopplerAnnotStampIcon = 14;

pub type PopplerAnnotTextState = c_int;
pub const POPPLER_ANNOT_TEXT_STATE_MARKED: PopplerAnnotTextState = 0;
pub const POPPLER_ANNOT_TEXT_STATE_UNMARKED: PopplerAnnotTextState = 1;
pub const POPPLER_ANNOT_TEXT_STATE_ACCEPTED: PopplerAnnotTextState = 2;
pub const POPPLER_ANNOT_TEXT_STATE_REJECTED: PopplerAnnotTextState = 3;
pub const POPPLER_ANNOT_TEXT_STATE_CANCELLED: PopplerAnnotTextState = 4;
pub const POPPLER_ANNOT_TEXT_STATE_COMPLETED: PopplerAnnotTextState = 5;
pub const POPPLER_ANNOT_TEXT_STATE_NONE: PopplerAnnotTextState = 6;
pub const POPPLER_ANNOT_TEXT_STATE_UNKNOWN: PopplerAnnotTextState = 7;

pub type PopplerAnnotType = c_int;
pub const POPPLER_ANNOT_UNKNOWN: PopplerAnnotType = 0;
pub const POPPLER_ANNOT_TEXT: PopplerAnnotType = 1;
pub const POPPLER_ANNOT_LINK: PopplerAnnotType = 2;
pub const POPPLER_ANNOT_FREE_TEXT: PopplerAnnotType = 3;
pub const POPPLER_ANNOT_LINE: PopplerAnnotType = 4;
pub const POPPLER_ANNOT_SQUARE: PopplerAnnotType = 5;
pub const POPPLER_ANNOT_CIRCLE: PopplerAnnotType = 6;
pub const POPPLER_ANNOT_POLYGON: PopplerAnnotType = 7;
pub const POPPLER_ANNOT_POLY_LINE: PopplerAnnotType = 8;
pub const POPPLER_ANNOT_HIGHLIGHT: PopplerAnnotType = 9;
pub const POPPLER_ANNOT_UNDERLINE: PopplerAnnotType = 10;
pub const POPPLER_ANNOT_SQUIGGLY: PopplerAnnotType = 11;
pub const POPPLER_ANNOT_STRIKE_OUT: PopplerAnnotType = 12;
pub const POPPLER_ANNOT_STAMP: PopplerAnnotType = 13;
pub const POPPLER_ANNOT_CARET: PopplerAnnotType = 14;
pub const POPPLER_ANNOT_INK: PopplerAnnotType = 15;
pub const POPPLER_ANNOT_POPUP: PopplerAnnotType = 16;
pub const POPPLER_ANNOT_FILE_ATTACHMENT: PopplerAnnotType = 17;
pub const POPPLER_ANNOT_SOUND: PopplerAnnotType = 18;
pub const POPPLER_ANNOT_MOVIE: PopplerAnnotType = 19;
pub const POPPLER_ANNOT_WIDGET: PopplerAnnotType = 20;
pub const POPPLER_ANNOT_SCREEN: PopplerAnnotType = 21;
pub const POPPLER_ANNOT_PRINTER_MARK: PopplerAnnotType = 22;
pub const POPPLER_ANNOT_TRAP_NET: PopplerAnnotType = 23;
pub const POPPLER_ANNOT_WATERMARK: PopplerAnnotType = 24;
pub const POPPLER_ANNOT_3D: PopplerAnnotType = 25;

pub type PopplerBackend = c_int;
pub const POPPLER_BACKEND_UNKNOWN: PopplerBackend = 0;
pub const POPPLER_BACKEND_SPLASH: PopplerBackend = 1;
pub const POPPLER_BACKEND_CAIRO: PopplerBackend = 2;

pub type PopplerCertificateStatus = c_int;
pub const POPPLER_CERTIFICATE_TRUSTED: PopplerCertificateStatus = 0;
pub const POPPLER_CERTIFICATE_UNTRUSTED_ISSUER: PopplerCertificateStatus = 1;
pub const POPPLER_CERTIFICATE_UNKNOWN_ISSUER: PopplerCertificateStatus = 2;
pub const POPPLER_CERTIFICATE_REVOKED: PopplerCertificateStatus = 3;
pub const POPPLER_CERTIFICATE_EXPIRED: PopplerCertificateStatus = 4;
pub const POPPLER_CERTIFICATE_GENERIC_ERROR: PopplerCertificateStatus = 5;
pub const POPPLER_CERTIFICATE_NOT_VERIFIED: PopplerCertificateStatus = 6;

pub type PopplerDestType = c_int;
pub const POPPLER_DEST_UNKNOWN: PopplerDestType = 0;
pub const POPPLER_DEST_XYZ: PopplerDestType = 1;
pub const POPPLER_DEST_FIT: PopplerDestType = 2;
pub const POPPLER_DEST_FITH: PopplerDestType = 3;
pub const POPPLER_DEST_FITV: PopplerDestType = 4;
pub const POPPLER_DEST_FITR: PopplerDestType = 5;
pub const POPPLER_DEST_FITB: PopplerDestType = 6;
pub const POPPLER_DEST_FITBH: PopplerDestType = 7;
pub const POPPLER_DEST_FITBV: PopplerDestType = 8;
pub const POPPLER_DEST_NAMED: PopplerDestType = 9;

pub type PopplerError = c_int;
pub const POPPLER_ERROR_INVALID: PopplerError = 0;
pub const POPPLER_ERROR_ENCRYPTED: PopplerError = 1;
pub const POPPLER_ERROR_OPEN_FILE: PopplerError = 2;
pub const POPPLER_ERROR_BAD_CATALOG: PopplerError = 3;
pub const POPPLER_ERROR_DAMAGED: PopplerError = 4;
pub const POPPLER_ERROR_SIGNING: PopplerError = 5;

pub type PopplerFontType = c_int;
pub const POPPLER_FONT_TYPE_UNKNOWN: PopplerFontType = 0;
pub const POPPLER_FONT_TYPE_TYPE1: PopplerFontType = 1;
pub const POPPLER_FONT_TYPE_TYPE1C: PopplerFontType = 2;
pub const POPPLER_FONT_TYPE_TYPE1COT: PopplerFontType = 3;
pub const POPPLER_FONT_TYPE_TYPE3: PopplerFontType = 4;
pub const POPPLER_FONT_TYPE_TRUETYPE: PopplerFontType = 5;
pub const POPPLER_FONT_TYPE_TRUETYPEOT: PopplerFontType = 6;
pub const POPPLER_FONT_TYPE_CID_TYPE0: PopplerFontType = 7;
pub const POPPLER_FONT_TYPE_CID_TYPE0C: PopplerFontType = 8;
pub const POPPLER_FONT_TYPE_CID_TYPE0COT: PopplerFontType = 9;
pub const POPPLER_FONT_TYPE_CID_TYPE2: PopplerFontType = 10;
pub const POPPLER_FONT_TYPE_CID_TYPE2OT: PopplerFontType = 11;

pub type PopplerFormButtonType = c_int;
pub const POPPLER_FORM_BUTTON_PUSH: PopplerFormButtonType = 0;
pub const POPPLER_FORM_BUTTON_CHECK: PopplerFormButtonType = 1;
pub const POPPLER_FORM_BUTTON_RADIO: PopplerFormButtonType = 2;

pub type PopplerFormChoiceType = c_int;
pub const POPPLER_FORM_CHOICE_COMBO: PopplerFormChoiceType = 0;
pub const POPPLER_FORM_CHOICE_LIST: PopplerFormChoiceType = 1;

pub type PopplerFormFieldType = c_int;
pub const POPPLER_FORM_FIELD_UNKNOWN: PopplerFormFieldType = 0;
pub const POPPLER_FORM_FIELD_BUTTON: PopplerFormFieldType = 1;
pub const POPPLER_FORM_FIELD_TEXT: PopplerFormFieldType = 2;
pub const POPPLER_FORM_FIELD_CHOICE: PopplerFormFieldType = 3;
pub const POPPLER_FORM_FIELD_SIGNATURE: PopplerFormFieldType = 4;

pub type PopplerFormTextType = c_int;
pub const POPPLER_FORM_TEXT_NORMAL: PopplerFormTextType = 0;
pub const POPPLER_FORM_TEXT_MULTILINE: PopplerFormTextType = 1;
pub const POPPLER_FORM_TEXT_FILE_SELECT: PopplerFormTextType = 2;

pub type PopplerMoviePlayMode = c_int;
pub const POPPLER_MOVIE_PLAY_MODE_ONCE: PopplerMoviePlayMode = 0;
pub const POPPLER_MOVIE_PLAY_MODE_OPEN: PopplerMoviePlayMode = 1;
pub const POPPLER_MOVIE_PLAY_MODE_REPEAT: PopplerMoviePlayMode = 2;
pub const POPPLER_MOVIE_PLAY_MODE_PALINDROME: PopplerMoviePlayMode = 3;

pub type PopplerPDFConformance = c_int;
pub const POPPLER_PDF_SUBTYPE_CONF_UNSET: PopplerPDFConformance = 0;
pub const POPPLER_PDF_SUBTYPE_CONF_A: PopplerPDFConformance = 1;
pub const POPPLER_PDF_SUBTYPE_CONF_B: PopplerPDFConformance = 2;
pub const POPPLER_PDF_SUBTYPE_CONF_G: PopplerPDFConformance = 3;
pub const POPPLER_PDF_SUBTYPE_CONF_N: PopplerPDFConformance = 4;
pub const POPPLER_PDF_SUBTYPE_CONF_P: PopplerPDFConformance = 5;
pub const POPPLER_PDF_SUBTYPE_CONF_PG: PopplerPDFConformance = 6;
pub const POPPLER_PDF_SUBTYPE_CONF_U: PopplerPDFConformance = 7;
pub const POPPLER_PDF_SUBTYPE_CONF_NONE: PopplerPDFConformance = 8;

pub type PopplerPDFPart = c_int;
pub const POPPLER_PDF_SUBTYPE_PART_UNSET: PopplerPDFPart = 0;
pub const POPPLER_PDF_SUBTYPE_PART_1: PopplerPDFPart = 1;
pub const POPPLER_PDF_SUBTYPE_PART_2: PopplerPDFPart = 2;
pub const POPPLER_PDF_SUBTYPE_PART_3: PopplerPDFPart = 3;
pub const POPPLER_PDF_SUBTYPE_PART_4: PopplerPDFPart = 4;
pub const POPPLER_PDF_SUBTYPE_PART_5: PopplerPDFPart = 5;
pub const POPPLER_PDF_SUBTYPE_PART_6: PopplerPDFPart = 6;
pub const POPPLER_PDF_SUBTYPE_PART_7: PopplerPDFPart = 7;
pub const POPPLER_PDF_SUBTYPE_PART_8: PopplerPDFPart = 8;
pub const POPPLER_PDF_SUBTYPE_PART_NONE: PopplerPDFPart = 9;

pub type PopplerPDFSubtype = c_int;
pub const POPPLER_PDF_SUBTYPE_UNSET: PopplerPDFSubtype = 0;
pub const POPPLER_PDF_SUBTYPE_PDF_A: PopplerPDFSubtype = 1;
pub const POPPLER_PDF_SUBTYPE_PDF_E: PopplerPDFSubtype = 2;
pub const POPPLER_PDF_SUBTYPE_PDF_UA: PopplerPDFSubtype = 3;
pub const POPPLER_PDF_SUBTYPE_PDF_VT: PopplerPDFSubtype = 4;
pub const POPPLER_PDF_SUBTYPE_PDF_X: PopplerPDFSubtype = 5;
pub const POPPLER_PDF_SUBTYPE_NONE: PopplerPDFSubtype = 6;

pub type PopplerPageLayout = c_int;
pub const POPPLER_PAGE_LAYOUT_UNSET: PopplerPageLayout = 0;
pub const POPPLER_PAGE_LAYOUT_SINGLE_PAGE: PopplerPageLayout = 1;
pub const POPPLER_PAGE_LAYOUT_ONE_COLUMN: PopplerPageLayout = 2;
pub const POPPLER_PAGE_LAYOUT_TWO_COLUMN_LEFT: PopplerPageLayout = 3;
pub const POPPLER_PAGE_LAYOUT_TWO_COLUMN_RIGHT: PopplerPageLayout = 4;
pub const POPPLER_PAGE_LAYOUT_TWO_PAGE_LEFT: PopplerPageLayout = 5;
pub const POPPLER_PAGE_LAYOUT_TWO_PAGE_RIGHT: PopplerPageLayout = 6;

pub type PopplerPageMode = c_int;
pub const POPPLER_PAGE_MODE_UNSET: PopplerPageMode = 0;
pub const POPPLER_PAGE_MODE_NONE: PopplerPageMode = 1;
pub const POPPLER_PAGE_MODE_USE_OUTLINES: PopplerPageMode = 2;
pub const POPPLER_PAGE_MODE_USE_THUMBS: PopplerPageMode = 3;
pub const POPPLER_PAGE_MODE_FULL_SCREEN: PopplerPageMode = 4;
pub const POPPLER_PAGE_MODE_USE_OC: PopplerPageMode = 5;
pub const POPPLER_PAGE_MODE_USE_ATTACHMENTS: PopplerPageMode = 6;

pub type PopplerPageTransitionAlignment = c_int;
pub const POPPLER_PAGE_TRANSITION_HORIZONTAL: PopplerPageTransitionAlignment = 0;
pub const POPPLER_PAGE_TRANSITION_VERTICAL: PopplerPageTransitionAlignment = 1;

pub type PopplerPageTransitionDirection = c_int;
pub const POPPLER_PAGE_TRANSITION_INWARD: PopplerPageTransitionDirection = 0;
pub const POPPLER_PAGE_TRANSITION_OUTWARD: PopplerPageTransitionDirection = 1;

pub type PopplerPageTransitionType = c_int;
pub const POPPLER_PAGE_TRANSITION_REPLACE: PopplerPageTransitionType = 0;
pub const POPPLER_PAGE_TRANSITION_SPLIT: PopplerPageTransitionType = 1;
pub const POPPLER_PAGE_TRANSITION_BLINDS: PopplerPageTransitionType = 2;
pub const POPPLER_PAGE_TRANSITION_BOX: PopplerPageTransitionType = 3;
pub const POPPLER_PAGE_TRANSITION_WIPE: PopplerPageTransitionType = 4;
pub const POPPLER_PAGE_TRANSITION_DISSOLVE: PopplerPageTransitionType = 5;
pub const POPPLER_PAGE_TRANSITION_GLITTER: PopplerPageTransitionType = 6;
pub const POPPLER_PAGE_TRANSITION_FLY: PopplerPageTransitionType = 7;
pub const POPPLER_PAGE_TRANSITION_PUSH: PopplerPageTransitionType = 8;
pub const POPPLER_PAGE_TRANSITION_COVER: PopplerPageTransitionType = 9;
pub const POPPLER_PAGE_TRANSITION_UNCOVER: PopplerPageTransitionType = 10;
pub const POPPLER_PAGE_TRANSITION_FADE: PopplerPageTransitionType = 11;

pub type PopplerPrintDuplex = c_int;
pub const POPPLER_PRINT_DUPLEX_NONE: PopplerPrintDuplex = 0;
pub const POPPLER_PRINT_DUPLEX_SIMPLEX: PopplerPrintDuplex = 1;
pub const POPPLER_PRINT_DUPLEX_DUPLEX_FLIP_SHORT_EDGE: PopplerPrintDuplex = 2;
pub const POPPLER_PRINT_DUPLEX_DUPLEX_FLIP_LONG_EDGE: PopplerPrintDuplex = 3;

pub type PopplerPrintScaling = c_int;
pub const POPPLER_PRINT_SCALING_APP_DEFAULT: PopplerPrintScaling = 0;
pub const POPPLER_PRINT_SCALING_NONE: PopplerPrintScaling = 1;

pub type PopplerSelectionStyle = c_int;
pub const POPPLER_SELECTION_GLYPH: PopplerSelectionStyle = 0;
pub const POPPLER_SELECTION_WORD: PopplerSelectionStyle = 1;
pub const POPPLER_SELECTION_LINE: PopplerSelectionStyle = 2;

pub type PopplerSignatureStatus = c_int;
pub const POPPLER_SIGNATURE_VALID: PopplerSignatureStatus = 0;
pub const POPPLER_SIGNATURE_INVALID: PopplerSignatureStatus = 1;
pub const POPPLER_SIGNATURE_DIGEST_MISMATCH: PopplerSignatureStatus = 2;
pub const POPPLER_SIGNATURE_DECODING_ERROR: PopplerSignatureStatus = 3;
pub const POPPLER_SIGNATURE_GENERIC_ERROR: PopplerSignatureStatus = 4;
pub const POPPLER_SIGNATURE_NOT_FOUND: PopplerSignatureStatus = 5;
pub const POPPLER_SIGNATURE_NOT_VERIFIED: PopplerSignatureStatus = 6;

pub type PopplerStretch = c_int;
pub const POPPLER_STRETCH_ULTRA_CONDENSED: PopplerStretch = 0;
pub const POPPLER_STRETCH_EXTRA_CONDENSED: PopplerStretch = 1;
pub const POPPLER_STRETCH_CONDENSED: PopplerStretch = 2;
pub const POPPLER_STRETCH_SEMI_CONDENSED: PopplerStretch = 3;
pub const POPPLER_STRETCH_NORMAL: PopplerStretch = 4;
pub const POPPLER_STRETCH_SEMI_EXPANDED: PopplerStretch = 5;
pub const POPPLER_STRETCH_EXPANDED: PopplerStretch = 6;
pub const POPPLER_STRETCH_EXTRA_EXPANDED: PopplerStretch = 7;
pub const POPPLER_STRETCH_ULTRA_EXPANDED: PopplerStretch = 8;

pub type PopplerStructureBlockAlign = c_int;
pub const POPPLER_STRUCTURE_BLOCK_ALIGN_BEFORE: PopplerStructureBlockAlign = 0;
pub const POPPLER_STRUCTURE_BLOCK_ALIGN_MIDDLE: PopplerStructureBlockAlign = 1;
pub const POPPLER_STRUCTURE_BLOCK_ALIGN_AFTER: PopplerStructureBlockAlign = 2;
pub const POPPLER_STRUCTURE_BLOCK_ALIGN_JUSTIFY: PopplerStructureBlockAlign = 3;

pub type PopplerStructureBorderStyle = c_int;
pub const POPPLER_STRUCTURE_BORDER_STYLE_NONE: PopplerStructureBorderStyle = 0;
pub const POPPLER_STRUCTURE_BORDER_STYLE_HIDDEN: PopplerStructureBorderStyle = 1;
pub const POPPLER_STRUCTURE_BORDER_STYLE_DOTTED: PopplerStructureBorderStyle = 2;
pub const POPPLER_STRUCTURE_BORDER_STYLE_DASHED: PopplerStructureBorderStyle = 3;
pub const POPPLER_STRUCTURE_BORDER_STYLE_SOLID: PopplerStructureBorderStyle = 4;
pub const POPPLER_STRUCTURE_BORDER_STYLE_DOUBLE: PopplerStructureBorderStyle = 5;
pub const POPPLER_STRUCTURE_BORDER_STYLE_GROOVE: PopplerStructureBorderStyle = 6;
pub const POPPLER_STRUCTURE_BORDER_STYLE_INSET: PopplerStructureBorderStyle = 7;
pub const POPPLER_STRUCTURE_BORDER_STYLE_OUTSET: PopplerStructureBorderStyle = 8;

pub type PopplerStructureElementKind = c_int;
pub const POPPLER_STRUCTURE_ELEMENT_CONTENT: PopplerStructureElementKind = 0;
pub const POPPLER_STRUCTURE_ELEMENT_OBJECT_REFERENCE: PopplerStructureElementKind = 1;
pub const POPPLER_STRUCTURE_ELEMENT_DOCUMENT: PopplerStructureElementKind = 2;
pub const POPPLER_STRUCTURE_ELEMENT_PART: PopplerStructureElementKind = 3;
pub const POPPLER_STRUCTURE_ELEMENT_ARTICLE: PopplerStructureElementKind = 4;
pub const POPPLER_STRUCTURE_ELEMENT_SECTION: PopplerStructureElementKind = 5;
pub const POPPLER_STRUCTURE_ELEMENT_DIV: PopplerStructureElementKind = 6;
pub const POPPLER_STRUCTURE_ELEMENT_SPAN: PopplerStructureElementKind = 7;
pub const POPPLER_STRUCTURE_ELEMENT_QUOTE: PopplerStructureElementKind = 8;
pub const POPPLER_STRUCTURE_ELEMENT_NOTE: PopplerStructureElementKind = 9;
pub const POPPLER_STRUCTURE_ELEMENT_REFERENCE: PopplerStructureElementKind = 10;
pub const POPPLER_STRUCTURE_ELEMENT_BIBENTRY: PopplerStructureElementKind = 11;
pub const POPPLER_STRUCTURE_ELEMENT_CODE: PopplerStructureElementKind = 12;
pub const POPPLER_STRUCTURE_ELEMENT_LINK: PopplerStructureElementKind = 13;
pub const POPPLER_STRUCTURE_ELEMENT_ANNOT: PopplerStructureElementKind = 14;
pub const POPPLER_STRUCTURE_ELEMENT_BLOCKQUOTE: PopplerStructureElementKind = 15;
pub const POPPLER_STRUCTURE_ELEMENT_CAPTION: PopplerStructureElementKind = 16;
pub const POPPLER_STRUCTURE_ELEMENT_NONSTRUCT: PopplerStructureElementKind = 17;
pub const POPPLER_STRUCTURE_ELEMENT_TOC: PopplerStructureElementKind = 18;
pub const POPPLER_STRUCTURE_ELEMENT_TOC_ITEM: PopplerStructureElementKind = 19;
pub const POPPLER_STRUCTURE_ELEMENT_INDEX: PopplerStructureElementKind = 20;
pub const POPPLER_STRUCTURE_ELEMENT_PRIVATE: PopplerStructureElementKind = 21;
pub const POPPLER_STRUCTURE_ELEMENT_PARAGRAPH: PopplerStructureElementKind = 22;
pub const POPPLER_STRUCTURE_ELEMENT_HEADING: PopplerStructureElementKind = 23;
pub const POPPLER_STRUCTURE_ELEMENT_HEADING_1: PopplerStructureElementKind = 24;
pub const POPPLER_STRUCTURE_ELEMENT_HEADING_2: PopplerStructureElementKind = 25;
pub const POPPLER_STRUCTURE_ELEMENT_HEADING_3: PopplerStructureElementKind = 26;
pub const POPPLER_STRUCTURE_ELEMENT_HEADING_4: PopplerStructureElementKind = 27;
pub const POPPLER_STRUCTURE_ELEMENT_HEADING_5: PopplerStructureElementKind = 28;
pub const POPPLER_STRUCTURE_ELEMENT_HEADING_6: PopplerStructureElementKind = 29;
pub const POPPLER_STRUCTURE_ELEMENT_LIST: PopplerStructureElementKind = 30;
pub const POPPLER_STRUCTURE_ELEMENT_LIST_ITEM: PopplerStructureElementKind = 31;
pub const POPPLER_STRUCTURE_ELEMENT_LIST_LABEL: PopplerStructureElementKind = 32;
pub const POPPLER_STRUCTURE_ELEMENT_LIST_BODY: PopplerStructureElementKind = 33;
pub const POPPLER_STRUCTURE_ELEMENT_TABLE: PopplerStructureElementKind = 34;
pub const POPPLER_STRUCTURE_ELEMENT_TABLE_ROW: PopplerStructureElementKind = 35;
pub const POPPLER_STRUCTURE_ELEMENT_TABLE_HEADING: PopplerStructureElementKind = 36;
pub const POPPLER_STRUCTURE_ELEMENT_TABLE_DATA: PopplerStructureElementKind = 37;
pub const POPPLER_STRUCTURE_ELEMENT_TABLE_HEADER: PopplerStructureElementKind = 38;
pub const POPPLER_STRUCTURE_ELEMENT_TABLE_FOOTER: PopplerStructureElementKind = 39;
pub const POPPLER_STRUCTURE_ELEMENT_TABLE_BODY: PopplerStructureElementKind = 40;
pub const POPPLER_STRUCTURE_ELEMENT_RUBY: PopplerStructureElementKind = 41;
pub const POPPLER_STRUCTURE_ELEMENT_RUBY_BASE_TEXT: PopplerStructureElementKind = 42;
pub const POPPLER_STRUCTURE_ELEMENT_RUBY_ANNOT_TEXT: PopplerStructureElementKind = 43;
pub const POPPLER_STRUCTURE_ELEMENT_RUBY_PUNCTUATION: PopplerStructureElementKind = 44;
pub const POPPLER_STRUCTURE_ELEMENT_WARICHU: PopplerStructureElementKind = 45;
pub const POPPLER_STRUCTURE_ELEMENT_WARICHU_TEXT: PopplerStructureElementKind = 46;
pub const POPPLER_STRUCTURE_ELEMENT_WARICHU_PUNCTUATION: PopplerStructureElementKind = 47;
pub const POPPLER_STRUCTURE_ELEMENT_FIGURE: PopplerStructureElementKind = 48;
pub const POPPLER_STRUCTURE_ELEMENT_FORMULA: PopplerStructureElementKind = 49;
pub const POPPLER_STRUCTURE_ELEMENT_FORM: PopplerStructureElementKind = 50;

pub type PopplerStructureFormRole = c_int;
pub const POPPLER_STRUCTURE_FORM_ROLE_UNDEFINED: PopplerStructureFormRole = 0;
pub const POPPLER_STRUCTURE_FORM_ROLE_RADIO_BUTTON: PopplerStructureFormRole = 1;
pub const POPPLER_STRUCTURE_FORM_ROLE_PUSH_BUTTON: PopplerStructureFormRole = 2;
pub const POPPLER_STRUCTURE_FORM_ROLE_TEXT_VALUE: PopplerStructureFormRole = 3;
pub const POPPLER_STRUCTURE_FORM_ROLE_CHECKBOX: PopplerStructureFormRole = 4;

pub type PopplerStructureFormState = c_int;
pub const POPPLER_STRUCTURE_FORM_STATE_ON: PopplerStructureFormState = 0;
pub const POPPLER_STRUCTURE_FORM_STATE_OFF: PopplerStructureFormState = 1;
pub const POPPLER_STRUCTURE_FORM_STATE_NEUTRAL: PopplerStructureFormState = 2;

pub type PopplerStructureGlyphOrientation = c_int;
pub const POPPLER_STRUCTURE_GLYPH_ORIENTATION_AUTO: PopplerStructureGlyphOrientation = 0;
pub const POPPLER_STRUCTURE_GLYPH_ORIENTATION_0: PopplerStructureGlyphOrientation = 0;
pub const POPPLER_STRUCTURE_GLYPH_ORIENTATION_90: PopplerStructureGlyphOrientation = 1;
pub const POPPLER_STRUCTURE_GLYPH_ORIENTATION_180: PopplerStructureGlyphOrientation = 2;
pub const POPPLER_STRUCTURE_GLYPH_ORIENTATION_270: PopplerStructureGlyphOrientation = 3;

pub type PopplerStructureInlineAlign = c_int;
pub const POPPLER_STRUCTURE_INLINE_ALIGN_START: PopplerStructureInlineAlign = 0;
pub const POPPLER_STRUCTURE_INLINE_ALIGN_CENTER: PopplerStructureInlineAlign = 1;
pub const POPPLER_STRUCTURE_INLINE_ALIGN_END: PopplerStructureInlineAlign = 2;

pub type PopplerStructureListNumbering = c_int;
pub const POPPLER_STRUCTURE_LIST_NUMBERING_NONE: PopplerStructureListNumbering = 0;
pub const POPPLER_STRUCTURE_LIST_NUMBERING_DISC: PopplerStructureListNumbering = 1;
pub const POPPLER_STRUCTURE_LIST_NUMBERING_CIRCLE: PopplerStructureListNumbering = 2;
pub const POPPLER_STRUCTURE_LIST_NUMBERING_SQUARE: PopplerStructureListNumbering = 3;
pub const POPPLER_STRUCTURE_LIST_NUMBERING_DECIMAL: PopplerStructureListNumbering = 4;
pub const POPPLER_STRUCTURE_LIST_NUMBERING_UPPER_ROMAN: PopplerStructureListNumbering = 5;
pub const POPPLER_STRUCTURE_LIST_NUMBERING_LOWER_ROMAN: PopplerStructureListNumbering = 6;
pub const POPPLER_STRUCTURE_LIST_NUMBERING_UPPER_ALPHA: PopplerStructureListNumbering = 7;
pub const POPPLER_STRUCTURE_LIST_NUMBERING_LOWER_ALPHA: PopplerStructureListNumbering = 8;

pub type PopplerStructurePlacement = c_int;
pub const POPPLER_STRUCTURE_PLACEMENT_BLOCK: PopplerStructurePlacement = 0;
pub const POPPLER_STRUCTURE_PLACEMENT_INLINE: PopplerStructurePlacement = 1;
pub const POPPLER_STRUCTURE_PLACEMENT_BEFORE: PopplerStructurePlacement = 2;
pub const POPPLER_STRUCTURE_PLACEMENT_START: PopplerStructurePlacement = 3;
pub const POPPLER_STRUCTURE_PLACEMENT_END: PopplerStructurePlacement = 4;

pub type PopplerStructureRubyAlign = c_int;
pub const POPPLER_STRUCTURE_RUBY_ALIGN_START: PopplerStructureRubyAlign = 0;
pub const POPPLER_STRUCTURE_RUBY_ALIGN_CENTER: PopplerStructureRubyAlign = 1;
pub const POPPLER_STRUCTURE_RUBY_ALIGN_END: PopplerStructureRubyAlign = 2;
pub const POPPLER_STRUCTURE_RUBY_ALIGN_JUSTIFY: PopplerStructureRubyAlign = 3;
pub const POPPLER_STRUCTURE_RUBY_ALIGN_DISTRIBUTE: PopplerStructureRubyAlign = 4;

pub type PopplerStructureRubyPosition = c_int;
pub const POPPLER_STRUCTURE_RUBY_POSITION_BEFORE: PopplerStructureRubyPosition = 0;
pub const POPPLER_STRUCTURE_RUBY_POSITION_AFTER: PopplerStructureRubyPosition = 1;
pub const POPPLER_STRUCTURE_RUBY_POSITION_WARICHU: PopplerStructureRubyPosition = 2;
pub const POPPLER_STRUCTURE_RUBY_POSITION_INLINE: PopplerStructureRubyPosition = 3;

pub type PopplerStructureTableScope = c_int;
pub const POPPLER_STRUCTURE_TABLE_SCOPE_ROW: PopplerStructureTableScope = 0;
pub const POPPLER_STRUCTURE_TABLE_SCOPE_COLUMN: PopplerStructureTableScope = 1;
pub const POPPLER_STRUCTURE_TABLE_SCOPE_BOTH: PopplerStructureTableScope = 2;

pub type PopplerStructureTextAlign = c_int;
pub const POPPLER_STRUCTURE_TEXT_ALIGN_START: PopplerStructureTextAlign = 0;
pub const POPPLER_STRUCTURE_TEXT_ALIGN_CENTER: PopplerStructureTextAlign = 1;
pub const POPPLER_STRUCTURE_TEXT_ALIGN_END: PopplerStructureTextAlign = 2;
pub const POPPLER_STRUCTURE_TEXT_ALIGN_JUSTIFY: PopplerStructureTextAlign = 3;

pub type PopplerStructureTextDecoration = c_int;
pub const POPPLER_STRUCTURE_TEXT_DECORATION_NONE: PopplerStructureTextDecoration = 0;
pub const POPPLER_STRUCTURE_TEXT_DECORATION_UNDERLINE: PopplerStructureTextDecoration = 1;
pub const POPPLER_STRUCTURE_TEXT_DECORATION_OVERLINE: PopplerStructureTextDecoration = 2;
pub const POPPLER_STRUCTURE_TEXT_DECORATION_LINETHROUGH: PopplerStructureTextDecoration = 3;

pub type PopplerStructureWritingMode = c_int;
pub const POPPLER_STRUCTURE_WRITING_MODE_LR_TB: PopplerStructureWritingMode = 0;
pub const POPPLER_STRUCTURE_WRITING_MODE_RL_TB: PopplerStructureWritingMode = 1;
pub const POPPLER_STRUCTURE_WRITING_MODE_TB_RL: PopplerStructureWritingMode = 2;

pub type PopplerStyle = c_int;
pub const POPPLER_STYLE_NORMAL: PopplerStyle = 0;
pub const POPPLER_STYLE_OBLIQUE: PopplerStyle = 1;
pub const POPPLER_STYLE_ITALIC: PopplerStyle = 2;

pub type PopplerWeight = c_int;
pub const POPPLER_WEIGHT_THIN: PopplerWeight = 100;
pub const POPPLER_WEIGHT_ULTRALIGHT: PopplerWeight = 200;
pub const POPPLER_WEIGHT_LIGHT: PopplerWeight = 300;
pub const POPPLER_WEIGHT_NORMAL: PopplerWeight = 400;
pub const POPPLER_WEIGHT_MEDIUM: PopplerWeight = 500;
pub const POPPLER_WEIGHT_SEMIBOLD: PopplerWeight = 600;
pub const POPPLER_WEIGHT_BOLD: PopplerWeight = 700;
pub const POPPLER_WEIGHT_ULTRABOLD: PopplerWeight = 800;
pub const POPPLER_WEIGHT_HEAVY: PopplerWeight = 900;

// Constants
pub const POPPLER_ANNOT_TEXT_ICON_CHECK: &[u8] = b"Check\0";
pub const POPPLER_ANNOT_TEXT_ICON_CIRCLE: &[u8] = b"Circle\0";
pub const POPPLER_ANNOT_TEXT_ICON_COMMENT: &[u8] = b"Comment\0";
pub const POPPLER_ANNOT_TEXT_ICON_CROSS: &[u8] = b"Cross\0";
pub const POPPLER_ANNOT_TEXT_ICON_CROSS_HAIRS: &[u8] = b"CrossHairs\0";
pub const POPPLER_ANNOT_TEXT_ICON_HELP: &[u8] = b"Help\0";
pub const POPPLER_ANNOT_TEXT_ICON_INSERT: &[u8] = b"Insert\0";
pub const POPPLER_ANNOT_TEXT_ICON_KEY: &[u8] = b"Key\0";
pub const POPPLER_ANNOT_TEXT_ICON_NEW_PARAGRAPH: &[u8] = b"NewParagraph\0";
pub const POPPLER_ANNOT_TEXT_ICON_NOTE: &[u8] = b"Note\0";
pub const POPPLER_ANNOT_TEXT_ICON_PARAGRAPH: &[u8] = b"Paragraph\0";
pub const POPPLER_ANNOT_TEXT_ICON_RIGHT_ARROW: &[u8] = b"RightArrow\0";
pub const POPPLER_ANNOT_TEXT_ICON_RIGHT_POINTER: &[u8] = b"RightPointer\0";
pub const POPPLER_ANNOT_TEXT_ICON_STAR: &[u8] = b"Star\0";
pub const POPPLER_ANNOT_TEXT_ICON_UP_ARROW: &[u8] = b"UpArrow\0";
pub const POPPLER_ANNOT_TEXT_ICON_UP_LEFT_ARROW: &[u8] = b"UpLeftArrow\0";
pub const POPPLER_HAS_CAIRO: c_int = 1;

// Flags
pub type PopplerAnnotFlag = c_uint;
pub const POPPLER_ANNOT_FLAG_UNKNOWN: PopplerAnnotFlag = 0;
pub const POPPLER_ANNOT_FLAG_INVISIBLE: PopplerAnnotFlag = 1;
pub const POPPLER_ANNOT_FLAG_HIDDEN: PopplerAnnotFlag = 2;
pub const POPPLER_ANNOT_FLAG_PRINT: PopplerAnnotFlag = 4;
pub const POPPLER_ANNOT_FLAG_NO_ZOOM: PopplerAnnotFlag = 8;
pub const POPPLER_ANNOT_FLAG_NO_ROTATE: PopplerAnnotFlag = 16;
pub const POPPLER_ANNOT_FLAG_NO_VIEW: PopplerAnnotFlag = 32;
pub const POPPLER_ANNOT_FLAG_READ_ONLY: PopplerAnnotFlag = 64;
pub const POPPLER_ANNOT_FLAG_LOCKED: PopplerAnnotFlag = 128;
pub const POPPLER_ANNOT_FLAG_TOGGLE_NO_VIEW: PopplerAnnotFlag = 256;
pub const POPPLER_ANNOT_FLAG_LOCKED_CONTENTS: PopplerAnnotFlag = 512;

pub type PopplerFindFlags = c_uint;
pub const POPPLER_FIND_DEFAULT: PopplerFindFlags = 0;
pub const POPPLER_FIND_CASE_SENSITIVE: PopplerFindFlags = 1;
pub const POPPLER_FIND_BACKWARDS: PopplerFindFlags = 2;
pub const POPPLER_FIND_WHOLE_WORDS_ONLY: PopplerFindFlags = 4;
pub const POPPLER_FIND_IGNORE_DIACRITICS: PopplerFindFlags = 8;
pub const POPPLER_FIND_MULTILINE: PopplerFindFlags = 16;

pub type PopplerPermissions = c_uint;
pub const POPPLER_PERMISSIONS_OK_TO_PRINT: PopplerPermissions = 1;
pub const POPPLER_PERMISSIONS_OK_TO_MODIFY: PopplerPermissions = 2;
pub const POPPLER_PERMISSIONS_OK_TO_COPY: PopplerPermissions = 4;
pub const POPPLER_PERMISSIONS_OK_TO_ADD_NOTES: PopplerPermissions = 8;
pub const POPPLER_PERMISSIONS_OK_TO_FILL_FORM: PopplerPermissions = 16;
pub const POPPLER_PERMISSIONS_OK_TO_EXTRACT_CONTENTS: PopplerPermissions = 32;
pub const POPPLER_PERMISSIONS_OK_TO_ASSEMBLE: PopplerPermissions = 64;
pub const POPPLER_PERMISSIONS_OK_TO_PRINT_HIGH_RESOLUTION: PopplerPermissions = 128;
pub const POPPLER_PERMISSIONS_FULL: PopplerPermissions = 255;

pub type PopplerPrintFlags = c_uint;
pub const POPPLER_PRINT_DOCUMENT: PopplerPrintFlags = 0;
pub const POPPLER_PRINT_MARKUP_ANNOTS: PopplerPrintFlags = 1;
pub const POPPLER_PRINT_STAMP_ANNOTS_ONLY: PopplerPrintFlags = 2;
pub const POPPLER_PRINT_ALL: PopplerPrintFlags = 1;

pub type PopplerRenderAnnotsFlags = c_uint;
pub const POPPLER_RENDER_ANNOTS_NONE: PopplerRenderAnnotsFlags = 0;
pub const POPPLER_RENDER_ANNOTS_TEXT: PopplerRenderAnnotsFlags = 1;
pub const POPPLER_RENDER_ANNOTS_LINK: PopplerRenderAnnotsFlags = 2;
pub const POPPLER_RENDER_ANNOTS_FREETEXT: PopplerRenderAnnotsFlags = 4;
pub const POPPLER_RENDER_ANNOTS_LINE: PopplerRenderAnnotsFlags = 8;
pub const POPPLER_RENDER_ANNOTS_SQUARE: PopplerRenderAnnotsFlags = 16;
pub const POPPLER_RENDER_ANNOTS_CIRCLE: PopplerRenderAnnotsFlags = 32;
pub const POPPLER_RENDER_ANNOTS_POLYGON: PopplerRenderAnnotsFlags = 64;
pub const POPPLER_RENDER_ANNOTS_POLYLINE: PopplerRenderAnnotsFlags = 128;
pub const POPPLER_RENDER_ANNOTS_HIGHLIGHT: PopplerRenderAnnotsFlags = 256;
pub const POPPLER_RENDER_ANNOTS_UNDERLINE: PopplerRenderAnnotsFlags = 512;
pub const POPPLER_RENDER_ANNOTS_SQUIGGLY: PopplerRenderAnnotsFlags = 1024;
pub const POPPLER_RENDER_ANNOTS_STRIKEOUT: PopplerRenderAnnotsFlags = 2048;
pub const POPPLER_RENDER_ANNOTS_STAMP: PopplerRenderAnnotsFlags = 4096;
pub const POPPLER_RENDER_ANNOTS_CARET: PopplerRenderAnnotsFlags = 8192;
pub const POPPLER_RENDER_ANNOTS_INK: PopplerRenderAnnotsFlags = 16384;
pub const POPPLER_RENDER_ANNOTS_POPUP: PopplerRenderAnnotsFlags = 32768;
pub const POPPLER_RENDER_ANNOTS_FILEATTACHMENT: PopplerRenderAnnotsFlags = 65536;
pub const POPPLER_RENDER_ANNOTS_SOUND: PopplerRenderAnnotsFlags = 131072;
pub const POPPLER_RENDER_ANNOTS_MOVIE: PopplerRenderAnnotsFlags = 262144;
pub const POPPLER_RENDER_ANNOTS_WIDGET: PopplerRenderAnnotsFlags = 524288;
pub const POPPLER_RENDER_ANNOTS_SCREEN: PopplerRenderAnnotsFlags = 1048576;
pub const POPPLER_RENDER_ANNOTS_PRINTERMARK: PopplerRenderAnnotsFlags = 2097152;
pub const POPPLER_RENDER_ANNOTS_TRAPNET: PopplerRenderAnnotsFlags = 4194304;
pub const POPPLER_RENDER_ANNOTS_WATERMARK: PopplerRenderAnnotsFlags = 8388608;
pub const POPPLER_RENDER_ANNOTS_3D: PopplerRenderAnnotsFlags = 16777216;
pub const POPPLER_RENDER_ANNOTS_RICHMEDIA: PopplerRenderAnnotsFlags = 33554432;
pub const POPPLER_RENDER_ANNOTS_PRINT_DOCUMENT: PopplerRenderAnnotsFlags = 524288;
pub const POPPLER_RENDER_ANNOTS_PRINT_MARKUP: PopplerRenderAnnotsFlags = 4262166525;
pub const POPPLER_RENDER_ANNOTS_PRINT_STAMP: PopplerRenderAnnotsFlags = 528384;
pub const POPPLER_RENDER_ANNOTS_PRINT_ALL: PopplerRenderAnnotsFlags = 4262166525;
pub const POPPLER_RENDER_ANNOTS_ALL: PopplerRenderAnnotsFlags = 67108863;

pub type PopplerSignatureValidationFlags = c_uint;
pub const POPPLER_SIGNATURE_VALIDATION_FLAG_VALIDATE_CERTIFICATE: PopplerSignatureValidationFlags =
    1;
pub const POPPLER_SIGNATURE_VALIDATION_FLAG_WITHOUT_OCSP_REVOCATION_CHECK:
    PopplerSignatureValidationFlags = 2;
pub const POPPLER_SIGNATURE_VALIDATION_FLAG_USE_AIA_CERTIFICATE_FETCH:
    PopplerSignatureValidationFlags = 4;

pub type PopplerStructureGetTextFlags = c_uint;
pub const POPPLER_STRUCTURE_GET_TEXT_NONE: PopplerStructureGetTextFlags = 0;
pub const POPPLER_STRUCTURE_GET_TEXT_RECURSIVE: PopplerStructureGetTextFlags = 1;

pub type PopplerViewerPreferences = c_uint;
pub const POPPLER_VIEWER_PREFERENCES_UNSET: PopplerViewerPreferences = 0;
pub const POPPLER_VIEWER_PREFERENCES_HIDE_TOOLBAR: PopplerViewerPreferences = 1;
pub const POPPLER_VIEWER_PREFERENCES_HIDE_MENUBAR: PopplerViewerPreferences = 2;
pub const POPPLER_VIEWER_PREFERENCES_HIDE_WINDOWUI: PopplerViewerPreferences = 4;
pub const POPPLER_VIEWER_PREFERENCES_FIT_WINDOW: PopplerViewerPreferences = 8;
pub const POPPLER_VIEWER_PREFERENCES_CENTER_WINDOW: PopplerViewerPreferences = 16;
pub const POPPLER_VIEWER_PREFERENCES_DISPLAY_DOC_TITLE: PopplerViewerPreferences = 32;
pub const POPPLER_VIEWER_PREFERENCES_DIRECTION_RTL: PopplerViewerPreferences = 64;

// Unions
#[derive(Copy, Clone)]
#[repr(C)]
pub union PopplerAction {
    pub type_: PopplerActionType,
    pub any: PopplerActionAny,
    pub goto_dest: PopplerActionGotoDest,
    pub goto_remote: PopplerActionGotoRemote,
    pub launch: PopplerActionLaunch,
    pub uri: PopplerActionUri,
    pub named: PopplerActionNamed,
    pub movie: PopplerActionMovie,
    pub rendition: PopplerActionRendition,
    pub ocg_state: PopplerActionOCGState,
    pub javascript: PopplerActionJavascript,
    pub reset_form: PopplerActionResetForm,
}

impl ::std::fmt::Debug for PopplerAction {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAction @ {self:p}"))
            .field("type_", unsafe { &self.type_ })
            .field("any", unsafe { &self.any })
            .field("goto_dest", unsafe { &self.goto_dest })
            .field("goto_remote", unsafe { &self.goto_remote })
            .field("launch", unsafe { &self.launch })
            .field("uri", unsafe { &self.uri })
            .field("named", unsafe { &self.named })
            .field("movie", unsafe { &self.movie })
            .field("rendition", unsafe { &self.rendition })
            .field("ocg_state", unsafe { &self.ocg_state })
            .field("javascript", unsafe { &self.javascript })
            .field("reset_form", unsafe { &self.reset_form })
            .finish()
    }
}

// Callbacks
pub type PopplerAttachmentSaveFunc =
    Option<unsafe extern "C" fn(*const u8, size_t, gpointer, *mut *mut glib::GError) -> gboolean>;
pub type PopplerMediaSaveFunc =
    Option<unsafe extern "C" fn(*const u8, size_t, gpointer, *mut *mut glib::GError) -> gboolean>;
pub type PopplerNssPasswordFunc = Option<unsafe extern "C" fn(*const c_char) -> *mut c_char>;

// Records
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerActionAny {
    pub type_: PopplerActionType,
    pub title: *mut c_char,
}

impl ::std::fmt::Debug for PopplerActionAny {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerActionAny @ {self:p}"))
            .field("type_", &self.type_)
            .field("title", &self.title)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerActionGotoDest {
    pub type_: PopplerActionType,
    pub title: *mut c_char,
    pub dest: *mut PopplerDest,
}

impl ::std::fmt::Debug for PopplerActionGotoDest {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerActionGotoDest @ {self:p}"))
            .field("type_", &self.type_)
            .field("title", &self.title)
            .field("dest", &self.dest)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerActionGotoRemote {
    pub type_: PopplerActionType,
    pub title: *mut c_char,
    pub file_name: *mut c_char,
    pub dest: *mut PopplerDest,
}

impl ::std::fmt::Debug for PopplerActionGotoRemote {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerActionGotoRemote @ {self:p}"))
            .field("type_", &self.type_)
            .field("title", &self.title)
            .field("file_name", &self.file_name)
            .field("dest", &self.dest)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerActionJavascript {
    pub type_: PopplerActionType,
    pub title: *mut c_char,
    pub script: *mut c_char,
}

impl ::std::fmt::Debug for PopplerActionJavascript {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerActionJavascript @ {self:p}"))
            .field("type_", &self.type_)
            .field("title", &self.title)
            .field("script", &self.script)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerActionLaunch {
    pub type_: PopplerActionType,
    pub title: *mut c_char,
    pub file_name: *mut c_char,
    pub params: *mut c_char,
}

impl ::std::fmt::Debug for PopplerActionLaunch {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerActionLaunch @ {self:p}"))
            .field("type_", &self.type_)
            .field("title", &self.title)
            .field("file_name", &self.file_name)
            .field("params", &self.params)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerActionLayer {
    pub action: PopplerActionLayerAction,
    pub layers: *mut glib::GList,
}

impl ::std::fmt::Debug for PopplerActionLayer {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerActionLayer @ {self:p}"))
            .field("action", &self.action)
            .field("layers", &self.layers)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerActionMovie {
    pub type_: PopplerActionType,
    pub title: *mut c_char,
    pub operation: PopplerActionMovieOperation,
    pub movie: *mut PopplerMovie,
}

impl ::std::fmt::Debug for PopplerActionMovie {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerActionMovie @ {self:p}"))
            .field("type_", &self.type_)
            .field("title", &self.title)
            .field("operation", &self.operation)
            .field("movie", &self.movie)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerActionNamed {
    pub type_: PopplerActionType,
    pub title: *mut c_char,
    pub named_dest: *mut c_char,
}

impl ::std::fmt::Debug for PopplerActionNamed {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerActionNamed @ {self:p}"))
            .field("type_", &self.type_)
            .field("title", &self.title)
            .field("named_dest", &self.named_dest)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerActionOCGState {
    pub type_: PopplerActionType,
    pub title: *mut c_char,
    pub state_list: *mut glib::GList,
}

impl ::std::fmt::Debug for PopplerActionOCGState {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerActionOCGState @ {self:p}"))
            .field("type_", &self.type_)
            .field("title", &self.title)
            .field("state_list", &self.state_list)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerActionRendition {
    pub type_: PopplerActionType,
    pub title: *mut c_char,
    pub op: c_int,
    pub media: *mut PopplerMedia,
}

impl ::std::fmt::Debug for PopplerActionRendition {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerActionRendition @ {self:p}"))
            .field("type_", &self.type_)
            .field("title", &self.title)
            .field("op", &self.op)
            .field("media", &self.media)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerActionResetForm {
    pub type_: PopplerActionType,
    pub title: *mut c_char,
    pub fields: *mut glib::GList,
    pub exclude: gboolean,
}

impl ::std::fmt::Debug for PopplerActionResetForm {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerActionResetForm @ {self:p}"))
            .field("type_", &self.type_)
            .field("title", &self.title)
            .field("fields", &self.fields)
            .field("exclude", &self.exclude)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerActionUri {
    pub type_: PopplerActionType,
    pub title: *mut c_char,
    pub uri: *mut c_char,
}

impl ::std::fmt::Debug for PopplerActionUri {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerActionUri @ {self:p}"))
            .field("type_", &self.type_)
            .field("title", &self.title)
            .field("uri", &self.uri)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerAnnotCalloutLine {
    pub multiline: gboolean,
    pub x1: c_double,
    pub y1: c_double,
    pub x2: c_double,
    pub y2: c_double,
    pub x3: c_double,
    pub y3: c_double,
}

impl ::std::fmt::Debug for PopplerAnnotCalloutLine {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAnnotCalloutLine @ {self:p}"))
            .field("multiline", &self.multiline)
            .field("x1", &self.x1)
            .field("y1", &self.y1)
            .field("x2", &self.x2)
            .field("y2", &self.y2)
            .field("x3", &self.x3)
            .field("y3", &self.y3)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerAnnotMapping {
    pub area: PopplerRectangle,
    pub annot: *mut PopplerAnnot,
}

impl ::std::fmt::Debug for PopplerAnnotMapping {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAnnotMapping @ {self:p}"))
            .field("area", &self.area)
            .field("annot", &self.annot)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerAttachmentClass {
    pub parent_class: gobject::GObjectClass,
}

impl ::std::fmt::Debug for PopplerAttachmentClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAttachmentClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerCertificateInfo {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerCertificateInfo {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerCertificateInfo @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerColor {
    pub red: u16,
    pub green: u16,
    pub blue: u16,
}

impl ::std::fmt::Debug for PopplerColor {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerColor @ {self:p}"))
            .field("red", &self.red)
            .field("green", &self.green)
            .field("blue", &self.blue)
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerDest {
    pub type_: PopplerDestType,
    pub page_num: c_int,
    pub left: c_double,
    pub bottom: c_double,
    pub right: c_double,
    pub top: c_double,
    pub zoom: c_double,
    pub named_dest: *mut c_char,
    pub change_left: c_uint,
    _truncated_record_marker: c_void,
    // field change_top has incomplete type
}

impl ::std::fmt::Debug for PopplerDest {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerDest @ {self:p}"))
            .field("type_", &self.type_)
            .field("page_num", &self.page_num)
            .field("left", &self.left)
            .field("bottom", &self.bottom)
            .field("right", &self.right)
            .field("top", &self.top)
            .field("zoom", &self.zoom)
            .field("named_dest", &self.named_dest)
            .field("change_left", &self.change_left)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerFontDescription {
    pub font_name: *mut c_char,
    pub size_pt: c_double,
    pub stretch: PopplerStretch,
    pub weight: PopplerWeight,
    pub style: PopplerStyle,
}

impl ::std::fmt::Debug for PopplerFontDescription {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerFontDescription @ {self:p}"))
            .field("font_name", &self.font_name)
            .field("size_pt", &self.size_pt)
            .field("stretch", &self.stretch)
            .field("weight", &self.weight)
            .field("style", &self.style)
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerFontsIter {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerFontsIter {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerFontsIter @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerFormFieldMapping {
    pub area: PopplerRectangle,
    pub field: *mut PopplerFormField,
}

impl ::std::fmt::Debug for PopplerFormFieldMapping {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerFormFieldMapping @ {self:p}"))
            .field("area", &self.area)
            .field("field", &self.field)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerImageMapping {
    pub area: PopplerRectangle,
    pub image_id: c_int,
}

impl ::std::fmt::Debug for PopplerImageMapping {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerImageMapping @ {self:p}"))
            .field("area", &self.area)
            .field("image_id", &self.image_id)
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerIndexIter {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerIndexIter {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerIndexIter @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerLayersIter {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerLayersIter {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerLayersIter @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerLinkMapping {
    pub area: PopplerRectangle,
    pub action: *mut PopplerAction,
}

impl ::std::fmt::Debug for PopplerLinkMapping {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerLinkMapping @ {self:p}"))
            .field("area", &self.area)
            .field("action", &self.action)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerPageRange {
    pub start_page: c_int,
    pub end_page: c_int,
}

impl ::std::fmt::Debug for PopplerPageRange {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerPageRange @ {self:p}"))
            .field("start_page", &self.start_page)
            .field("end_page", &self.end_page)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerPageTransition {
    pub type_: PopplerPageTransitionType,
    pub alignment: PopplerPageTransitionAlignment,
    pub direction: PopplerPageTransitionDirection,
    pub duration: c_int,
    pub angle: c_int,
    pub scale: c_double,
    pub rectangular: gboolean,
    pub duration_real: c_double,
}

impl ::std::fmt::Debug for PopplerPageTransition {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerPageTransition @ {self:p}"))
            .field("type_", &self.type_)
            .field("alignment", &self.alignment)
            .field("direction", &self.direction)
            .field("duration", &self.duration)
            .field("angle", &self.angle)
            .field("scale", &self.scale)
            .field("rectangular", &self.rectangular)
            .field("duration_real", &self.duration_real)
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerPath {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerPath {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerPath @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerPoint {
    pub x: c_double,
    pub y: c_double,
}

impl ::std::fmt::Debug for PopplerPoint {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerPoint @ {self:p}"))
            .field("x", &self.x)
            .field("y", &self.y)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerQuadrilateral {
    pub p1: PopplerPoint,
    pub p2: PopplerPoint,
    pub p3: PopplerPoint,
    pub p4: PopplerPoint,
}

impl ::std::fmt::Debug for PopplerQuadrilateral {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerQuadrilateral @ {self:p}"))
            .field("p1", &self.p1)
            .field("p2", &self.p2)
            .field("p3", &self.p3)
            .field("p4", &self.p4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerRectangle {
    pub x1: c_double,
    pub y1: c_double,
    pub x2: c_double,
    pub y2: c_double,
}

impl ::std::fmt::Debug for PopplerRectangle {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerRectangle @ {self:p}"))
            .field("x1", &self.x1)
            .field("y1", &self.y1)
            .field("x2", &self.x2)
            .field("y2", &self.y2)
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerSignatureInfo {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerSignatureInfo {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerSignatureInfo @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerSigningData {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerSigningData {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerSigningData @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerStructureElementIter {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerStructureElementIter {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerStructureElementIter @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerTextAttributes {
    pub font_name: *mut c_char,
    pub font_size: c_double,
    pub is_underlined: gboolean,
    pub color: PopplerColor,
    pub start_index: c_int,
    pub end_index: c_int,
}

impl ::std::fmt::Debug for PopplerTextAttributes {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerTextAttributes @ {self:p}"))
            .field("font_name", &self.font_name)
            .field("font_size", &self.font_size)
            .field("is_underlined", &self.is_underlined)
            .field("color", &self.color)
            .field("start_index", &self.start_index)
            .field("end_index", &self.end_index)
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerTextSpan {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerTextSpan {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerTextSpan @ {self:p}"))
            .finish()
    }
}

// Classes
#[repr(C)]
#[allow(dead_code)]
pub struct PopplerAnnot {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerAnnot {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAnnot @ {self:p}")).finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerAnnotCircle {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerAnnotCircle {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAnnotCircle @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerAnnotFileAttachment {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerAnnotFileAttachment {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAnnotFileAttachment @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerAnnotFreeText {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerAnnotFreeText {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAnnotFreeText @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerAnnotInk {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerAnnotInk {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAnnotInk @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerAnnotLine {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerAnnotLine {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAnnotLine @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerAnnotMarkup {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerAnnotMarkup {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAnnotMarkup @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerAnnotMovie {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerAnnotMovie {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAnnotMovie @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerAnnotScreen {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerAnnotScreen {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAnnotScreen @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerAnnotSquare {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerAnnotSquare {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAnnotSquare @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerAnnotStamp {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerAnnotStamp {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAnnotStamp @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerAnnotText {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerAnnotText {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAnnotText @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerAnnotTextMarkup {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerAnnotTextMarkup {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAnnotTextMarkup @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct PopplerAttachment {
    pub parent: gobject::GObject,
    pub name: *mut c_char,
    pub description: *mut c_char,
    pub size: size_t,
    pub mtime: glib::GTime,
    pub ctime: glib::GTime,
    pub checksum: *mut glib::GString,
}

impl ::std::fmt::Debug for PopplerAttachment {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerAttachment @ {self:p}"))
            .field("parent", &self.parent)
            .field("name", &self.name)
            .field("description", &self.description)
            .field("size", &self.size)
            .field("mtime", &self.mtime)
            .field("ctime", &self.ctime)
            .field("checksum", &self.checksum)
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerDocument {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerDocument {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerDocument @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerFontInfo {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerFontInfo {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerFontInfo @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerFormField {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerFormField {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerFormField @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerLayer {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerLayer {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerLayer @ {self:p}")).finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerMedia {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerMedia {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerMedia @ {self:p}")).finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerMovie {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerMovie {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerMovie @ {self:p}")).finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerPSFile {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerPSFile {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerPSFile @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerPage {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerPage {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerPage @ {self:p}")).finish()
    }
}

#[repr(C)]
#[allow(dead_code)]
pub struct PopplerStructureElement {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for PopplerStructureElement {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("PopplerStructureElement @ {self:p}"))
            .finish()
    }
}

unsafe extern "C" {

    //=========================================================================
    // PopplerActionLayerAction
    //=========================================================================
    pub fn poppler_action_layer_action_get_type() -> GType;

    //=========================================================================
    // PopplerActionMovieOperation
    //=========================================================================
    pub fn poppler_action_movie_operation_get_type() -> GType;

    //=========================================================================
    // PopplerActionType
    //=========================================================================
    pub fn poppler_action_type_get_type() -> GType;

    //=========================================================================
    // PopplerAdditionalActionType
    //=========================================================================
    #[cfg(feature = "v0_72")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_72")))]
    pub fn poppler_additional_action_type_get_type() -> GType;

    //=========================================================================
    // PopplerAnnotExternalDataType
    //=========================================================================
    pub fn poppler_annot_external_data_type_get_type() -> GType;

    //=========================================================================
    // PopplerAnnotFreeTextQuadding
    //=========================================================================
    pub fn poppler_annot_free_text_quadding_get_type() -> GType;

    //=========================================================================
    // PopplerAnnotMarkupReplyType
    //=========================================================================
    pub fn poppler_annot_markup_reply_type_get_type() -> GType;

    //=========================================================================
    // PopplerAnnotStampIcon
    //=========================================================================
    pub fn poppler_annot_stamp_icon_get_type() -> GType;

    //=========================================================================
    // PopplerAnnotTextState
    //=========================================================================
    pub fn poppler_annot_text_state_get_type() -> GType;

    //=========================================================================
    // PopplerAnnotType
    //=========================================================================
    pub fn poppler_annot_type_get_type() -> GType;

    //=========================================================================
    // PopplerBackend
    //=========================================================================
    pub fn poppler_backend_get_type() -> GType;

    //=========================================================================
    // PopplerCertificateStatus
    //=========================================================================
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    pub fn poppler_certificate_status_get_type() -> GType;

    //=========================================================================
    // PopplerDestType
    //=========================================================================
    pub fn poppler_dest_type_get_type() -> GType;

    //=========================================================================
    // PopplerError
    //=========================================================================
    pub fn poppler_error_get_type() -> GType;
    pub fn poppler_error_quark() -> glib::GQuark;

    //=========================================================================
    // PopplerFontType
    //=========================================================================
    pub fn poppler_font_type_get_type() -> GType;

    //=========================================================================
    // PopplerFormButtonType
    //=========================================================================
    pub fn poppler_form_button_type_get_type() -> GType;

    //=========================================================================
    // PopplerFormChoiceType
    //=========================================================================
    pub fn poppler_form_choice_type_get_type() -> GType;

    //=========================================================================
    // PopplerFormFieldType
    //=========================================================================
    pub fn poppler_form_field_type_get_type() -> GType;

    //=========================================================================
    // PopplerFormTextType
    //=========================================================================
    pub fn poppler_form_text_type_get_type() -> GType;

    //=========================================================================
    // PopplerMoviePlayMode
    //=========================================================================
    pub fn poppler_movie_play_mode_get_type() -> GType;

    //=========================================================================
    // PopplerPDFConformance
    //=========================================================================
    pub fn poppler_pdf_conformance_get_type() -> GType;

    //=========================================================================
    // PopplerPDFPart
    //=========================================================================
    pub fn poppler_pdf_part_get_type() -> GType;

    //=========================================================================
    // PopplerPDFSubtype
    //=========================================================================
    pub fn poppler_pdf_subtype_get_type() -> GType;

    //=========================================================================
    // PopplerPageLayout
    //=========================================================================
    pub fn poppler_page_layout_get_type() -> GType;

    //=========================================================================
    // PopplerPageMode
    //=========================================================================
    pub fn poppler_page_mode_get_type() -> GType;

    //=========================================================================
    // PopplerPageTransitionAlignment
    //=========================================================================
    pub fn poppler_page_transition_alignment_get_type() -> GType;

    //=========================================================================
    // PopplerPageTransitionDirection
    //=========================================================================
    pub fn poppler_page_transition_direction_get_type() -> GType;

    //=========================================================================
    // PopplerPageTransitionType
    //=========================================================================
    pub fn poppler_page_transition_type_get_type() -> GType;

    //=========================================================================
    // PopplerPrintDuplex
    //=========================================================================
    #[cfg(feature = "v0_80")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_80")))]
    pub fn poppler_print_duplex_get_type() -> GType;

    //=========================================================================
    // PopplerPrintScaling
    //=========================================================================
    #[cfg(feature = "v0_73")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_73")))]
    pub fn poppler_print_scaling_get_type() -> GType;

    //=========================================================================
    // PopplerSelectionStyle
    //=========================================================================
    pub fn poppler_selection_style_get_type() -> GType;

    //=========================================================================
    // PopplerSignatureStatus
    //=========================================================================
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    pub fn poppler_signature_status_get_type() -> GType;

    //=========================================================================
    // PopplerStretch
    //=========================================================================
    #[cfg(feature = "v24_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v24_12")))]
    pub fn poppler_stretch_get_type() -> GType;

    //=========================================================================
    // PopplerStructureBlockAlign
    //=========================================================================
    pub fn poppler_structure_block_align_get_type() -> GType;

    //=========================================================================
    // PopplerStructureBorderStyle
    //=========================================================================
    pub fn poppler_structure_border_style_get_type() -> GType;

    //=========================================================================
    // PopplerStructureElementKind
    //=========================================================================
    pub fn poppler_structure_element_kind_get_type() -> GType;

    //=========================================================================
    // PopplerStructureFormRole
    //=========================================================================
    pub fn poppler_structure_form_role_get_type() -> GType;

    //=========================================================================
    // PopplerStructureFormState
    //=========================================================================
    pub fn poppler_structure_form_state_get_type() -> GType;

    //=========================================================================
    // PopplerStructureGlyphOrientation
    //=========================================================================
    pub fn poppler_structure_glyph_orientation_get_type() -> GType;

    //=========================================================================
    // PopplerStructureInlineAlign
    //=========================================================================
    pub fn poppler_structure_inline_align_get_type() -> GType;

    //=========================================================================
    // PopplerStructureListNumbering
    //=========================================================================
    pub fn poppler_structure_list_numbering_get_type() -> GType;

    //=========================================================================
    // PopplerStructurePlacement
    //=========================================================================
    pub fn poppler_structure_placement_get_type() -> GType;

    //=========================================================================
    // PopplerStructureRubyAlign
    //=========================================================================
    pub fn poppler_structure_ruby_align_get_type() -> GType;

    //=========================================================================
    // PopplerStructureRubyPosition
    //=========================================================================
    pub fn poppler_structure_ruby_position_get_type() -> GType;

    //=========================================================================
    // PopplerStructureTableScope
    //=========================================================================
    pub fn poppler_structure_table_scope_get_type() -> GType;

    //=========================================================================
    // PopplerStructureTextAlign
    //=========================================================================
    pub fn poppler_structure_text_align_get_type() -> GType;

    //=========================================================================
    // PopplerStructureTextDecoration
    //=========================================================================
    pub fn poppler_structure_text_decoration_get_type() -> GType;

    //=========================================================================
    // PopplerStructureWritingMode
    //=========================================================================
    pub fn poppler_structure_writing_mode_get_type() -> GType;

    //=========================================================================
    // PopplerStyle
    //=========================================================================
    #[cfg(feature = "v24_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v24_12")))]
    pub fn poppler_style_get_type() -> GType;

    //=========================================================================
    // PopplerWeight
    //=========================================================================
    #[cfg(feature = "v24_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v24_12")))]
    pub fn poppler_weight_get_type() -> GType;

    //=========================================================================
    // PopplerAnnotFlag
    //=========================================================================
    pub fn poppler_annot_flag_get_type() -> GType;

    //=========================================================================
    // PopplerFindFlags
    //=========================================================================
    pub fn poppler_find_flags_get_type() -> GType;

    //=========================================================================
    // PopplerPermissions
    //=========================================================================
    pub fn poppler_permissions_get_type() -> GType;

    //=========================================================================
    // PopplerPrintFlags
    //=========================================================================
    pub fn poppler_print_flags_get_type() -> GType;

    //=========================================================================
    // PopplerRenderAnnotsFlags
    //=========================================================================
    #[cfg(feature = "v25_2")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v25_2")))]
    pub fn poppler_render_annots_flags_get_type() -> GType;

    //=========================================================================
    // PopplerSignatureValidationFlags
    //=========================================================================
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    pub fn poppler_signature_validation_flags_get_type() -> GType;

    //=========================================================================
    // PopplerStructureGetTextFlags
    //=========================================================================
    pub fn poppler_structure_get_text_flags_get_type() -> GType;

    //=========================================================================
    // PopplerViewerPreferences
    //=========================================================================
    pub fn poppler_viewer_preferences_get_type() -> GType;

    //=========================================================================
    // PopplerAction
    //=========================================================================
    pub fn poppler_action_get_type() -> GType;
    pub fn poppler_action_copy(action: *mut PopplerAction) -> *mut PopplerAction;
    pub fn poppler_action_free(action: *mut PopplerAction);

    //=========================================================================
    // PopplerAnnotCalloutLine
    //=========================================================================
    pub fn poppler_annot_callout_line_get_type() -> GType;
    pub fn poppler_annot_callout_line_new() -> *mut PopplerAnnotCalloutLine;
    pub fn poppler_annot_callout_line_copy(
        callout: *mut PopplerAnnotCalloutLine,
    ) -> *mut PopplerAnnotCalloutLine;
    pub fn poppler_annot_callout_line_free(callout: *mut PopplerAnnotCalloutLine);

    //=========================================================================
    // PopplerAnnotMapping
    //=========================================================================
    pub fn poppler_annot_mapping_get_type() -> GType;
    pub fn poppler_annot_mapping_new() -> *mut PopplerAnnotMapping;
    pub fn poppler_annot_mapping_copy(
        mapping: *mut PopplerAnnotMapping,
    ) -> *mut PopplerAnnotMapping;
    pub fn poppler_annot_mapping_free(mapping: *mut PopplerAnnotMapping);

    //=========================================================================
    // PopplerCertificateInfo
    //=========================================================================
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_certificate_info_get_type() -> GType;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_certificate_info_new() -> *mut PopplerCertificateInfo;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_certificate_info_copy(
        certificate_info: *const PopplerCertificateInfo,
    ) -> *mut PopplerCertificateInfo;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_certificate_info_free(certificate_info: *mut PopplerCertificateInfo);
    #[cfg(feature = "v23_8")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_8")))]
    pub fn poppler_certificate_info_get_expiration_time(
        certificate_info: *const PopplerCertificateInfo,
    ) -> *mut glib::GDateTime;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_certificate_info_get_id(
        certificate_info: *const PopplerCertificateInfo,
    ) -> *const c_char;
    #[cfg(feature = "v23_8")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_8")))]
    pub fn poppler_certificate_info_get_issuance_time(
        certificate_info: *const PopplerCertificateInfo,
    ) -> *mut glib::GDateTime;
    #[cfg(feature = "v23_8")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_8")))]
    pub fn poppler_certificate_info_get_issuer_common_name(
        certificate_info: *const PopplerCertificateInfo,
    ) -> *const c_char;
    #[cfg(feature = "v23_8")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_8")))]
    pub fn poppler_certificate_info_get_issuer_email(
        certificate_info: *const PopplerCertificateInfo,
    ) -> *const c_char;
    #[cfg(feature = "v23_8")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_8")))]
    pub fn poppler_certificate_info_get_issuer_organization(
        certificate_info: *const PopplerCertificateInfo,
    ) -> *const c_char;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_certificate_info_get_subject_common_name(
        certificate_info: *const PopplerCertificateInfo,
    ) -> *const c_char;
    #[cfg(feature = "v23_8")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_8")))]
    pub fn poppler_certificate_info_get_subject_email(
        certificate_info: *const PopplerCertificateInfo,
    ) -> *const c_char;
    #[cfg(feature = "v23_8")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_8")))]
    pub fn poppler_certificate_info_get_subject_organization(
        certificate_info: *const PopplerCertificateInfo,
    ) -> *const c_char;

    //=========================================================================
    // PopplerColor
    //=========================================================================
    pub fn poppler_color_get_type() -> GType;
    pub fn poppler_color_new() -> *mut PopplerColor;
    pub fn poppler_color_copy(color: *mut PopplerColor) -> *mut PopplerColor;
    pub fn poppler_color_free(color: *mut PopplerColor);

    //=========================================================================
    // PopplerDest
    //=========================================================================
    pub fn poppler_dest_get_type() -> GType;
    pub fn poppler_dest_copy(dest: *mut PopplerDest) -> *mut PopplerDest;
    pub fn poppler_dest_free(dest: *mut PopplerDest);

    //=========================================================================
    // PopplerFontDescription
    //=========================================================================
    #[cfg(feature = "v24_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v24_12")))]
    pub fn poppler_font_description_get_type() -> GType;
    #[cfg(feature = "v24_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v24_12")))]
    pub fn poppler_font_description_new(font_name: *const c_char) -> *mut PopplerFontDescription;
    #[cfg(feature = "v24_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v24_12")))]
    pub fn poppler_font_description_copy(
        font_desc: *mut PopplerFontDescription,
    ) -> *mut PopplerFontDescription;
    #[cfg(feature = "v24_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v24_12")))]
    pub fn poppler_font_description_free(font_desc: *mut PopplerFontDescription);

    //=========================================================================
    // PopplerFontsIter
    //=========================================================================
    pub fn poppler_fonts_iter_get_type() -> GType;
    pub fn poppler_fonts_iter_copy(iter: *mut PopplerFontsIter) -> *mut PopplerFontsIter;
    pub fn poppler_fonts_iter_free(iter: *mut PopplerFontsIter);
    pub fn poppler_fonts_iter_get_encoding(iter: *mut PopplerFontsIter) -> *const c_char;
    pub fn poppler_fonts_iter_get_file_name(iter: *mut PopplerFontsIter) -> *const c_char;
    pub fn poppler_fonts_iter_get_font_type(iter: *mut PopplerFontsIter) -> PopplerFontType;
    pub fn poppler_fonts_iter_get_full_name(iter: *mut PopplerFontsIter) -> *const c_char;
    pub fn poppler_fonts_iter_get_name(iter: *mut PopplerFontsIter) -> *const c_char;
    pub fn poppler_fonts_iter_get_substitute_name(iter: *mut PopplerFontsIter) -> *const c_char;
    pub fn poppler_fonts_iter_is_embedded(iter: *mut PopplerFontsIter) -> gboolean;
    pub fn poppler_fonts_iter_is_subset(iter: *mut PopplerFontsIter) -> gboolean;
    pub fn poppler_fonts_iter_next(iter: *mut PopplerFontsIter) -> gboolean;

    //=========================================================================
    // PopplerFormFieldMapping
    //=========================================================================
    pub fn poppler_form_field_mapping_get_type() -> GType;
    pub fn poppler_form_field_mapping_new() -> *mut PopplerFormFieldMapping;
    pub fn poppler_form_field_mapping_copy(
        mapping: *mut PopplerFormFieldMapping,
    ) -> *mut PopplerFormFieldMapping;
    pub fn poppler_form_field_mapping_free(mapping: *mut PopplerFormFieldMapping);

    //=========================================================================
    // PopplerImageMapping
    //=========================================================================
    pub fn poppler_image_mapping_get_type() -> GType;
    pub fn poppler_image_mapping_new() -> *mut PopplerImageMapping;
    pub fn poppler_image_mapping_copy(
        mapping: *mut PopplerImageMapping,
    ) -> *mut PopplerImageMapping;
    pub fn poppler_image_mapping_free(mapping: *mut PopplerImageMapping);

    //=========================================================================
    // PopplerIndexIter
    //=========================================================================
    pub fn poppler_index_iter_get_type() -> GType;
    pub fn poppler_index_iter_new(document: *mut PopplerDocument) -> *mut PopplerIndexIter;
    pub fn poppler_index_iter_copy(iter: *mut PopplerIndexIter) -> *mut PopplerIndexIter;
    pub fn poppler_index_iter_free(iter: *mut PopplerIndexIter);
    pub fn poppler_index_iter_get_action(iter: *mut PopplerIndexIter) -> *mut PopplerAction;
    pub fn poppler_index_iter_get_child(parent: *mut PopplerIndexIter) -> *mut PopplerIndexIter;
    pub fn poppler_index_iter_is_open(iter: *mut PopplerIndexIter) -> gboolean;
    pub fn poppler_index_iter_next(iter: *mut PopplerIndexIter) -> gboolean;

    //=========================================================================
    // PopplerLayersIter
    //=========================================================================
    pub fn poppler_layers_iter_get_type() -> GType;
    pub fn poppler_layers_iter_new(document: *mut PopplerDocument) -> *mut PopplerLayersIter;
    pub fn poppler_layers_iter_copy(iter: *mut PopplerLayersIter) -> *mut PopplerLayersIter;
    pub fn poppler_layers_iter_free(iter: *mut PopplerLayersIter);
    pub fn poppler_layers_iter_get_child(parent: *mut PopplerLayersIter) -> *mut PopplerLayersIter;
    pub fn poppler_layers_iter_get_layer(iter: *mut PopplerLayersIter) -> *mut PopplerLayer;
    pub fn poppler_layers_iter_get_title(iter: *mut PopplerLayersIter) -> *mut c_char;
    pub fn poppler_layers_iter_next(iter: *mut PopplerLayersIter) -> gboolean;

    //=========================================================================
    // PopplerLinkMapping
    //=========================================================================
    pub fn poppler_link_mapping_get_type() -> GType;
    pub fn poppler_link_mapping_new() -> *mut PopplerLinkMapping;
    pub fn poppler_link_mapping_copy(mapping: *mut PopplerLinkMapping) -> *mut PopplerLinkMapping;
    pub fn poppler_link_mapping_free(mapping: *mut PopplerLinkMapping);

    //=========================================================================
    // PopplerPageTransition
    //=========================================================================
    pub fn poppler_page_transition_get_type() -> GType;
    pub fn poppler_page_transition_new() -> *mut PopplerPageTransition;
    pub fn poppler_page_transition_copy(
        transition: *mut PopplerPageTransition,
    ) -> *mut PopplerPageTransition;
    pub fn poppler_page_transition_free(transition: *mut PopplerPageTransition);

    //=========================================================================
    // PopplerPath
    //=========================================================================
    #[cfg(feature = "v25_6")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v25_6")))]
    pub fn poppler_path_get_type() -> GType;
    #[cfg(feature = "v25_6")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v25_6")))]
    pub fn poppler_path_new_from_array(
        points: *mut PopplerPoint,
        n_points: size_t,
    ) -> *mut PopplerPath;
    #[cfg(feature = "v25_6")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v25_6")))]
    pub fn poppler_path_copy(path: *mut PopplerPath) -> *mut PopplerPath;
    #[cfg(feature = "v25_6")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v25_6")))]
    pub fn poppler_path_free(path: *mut PopplerPath);
    #[cfg(feature = "v25_6")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v25_6")))]
    pub fn poppler_path_get_points(
        path: *mut PopplerPath,
        n_points: *mut size_t,
    ) -> *mut PopplerPoint;

    //=========================================================================
    // PopplerPoint
    //=========================================================================
    pub fn poppler_point_get_type() -> GType;
    pub fn poppler_point_new() -> *mut PopplerPoint;
    pub fn poppler_point_copy(point: *mut PopplerPoint) -> *mut PopplerPoint;
    pub fn poppler_point_free(point: *mut PopplerPoint);

    //=========================================================================
    // PopplerQuadrilateral
    //=========================================================================
    pub fn poppler_quadrilateral_get_type() -> GType;
    pub fn poppler_quadrilateral_new() -> *mut PopplerQuadrilateral;
    pub fn poppler_quadrilateral_copy(quad: *mut PopplerQuadrilateral)
    -> *mut PopplerQuadrilateral;
    pub fn poppler_quadrilateral_free(quad: *mut PopplerQuadrilateral);

    //=========================================================================
    // PopplerRectangle
    //=========================================================================
    pub fn poppler_rectangle_get_type() -> GType;
    pub fn poppler_rectangle_new() -> *mut PopplerRectangle;
    pub fn poppler_rectangle_copy(rectangle: *mut PopplerRectangle) -> *mut PopplerRectangle;
    #[cfg(feature = "v21_5")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_5")))]
    pub fn poppler_rectangle_find_get_ignored_hyphen(
        rectangle: *const PopplerRectangle,
    ) -> gboolean;
    #[cfg(feature = "v21_5")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_5")))]
    pub fn poppler_rectangle_find_get_match_continued(
        rectangle: *const PopplerRectangle,
    ) -> gboolean;
    pub fn poppler_rectangle_free(rectangle: *mut PopplerRectangle);

    //=========================================================================
    // PopplerSignatureInfo
    //=========================================================================
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    pub fn poppler_signature_info_get_type() -> GType;
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    pub fn poppler_signature_info_copy(
        siginfo: *const PopplerSignatureInfo,
    ) -> *mut PopplerSignatureInfo;
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    pub fn poppler_signature_info_free(siginfo: *mut PopplerSignatureInfo);
    #[cfg(feature = "v23_8")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_8")))]
    pub fn poppler_signature_info_get_certificate_info(
        siginfo: *const PopplerSignatureInfo,
    ) -> *mut PopplerCertificateInfo;
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    pub fn poppler_signature_info_get_certificate_status(
        siginfo: *const PopplerSignatureInfo,
    ) -> PopplerCertificateStatus;
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    pub fn poppler_signature_info_get_local_signing_time(
        siginfo: *const PopplerSignatureInfo,
    ) -> *mut glib::GDateTime;
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    pub fn poppler_signature_info_get_signature_status(
        siginfo: *const PopplerSignatureInfo,
    ) -> PopplerSignatureStatus;
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    pub fn poppler_signature_info_get_signer_name(
        siginfo: *const PopplerSignatureInfo,
    ) -> *const c_char;

    //=========================================================================
    // PopplerSigningData
    //=========================================================================
    pub fn poppler_signing_data_get_type() -> GType;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_new() -> *mut PopplerSigningData;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_copy(
        signing_data: *const PopplerSigningData,
    ) -> *mut PopplerSigningData;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_free(signing_data: *mut PopplerSigningData);
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_background_color(
        signing_data: *const PopplerSigningData,
    ) -> *const PopplerColor;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_border_color(
        signing_data: *const PopplerSigningData,
    ) -> *const PopplerColor;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_border_width(
        signing_data: *const PopplerSigningData,
    ) -> c_double;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_certificate_info(
        signing_data: *const PopplerSigningData,
    ) -> *const PopplerCertificateInfo;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_destination_filename(
        signing_data: *const PopplerSigningData,
    ) -> *const c_char;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_document_owner_password(
        signing_data: *const PopplerSigningData,
    ) -> *const c_char;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_document_user_password(
        signing_data: *const PopplerSigningData,
    ) -> *const c_char;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_field_partial_name(
        signing_data: *const PopplerSigningData,
    ) -> *const c_char;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_font_color(
        signing_data: *const PopplerSigningData,
    ) -> *const PopplerColor;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_font_size(signing_data: *const PopplerSigningData) -> c_double;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_image_path(
        signing_data: *const PopplerSigningData,
    ) -> *const c_char;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_left_font_size(
        signing_data: *const PopplerSigningData,
    ) -> c_double;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_location(
        signing_data: *const PopplerSigningData,
    ) -> *const c_char;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_page(signing_data: *const PopplerSigningData) -> c_int;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_password(
        signing_data: *const PopplerSigningData,
    ) -> *const c_char;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_reason(
        signing_data: *const PopplerSigningData,
    ) -> *const c_char;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_signature_rectangle(
        signing_data: *const PopplerSigningData,
    ) -> *const PopplerRectangle;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_signature_text(
        signing_data: *const PopplerSigningData,
    ) -> *const c_char;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_get_signature_text_left(
        signing_data: *const PopplerSigningData,
    ) -> *const c_char;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_background_color(
        signing_data: *mut PopplerSigningData,
        background_color: *const PopplerColor,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_border_color(
        signing_data: *mut PopplerSigningData,
        border_color: *const PopplerColor,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_border_width(
        signing_data: *mut PopplerSigningData,
        border_width: c_double,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_certificate_info(
        signing_data: *mut PopplerSigningData,
        certificate_info: *const PopplerCertificateInfo,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_destination_filename(
        signing_data: *mut PopplerSigningData,
        filename: *const c_char,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_document_owner_password(
        signing_data: *mut PopplerSigningData,
        document_owner_password: *const c_char,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_document_user_password(
        signing_data: *mut PopplerSigningData,
        document_user_password: *const c_char,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_field_partial_name(
        signing_data: *mut PopplerSigningData,
        field_partial_name: *const c_char,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_font_color(
        signing_data: *mut PopplerSigningData,
        font_color: *const PopplerColor,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_font_size(
        signing_data: *mut PopplerSigningData,
        font_size: c_double,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_image_path(
        signing_data: *mut PopplerSigningData,
        image_path: *const c_char,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_left_font_size(
        signing_data: *mut PopplerSigningData,
        font_size: c_double,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_location(
        signing_data: *mut PopplerSigningData,
        location: *const c_char,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_page(signing_data: *mut PopplerSigningData, page: c_int);
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_password(
        signing_data: *mut PopplerSigningData,
        password: *const c_char,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_reason(
        signing_data: *mut PopplerSigningData,
        reason: *const c_char,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_signature_rectangle(
        signing_data: *mut PopplerSigningData,
        signature_rect: *const PopplerRectangle,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_signature_text(
        signing_data: *mut PopplerSigningData,
        signature_text: *const c_char,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_signing_data_set_signature_text_left(
        signing_data: *mut PopplerSigningData,
        signature_text_left: *const c_char,
    );

    //=========================================================================
    // PopplerStructureElementIter
    //=========================================================================
    pub fn poppler_structure_element_iter_get_type() -> GType;
    pub fn poppler_structure_element_iter_new(
        poppler_document: *mut PopplerDocument,
    ) -> *mut PopplerStructureElementIter;
    pub fn poppler_structure_element_iter_copy(
        iter: *mut PopplerStructureElementIter,
    ) -> *mut PopplerStructureElementIter;
    pub fn poppler_structure_element_iter_free(iter: *mut PopplerStructureElementIter);
    pub fn poppler_structure_element_iter_get_child(
        parent: *mut PopplerStructureElementIter,
    ) -> *mut PopplerStructureElementIter;
    pub fn poppler_structure_element_iter_get_element(
        iter: *mut PopplerStructureElementIter,
    ) -> *mut PopplerStructureElement;
    pub fn poppler_structure_element_iter_next(iter: *mut PopplerStructureElementIter) -> gboolean;

    //=========================================================================
    // PopplerTextAttributes
    //=========================================================================
    pub fn poppler_text_attributes_get_type() -> GType;
    pub fn poppler_text_attributes_new() -> *mut PopplerTextAttributes;
    pub fn poppler_text_attributes_copy(
        text_attrs: *mut PopplerTextAttributes,
    ) -> *mut PopplerTextAttributes;
    pub fn poppler_text_attributes_free(text_attrs: *mut PopplerTextAttributes);

    //=========================================================================
    // PopplerTextSpan
    //=========================================================================
    pub fn poppler_text_span_get_type() -> GType;
    pub fn poppler_text_span_copy(poppler_text_span: *mut PopplerTextSpan) -> *mut PopplerTextSpan;
    pub fn poppler_text_span_free(poppler_text_span: *mut PopplerTextSpan);
    pub fn poppler_text_span_get_color(
        poppler_text_span: *mut PopplerTextSpan,
        color: *mut PopplerColor,
    );
    pub fn poppler_text_span_get_font_name(
        poppler_text_span: *mut PopplerTextSpan,
    ) -> *const c_char;
    pub fn poppler_text_span_get_text(poppler_text_span: *mut PopplerTextSpan) -> *const c_char;
    pub fn poppler_text_span_is_bold_font(poppler_text_span: *mut PopplerTextSpan) -> gboolean;
    pub fn poppler_text_span_is_fixed_width_font(
        poppler_text_span: *mut PopplerTextSpan,
    ) -> gboolean;
    pub fn poppler_text_span_is_serif_font(poppler_text_span: *mut PopplerTextSpan) -> gboolean;

    //=========================================================================
    // PopplerAnnot
    //=========================================================================
    pub fn poppler_annot_get_type() -> GType;
    pub fn poppler_annot_get_annot_type(poppler_annot: *mut PopplerAnnot) -> PopplerAnnotType;
    #[cfg(feature = "v24_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v24_12")))]
    pub fn poppler_annot_get_border_width(
        poppler_annot: *mut PopplerAnnot,
        width: *mut c_double,
    ) -> gboolean;
    pub fn poppler_annot_get_color(poppler_annot: *mut PopplerAnnot) -> *mut PopplerColor;
    pub fn poppler_annot_get_contents(poppler_annot: *mut PopplerAnnot) -> *mut c_char;
    pub fn poppler_annot_get_flags(poppler_annot: *mut PopplerAnnot) -> PopplerAnnotFlag;
    pub fn poppler_annot_get_modified(poppler_annot: *mut PopplerAnnot) -> *mut c_char;
    pub fn poppler_annot_get_name(poppler_annot: *mut PopplerAnnot) -> *mut c_char;
    pub fn poppler_annot_get_page_index(poppler_annot: *mut PopplerAnnot) -> c_int;
    pub fn poppler_annot_get_rectangle(
        poppler_annot: *mut PopplerAnnot,
        poppler_rect: *mut PopplerRectangle,
    );
    #[cfg(feature = "v24_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v24_12")))]
    pub fn poppler_annot_set_border_width(poppler_annot: *mut PopplerAnnot, width: c_double);
    pub fn poppler_annot_set_color(
        poppler_annot: *mut PopplerAnnot,
        poppler_color: *mut PopplerColor,
    );
    pub fn poppler_annot_set_contents(poppler_annot: *mut PopplerAnnot, contents: *const c_char);
    pub fn poppler_annot_set_flags(poppler_annot: *mut PopplerAnnot, flags: PopplerAnnotFlag);
    pub fn poppler_annot_set_rectangle(
        poppler_annot: *mut PopplerAnnot,
        poppler_rect: *mut PopplerRectangle,
    );

    //=========================================================================
    // PopplerAnnotCircle
    //=========================================================================
    pub fn poppler_annot_circle_get_type() -> GType;
    pub fn poppler_annot_circle_new(
        doc: *mut PopplerDocument,
        rect: *mut PopplerRectangle,
    ) -> *mut PopplerAnnot;
    pub fn poppler_annot_circle_get_interior_color(
        poppler_annot: *mut PopplerAnnotCircle,
    ) -> *mut PopplerColor;
    pub fn poppler_annot_circle_set_interior_color(
        poppler_annot: *mut PopplerAnnotCircle,
        poppler_color: *mut PopplerColor,
    );

    //=========================================================================
    // PopplerAnnotFileAttachment
    //=========================================================================
    pub fn poppler_annot_file_attachment_get_type() -> GType;
    pub fn poppler_annot_file_attachment_get_attachment(
        poppler_annot: *mut PopplerAnnotFileAttachment,
    ) -> *mut PopplerAttachment;
    pub fn poppler_annot_file_attachment_get_name(
        poppler_annot: *mut PopplerAnnotFileAttachment,
    ) -> *mut c_char;

    //=========================================================================
    // PopplerAnnotFreeText
    //=========================================================================
    pub fn poppler_annot_free_text_get_type() -> GType;
    pub fn poppler_annot_free_text_new(
        doc: *mut PopplerDocument,
        rect: *mut PopplerRectangle,
    ) -> *mut PopplerAnnot;
    pub fn poppler_annot_free_text_get_callout_line(
        poppler_annot: *mut PopplerAnnotFreeText,
    ) -> *mut PopplerAnnotCalloutLine;
    #[cfg(feature = "v24_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v24_12")))]
    pub fn poppler_annot_free_text_get_font_color(
        poppler_annot: *mut PopplerAnnotFreeText,
    ) -> *mut PopplerColor;
    #[cfg(feature = "v24_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v24_12")))]
    pub fn poppler_annot_free_text_get_font_desc(
        poppler_annot: *mut PopplerAnnotFreeText,
    ) -> *mut PopplerFontDescription;
    pub fn poppler_annot_free_text_get_quadding(
        poppler_annot: *mut PopplerAnnotFreeText,
    ) -> PopplerAnnotFreeTextQuadding;
    #[cfg(feature = "v24_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v24_12")))]
    pub fn poppler_annot_free_text_set_font_color(
        poppler_annot: *mut PopplerAnnotFreeText,
        color: *mut PopplerColor,
    );
    #[cfg(feature = "v24_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v24_12")))]
    pub fn poppler_annot_free_text_set_font_desc(
        poppler_annot: *mut PopplerAnnotFreeText,
        font_desc: *mut PopplerFontDescription,
    );

    //=========================================================================
    // PopplerAnnotInk
    //=========================================================================
    #[cfg(feature = "v25_6")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v25_6")))]
    pub fn poppler_annot_ink_get_type() -> GType;
    #[cfg(feature = "v25_6")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v25_6")))]
    pub fn poppler_annot_ink_new(
        doc: *mut PopplerDocument,
        rect: *mut PopplerRectangle,
    ) -> *mut PopplerAnnot;
    #[cfg(feature = "v25_10")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v25_10")))]
    pub fn poppler_annot_ink_get_draw_below(annot: *mut PopplerAnnotInk) -> gboolean;
    #[cfg(feature = "v25_6")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v25_6")))]
    pub fn poppler_annot_ink_get_ink_list(
        annot: *mut PopplerAnnotInk,
        n_paths: *mut size_t,
    ) -> *mut *mut PopplerPath;
    #[cfg(feature = "v25_10")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v25_10")))]
    pub fn poppler_annot_ink_set_draw_below(annot: *mut PopplerAnnotInk, draw_below: gboolean);
    #[cfg(feature = "v25_6")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v25_6")))]
    pub fn poppler_annot_ink_set_ink_list(
        annot: *mut PopplerAnnotInk,
        ink_list: *mut *mut PopplerPath,
        n_paths: size_t,
    );

    //=========================================================================
    // PopplerAnnotLine
    //=========================================================================
    pub fn poppler_annot_line_get_type() -> GType;
    pub fn poppler_annot_line_new(
        doc: *mut PopplerDocument,
        rect: *mut PopplerRectangle,
        start: *mut PopplerPoint,
        end: *mut PopplerPoint,
    ) -> *mut PopplerAnnot;
    pub fn poppler_annot_line_set_vertices(
        poppler_annot: *mut PopplerAnnotLine,
        start: *mut PopplerPoint,
        end: *mut PopplerPoint,
    );

    //=========================================================================
    // PopplerAnnotMarkup
    //=========================================================================
    pub fn poppler_annot_markup_get_type() -> GType;
    pub fn poppler_annot_markup_get_date(
        poppler_annot: *mut PopplerAnnotMarkup,
    ) -> *mut glib::GDate;
    pub fn poppler_annot_markup_get_external_data(
        poppler_annot: *mut PopplerAnnotMarkup,
    ) -> PopplerAnnotExternalDataType;
    pub fn poppler_annot_markup_get_label(poppler_annot: *mut PopplerAnnotMarkup) -> *mut c_char;
    pub fn poppler_annot_markup_get_opacity(poppler_annot: *mut PopplerAnnotMarkup) -> c_double;
    pub fn poppler_annot_markup_get_popup_is_open(
        poppler_annot: *mut PopplerAnnotMarkup,
    ) -> gboolean;
    pub fn poppler_annot_markup_get_popup_rectangle(
        poppler_annot: *mut PopplerAnnotMarkup,
        poppler_rect: *mut PopplerRectangle,
    ) -> gboolean;
    pub fn poppler_annot_markup_get_reply_to(
        poppler_annot: *mut PopplerAnnotMarkup,
    ) -> PopplerAnnotMarkupReplyType;
    pub fn poppler_annot_markup_get_subject(poppler_annot: *mut PopplerAnnotMarkup) -> *mut c_char;
    pub fn poppler_annot_markup_has_popup(poppler_annot: *mut PopplerAnnotMarkup) -> gboolean;
    pub fn poppler_annot_markup_set_label(
        poppler_annot: *mut PopplerAnnotMarkup,
        label: *const c_char,
    );
    pub fn poppler_annot_markup_set_opacity(
        poppler_annot: *mut PopplerAnnotMarkup,
        opacity: c_double,
    );
    pub fn poppler_annot_markup_set_popup(
        poppler_annot: *mut PopplerAnnotMarkup,
        popup_rect: *mut PopplerRectangle,
    );
    pub fn poppler_annot_markup_set_popup_is_open(
        poppler_annot: *mut PopplerAnnotMarkup,
        is_open: gboolean,
    );
    pub fn poppler_annot_markup_set_popup_rectangle(
        poppler_annot: *mut PopplerAnnotMarkup,
        poppler_rect: *mut PopplerRectangle,
    );

    //=========================================================================
    // PopplerAnnotMovie
    //=========================================================================
    pub fn poppler_annot_movie_get_type() -> GType;
    pub fn poppler_annot_movie_get_movie(
        poppler_annot: *mut PopplerAnnotMovie,
    ) -> *mut PopplerMovie;
    pub fn poppler_annot_movie_get_title(poppler_annot: *mut PopplerAnnotMovie) -> *mut c_char;

    //=========================================================================
    // PopplerAnnotScreen
    //=========================================================================
    pub fn poppler_annot_screen_get_type() -> GType;
    pub fn poppler_annot_screen_get_action(
        poppler_annot: *mut PopplerAnnotScreen,
    ) -> *mut PopplerAction;

    //=========================================================================
    // PopplerAnnotSquare
    //=========================================================================
    pub fn poppler_annot_square_get_type() -> GType;
    pub fn poppler_annot_square_new(
        doc: *mut PopplerDocument,
        rect: *mut PopplerRectangle,
    ) -> *mut PopplerAnnot;
    pub fn poppler_annot_square_get_interior_color(
        poppler_annot: *mut PopplerAnnotSquare,
    ) -> *mut PopplerColor;
    pub fn poppler_annot_square_set_interior_color(
        poppler_annot: *mut PopplerAnnotSquare,
        poppler_color: *mut PopplerColor,
    );

    //=========================================================================
    // PopplerAnnotStamp
    //=========================================================================
    pub fn poppler_annot_stamp_get_type() -> GType;
    #[cfg(feature = "v22_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v22_7")))]
    pub fn poppler_annot_stamp_new(
        doc: *mut PopplerDocument,
        rect: *mut PopplerRectangle,
    ) -> *mut PopplerAnnot;
    #[cfg(feature = "v22_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v22_7")))]
    pub fn poppler_annot_stamp_get_icon(
        poppler_annot: *mut PopplerAnnotStamp,
    ) -> PopplerAnnotStampIcon;
    #[cfg(feature = "v22_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v22_7")))]
    pub fn poppler_annot_stamp_set_custom_image(
        poppler_annot: *mut PopplerAnnotStamp,
        image: *mut cairo::cairo_surface_t,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    #[cfg(feature = "v22_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v22_7")))]
    pub fn poppler_annot_stamp_set_icon(
        poppler_annot: *mut PopplerAnnotStamp,
        icon: PopplerAnnotStampIcon,
    );

    //=========================================================================
    // PopplerAnnotText
    //=========================================================================
    pub fn poppler_annot_text_get_type() -> GType;
    pub fn poppler_annot_text_new(
        doc: *mut PopplerDocument,
        rect: *mut PopplerRectangle,
    ) -> *mut PopplerAnnot;
    pub fn poppler_annot_text_get_icon(poppler_annot: *mut PopplerAnnotText) -> *mut c_char;
    pub fn poppler_annot_text_get_is_open(poppler_annot: *mut PopplerAnnotText) -> gboolean;
    pub fn poppler_annot_text_get_state(
        poppler_annot: *mut PopplerAnnotText,
    ) -> PopplerAnnotTextState;
    pub fn poppler_annot_text_set_icon(poppler_annot: *mut PopplerAnnotText, icon: *const c_char);
    pub fn poppler_annot_text_set_is_open(poppler_annot: *mut PopplerAnnotText, is_open: gboolean);

    //=========================================================================
    // PopplerAnnotTextMarkup
    //=========================================================================
    pub fn poppler_annot_text_markup_get_type() -> GType;
    pub fn poppler_annot_text_markup_new_highlight(
        doc: *mut PopplerDocument,
        rect: *mut PopplerRectangle,
        quadrilaterals: *mut glib::GArray,
    ) -> *mut PopplerAnnot;
    pub fn poppler_annot_text_markup_new_squiggly(
        doc: *mut PopplerDocument,
        rect: *mut PopplerRectangle,
        quadrilaterals: *mut glib::GArray,
    ) -> *mut PopplerAnnot;
    pub fn poppler_annot_text_markup_new_strikeout(
        doc: *mut PopplerDocument,
        rect: *mut PopplerRectangle,
        quadrilaterals: *mut glib::GArray,
    ) -> *mut PopplerAnnot;
    pub fn poppler_annot_text_markup_new_underline(
        doc: *mut PopplerDocument,
        rect: *mut PopplerRectangle,
        quadrilaterals: *mut glib::GArray,
    ) -> *mut PopplerAnnot;
    pub fn poppler_annot_text_markup_get_quadrilaterals(
        poppler_annot: *mut PopplerAnnotTextMarkup,
    ) -> *mut glib::GArray;
    pub fn poppler_annot_text_markup_set_quadrilaterals(
        poppler_annot: *mut PopplerAnnotTextMarkup,
        quadrilaterals: *mut glib::GArray,
    );

    //=========================================================================
    // PopplerAttachment
    //=========================================================================
    pub fn poppler_attachment_get_type() -> GType;
    #[cfg(feature = "v20_9")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v20_9")))]
    pub fn poppler_attachment_get_checksum(
        attachment: *mut PopplerAttachment,
    ) -> *const glib::GString;
    #[cfg(feature = "v20_9")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v20_9")))]
    pub fn poppler_attachment_get_ctime(attachment: *mut PopplerAttachment)
    -> *mut glib::GDateTime;
    #[cfg(feature = "v20_9")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v20_9")))]
    pub fn poppler_attachment_get_description(attachment: *mut PopplerAttachment) -> *const c_char;
    #[cfg(feature = "v20_9")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v20_9")))]
    pub fn poppler_attachment_get_mtime(attachment: *mut PopplerAttachment)
    -> *mut glib::GDateTime;
    #[cfg(feature = "v20_9")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v20_9")))]
    pub fn poppler_attachment_get_name(attachment: *mut PopplerAttachment) -> *const c_char;
    #[cfg(feature = "v20_9")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v20_9")))]
    pub fn poppler_attachment_get_size(attachment: *mut PopplerAttachment) -> size_t;
    pub fn poppler_attachment_save(
        attachment: *mut PopplerAttachment,
        filename: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn poppler_attachment_save_to_callback(
        attachment: *mut PopplerAttachment,
        save_func: PopplerAttachmentSaveFunc,
        user_data: gpointer,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    pub fn poppler_attachment_save_to_fd(
        attachment: *mut PopplerAttachment,
        fd: c_int,
        error: *mut *mut glib::GError,
    ) -> gboolean;

    //=========================================================================
    // PopplerDocument
    //=========================================================================
    pub fn poppler_document_get_type() -> GType;
    #[cfg(feature = "v0_82")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_82")))]
    pub fn poppler_document_new_from_bytes(
        bytes: *mut glib::GBytes,
        password: *const c_char,
        error: *mut *mut glib::GError,
    ) -> *mut PopplerDocument;
    pub fn poppler_document_new_from_data(
        data: *mut u8,
        length: c_int,
        password: *const c_char,
        error: *mut *mut glib::GError,
    ) -> *mut PopplerDocument;
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    #[cfg(target_os = "linux")]
    #[cfg_attr(docsrs, doc(cfg(target_os = "linux")))]
    pub fn poppler_document_new_from_fd(
        fd: c_int,
        password: *const c_char,
        error: *mut *mut glib::GError,
    ) -> *mut PopplerDocument;
    pub fn poppler_document_new_from_file(
        uri: *const c_char,
        password: *const c_char,
        error: *mut *mut glib::GError,
    ) -> *mut PopplerDocument;
    pub fn poppler_document_new_from_gfile(
        file: *mut gio::GFile,
        password: *const c_char,
        cancellable: *mut gio::GCancellable,
        error: *mut *mut glib::GError,
    ) -> *mut PopplerDocument;
    pub fn poppler_document_new_from_stream(
        stream: *mut gio::GInputStream,
        length: i64,
        password: *const c_char,
        cancellable: *mut gio::GCancellable,
        error: *mut *mut glib::GError,
    ) -> *mut PopplerDocument;
    #[cfg(feature = "v0_78")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_78")))]
    pub fn poppler_document_create_dests_tree(document: *mut PopplerDocument) -> *mut glib::GTree;
    pub fn poppler_document_find_dest(
        document: *mut PopplerDocument,
        link_name: *const c_char,
    ) -> *mut PopplerDest;
    pub fn poppler_document_get_attachments(document: *mut PopplerDocument) -> *mut glib::GList;
    pub fn poppler_document_get_author(document: *mut PopplerDocument) -> *mut c_char;
    pub fn poppler_document_get_creation_date(document: *mut PopplerDocument) -> time_t;
    #[cfg(feature = "v20_9")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v20_9")))]
    pub fn poppler_document_get_creation_date_time(
        document: *mut PopplerDocument,
    ) -> *mut glib::GDateTime;
    pub fn poppler_document_get_creator(document: *mut PopplerDocument) -> *mut c_char;
    pub fn poppler_document_get_form_field(
        document: *mut PopplerDocument,
        id: c_int,
    ) -> *mut PopplerFormField;
    pub fn poppler_document_get_id(
        document: *mut PopplerDocument,
        permanent_id: *mut *mut c_char,
        update_id: *mut *mut c_char,
    ) -> gboolean;
    pub fn poppler_document_get_keywords(document: *mut PopplerDocument) -> *mut c_char;
    pub fn poppler_document_get_metadata(document: *mut PopplerDocument) -> *mut c_char;
    pub fn poppler_document_get_modification_date(document: *mut PopplerDocument) -> time_t;
    #[cfg(feature = "v20_9")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v20_9")))]
    pub fn poppler_document_get_modification_date_time(
        document: *mut PopplerDocument,
    ) -> *mut glib::GDateTime;
    pub fn poppler_document_get_n_attachments(document: *mut PopplerDocument) -> c_uint;
    pub fn poppler_document_get_n_pages(document: *mut PopplerDocument) -> c_int;
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    pub fn poppler_document_get_n_signatures(document: *const PopplerDocument) -> c_int;
    pub fn poppler_document_get_page(
        document: *mut PopplerDocument,
        index: c_int,
    ) -> *mut PopplerPage;
    pub fn poppler_document_get_page_by_label(
        document: *mut PopplerDocument,
        label: *const c_char,
    ) -> *mut PopplerPage;
    pub fn poppler_document_get_page_layout(document: *mut PopplerDocument) -> PopplerPageLayout;
    pub fn poppler_document_get_page_mode(document: *mut PopplerDocument) -> PopplerPageMode;
    pub fn poppler_document_get_pdf_conformance(
        document: *mut PopplerDocument,
    ) -> PopplerPDFConformance;
    pub fn poppler_document_get_pdf_part(document: *mut PopplerDocument) -> PopplerPDFPart;
    pub fn poppler_document_get_pdf_subtype(document: *mut PopplerDocument) -> PopplerPDFSubtype;
    pub fn poppler_document_get_pdf_subtype_string(document: *mut PopplerDocument) -> *mut c_char;
    pub fn poppler_document_get_pdf_version(
        document: *mut PopplerDocument,
        major_version: *mut c_uint,
        minor_version: *mut c_uint,
    );
    pub fn poppler_document_get_pdf_version_string(document: *mut PopplerDocument) -> *mut c_char;
    pub fn poppler_document_get_permissions(document: *mut PopplerDocument) -> PopplerPermissions;
    #[cfg(feature = "v0_80")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_80")))]
    pub fn poppler_document_get_print_duplex(document: *mut PopplerDocument) -> PopplerPrintDuplex;
    #[cfg(feature = "v0_80")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_80")))]
    pub fn poppler_document_get_print_n_copies(document: *mut PopplerDocument) -> c_int;
    #[cfg(feature = "v0_80")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_80")))]
    pub fn poppler_document_get_print_page_ranges(
        document: *mut PopplerDocument,
        n_ranges: *mut c_int,
    ) -> *mut PopplerPageRange;
    #[cfg(feature = "v0_73")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_73")))]
    pub fn poppler_document_get_print_scaling(
        document: *mut PopplerDocument,
    ) -> PopplerPrintScaling;
    pub fn poppler_document_get_producer(document: *mut PopplerDocument) -> *mut c_char;
    #[cfg(feature = "v22_2")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v22_2")))]
    pub fn poppler_document_get_signature_fields(
        document: *mut PopplerDocument,
    ) -> *mut glib::GList;
    pub fn poppler_document_get_subject(document: *mut PopplerDocument) -> *mut c_char;
    pub fn poppler_document_get_title(document: *mut PopplerDocument) -> *mut c_char;
    pub fn poppler_document_has_attachments(document: *mut PopplerDocument) -> gboolean;
    #[cfg(feature = "v0_90")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_90")))]
    pub fn poppler_document_has_javascript(document: *mut PopplerDocument) -> gboolean;
    pub fn poppler_document_is_linearized(document: *mut PopplerDocument) -> gboolean;
    #[cfg(feature = "v0_90")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_90")))]
    pub fn poppler_document_reset_form(
        document: *mut PopplerDocument,
        fields: *mut glib::GList,
        exclude_fields: gboolean,
    );
    pub fn poppler_document_save(
        document: *mut PopplerDocument,
        uri: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn poppler_document_save_a_copy(
        document: *mut PopplerDocument,
        uri: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    #[cfg(target_os = "linux")]
    #[cfg_attr(docsrs, doc(cfg(target_os = "linux")))]
    pub fn poppler_document_save_to_fd(
        document: *mut PopplerDocument,
        fd: c_int,
        include_changes: gboolean,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn poppler_document_set_author(document: *mut PopplerDocument, author: *const c_char);
    pub fn poppler_document_set_creation_date(
        document: *mut PopplerDocument,
        creation_date: time_t,
    );
    #[cfg(feature = "v20_9")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v20_9")))]
    pub fn poppler_document_set_creation_date_time(
        document: *mut PopplerDocument,
        creation_datetime: *mut glib::GDateTime,
    );
    pub fn poppler_document_set_creator(document: *mut PopplerDocument, creator: *const c_char);
    pub fn poppler_document_set_keywords(document: *mut PopplerDocument, keywords: *const c_char);
    pub fn poppler_document_set_modification_date(
        document: *mut PopplerDocument,
        modification_date: time_t,
    );
    #[cfg(feature = "v20_9")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v20_9")))]
    pub fn poppler_document_set_modification_date_time(
        document: *mut PopplerDocument,
        modification_datetime: *mut glib::GDateTime,
    );
    pub fn poppler_document_set_producer(document: *mut PopplerDocument, producer: *const c_char);
    pub fn poppler_document_set_subject(document: *mut PopplerDocument, subject: *const c_char);
    pub fn poppler_document_set_title(document: *mut PopplerDocument, title: *const c_char);
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_document_sign(
        document: *mut PopplerDocument,
        signing_data: *const PopplerSigningData,
        cancellable: *mut gio::GCancellable,
        callback: gio::GAsyncReadyCallback,
        user_data: gpointer,
    );
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_document_sign_finish(
        document: *mut PopplerDocument,
        result: *mut gio::GAsyncResult,
        error: *mut *mut glib::GError,
    ) -> gboolean;

    //=========================================================================
    // PopplerFontInfo
    //=========================================================================
    pub fn poppler_font_info_get_type() -> GType;
    pub fn poppler_font_info_new(document: *mut PopplerDocument) -> *mut PopplerFontInfo;
    pub fn poppler_font_info_free(font_info: *mut PopplerFontInfo);
    pub fn poppler_font_info_scan(
        font_info: *mut PopplerFontInfo,
        n_pages: c_int,
        iter: *mut *mut PopplerFontsIter,
    ) -> gboolean;

    //=========================================================================
    // PopplerFormField
    //=========================================================================
    pub fn poppler_form_field_get_type() -> GType;
    pub fn poppler_form_field_button_get_button_type(
        field: *mut PopplerFormField,
    ) -> PopplerFormButtonType;
    pub fn poppler_form_field_button_get_state(field: *mut PopplerFormField) -> gboolean;
    pub fn poppler_form_field_button_set_state(field: *mut PopplerFormField, state: gboolean);
    pub fn poppler_form_field_choice_can_select_multiple(field: *mut PopplerFormField) -> gboolean;
    pub fn poppler_form_field_choice_commit_on_change(field: *mut PopplerFormField) -> gboolean;
    pub fn poppler_form_field_choice_do_spell_check(field: *mut PopplerFormField) -> gboolean;
    pub fn poppler_form_field_choice_get_choice_type(
        field: *mut PopplerFormField,
    ) -> PopplerFormChoiceType;
    pub fn poppler_form_field_choice_get_item(
        field: *mut PopplerFormField,
        index: c_int,
    ) -> *mut c_char;
    pub fn poppler_form_field_choice_get_n_items(field: *mut PopplerFormField) -> c_int;
    pub fn poppler_form_field_choice_get_text(field: *mut PopplerFormField) -> *mut c_char;
    pub fn poppler_form_field_choice_is_editable(field: *mut PopplerFormField) -> gboolean;
    pub fn poppler_form_field_choice_is_item_selected(
        field: *mut PopplerFormField,
        index: c_int,
    ) -> gboolean;
    pub fn poppler_form_field_choice_select_item(field: *mut PopplerFormField, index: c_int);
    pub fn poppler_form_field_choice_set_text(field: *mut PopplerFormField, text: *const c_char);
    pub fn poppler_form_field_choice_toggle_item(field: *mut PopplerFormField, index: c_int);
    pub fn poppler_form_field_choice_unselect_all(field: *mut PopplerFormField);
    pub fn poppler_form_field_get_action(field: *mut PopplerFormField) -> *mut PopplerAction;
    #[cfg(feature = "v0_72")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_72")))]
    pub fn poppler_form_field_get_additional_action(
        field: *mut PopplerFormField,
        type_: PopplerAdditionalActionType,
    ) -> *mut PopplerAction;
    #[cfg(feature = "v0_88")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_88")))]
    pub fn poppler_form_field_get_alternate_ui_name(field: *mut PopplerFormField) -> *mut c_char;
    pub fn poppler_form_field_get_field_type(field: *mut PopplerFormField) -> PopplerFormFieldType;
    pub fn poppler_form_field_get_font_size(field: *mut PopplerFormField) -> c_double;
    pub fn poppler_form_field_get_id(field: *mut PopplerFormField) -> c_int;
    pub fn poppler_form_field_get_mapping_name(field: *mut PopplerFormField) -> *mut c_char;
    pub fn poppler_form_field_get_name(field: *mut PopplerFormField) -> *mut c_char;
    pub fn poppler_form_field_get_partial_name(field: *mut PopplerFormField) -> *mut c_char;
    pub fn poppler_form_field_is_read_only(field: *mut PopplerFormField) -> gboolean;
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    pub fn poppler_form_field_signature_validate_async(
        field: *mut PopplerFormField,
        flags: PopplerSignatureValidationFlags,
        cancellable: *mut gio::GCancellable,
        callback: gio::GAsyncReadyCallback,
        user_data: gpointer,
    );
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    pub fn poppler_form_field_signature_validate_finish(
        field: *mut PopplerFormField,
        result: *mut gio::GAsyncResult,
        error: *mut *mut glib::GError,
    ) -> *mut PopplerSignatureInfo;
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    pub fn poppler_form_field_signature_validate_sync(
        field: *mut PopplerFormField,
        flags: PopplerSignatureValidationFlags,
        cancellable: *mut gio::GCancellable,
        error: *mut *mut glib::GError,
    ) -> *mut PopplerSignatureInfo;
    pub fn poppler_form_field_text_do_scroll(field: *mut PopplerFormField) -> gboolean;
    pub fn poppler_form_field_text_do_spell_check(field: *mut PopplerFormField) -> gboolean;
    pub fn poppler_form_field_text_get_max_len(field: *mut PopplerFormField) -> c_int;
    pub fn poppler_form_field_text_get_text(field: *mut PopplerFormField) -> *mut c_char;
    pub fn poppler_form_field_text_get_text_type(
        field: *mut PopplerFormField,
    ) -> PopplerFormTextType;
    pub fn poppler_form_field_text_is_password(field: *mut PopplerFormField) -> gboolean;
    pub fn poppler_form_field_text_is_rich_text(field: *mut PopplerFormField) -> gboolean;
    pub fn poppler_form_field_text_set_text(field: *mut PopplerFormField, text: *const c_char);

    //=========================================================================
    // PopplerLayer
    //=========================================================================
    pub fn poppler_layer_get_type() -> GType;
    pub fn poppler_layer_get_radio_button_group_id(layer: *mut PopplerLayer) -> c_int;
    pub fn poppler_layer_get_title(layer: *mut PopplerLayer) -> *const c_char;
    pub fn poppler_layer_hide(layer: *mut PopplerLayer);
    pub fn poppler_layer_is_parent(layer: *mut PopplerLayer) -> gboolean;
    pub fn poppler_layer_is_visible(layer: *mut PopplerLayer) -> gboolean;
    pub fn poppler_layer_show(layer: *mut PopplerLayer);

    //=========================================================================
    // PopplerMedia
    //=========================================================================
    pub fn poppler_media_get_type() -> GType;
    #[cfg(feature = "v20_4")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v20_4")))]
    pub fn poppler_media_get_auto_play(poppler_media: *mut PopplerMedia) -> gboolean;
    pub fn poppler_media_get_filename(poppler_media: *mut PopplerMedia) -> *const c_char;
    pub fn poppler_media_get_mime_type(poppler_media: *mut PopplerMedia) -> *const c_char;
    #[cfg(feature = "v20_4")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v20_4")))]
    pub fn poppler_media_get_repeat_count(poppler_media: *mut PopplerMedia) -> c_float;
    #[cfg(feature = "v20_4")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v20_4")))]
    pub fn poppler_media_get_show_controls(poppler_media: *mut PopplerMedia) -> gboolean;
    pub fn poppler_media_is_embedded(poppler_media: *mut PopplerMedia) -> gboolean;
    pub fn poppler_media_save(
        poppler_media: *mut PopplerMedia,
        filename: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn poppler_media_save_to_callback(
        poppler_media: *mut PopplerMedia,
        save_func: PopplerMediaSaveFunc,
        user_data: gpointer,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    #[cfg(target_os = "linux")]
    #[cfg_attr(docsrs, doc(cfg(target_os = "linux")))]
    pub fn poppler_media_save_to_fd(
        poppler_media: *mut PopplerMedia,
        fd: c_int,
        error: *mut *mut glib::GError,
    ) -> gboolean;

    //=========================================================================
    // PopplerMovie
    //=========================================================================
    pub fn poppler_movie_get_type() -> GType;
    #[cfg(feature = "v0_89")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_89")))]
    pub fn poppler_movie_get_aspect(
        poppler_movie: *mut PopplerMovie,
        width: *mut c_int,
        height: *mut c_int,
    );
    #[cfg(feature = "v0_80")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_80")))]
    pub fn poppler_movie_get_duration(poppler_movie: *mut PopplerMovie) -> u64;
    pub fn poppler_movie_get_filename(poppler_movie: *mut PopplerMovie) -> *const c_char;
    pub fn poppler_movie_get_play_mode(poppler_movie: *mut PopplerMovie) -> PopplerMoviePlayMode;
    #[cfg(feature = "v0_80")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_80")))]
    pub fn poppler_movie_get_rate(poppler_movie: *mut PopplerMovie) -> c_double;
    #[cfg(feature = "v0_80")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_80")))]
    pub fn poppler_movie_get_rotation_angle(poppler_movie: *mut PopplerMovie) -> c_ushort;
    #[cfg(feature = "v0_80")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_80")))]
    pub fn poppler_movie_get_start(poppler_movie: *mut PopplerMovie) -> u64;
    #[cfg(feature = "v0_80")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_80")))]
    pub fn poppler_movie_get_volume(poppler_movie: *mut PopplerMovie) -> c_double;
    #[cfg(feature = "v0_80")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_80")))]
    pub fn poppler_movie_is_synchronous(poppler_movie: *mut PopplerMovie) -> gboolean;
    pub fn poppler_movie_need_poster(poppler_movie: *mut PopplerMovie) -> gboolean;
    pub fn poppler_movie_show_controls(poppler_movie: *mut PopplerMovie) -> gboolean;

    //=========================================================================
    // PopplerPSFile
    //=========================================================================
    pub fn poppler_ps_file_get_type() -> GType;
    pub fn poppler_ps_file_new(
        document: *mut PopplerDocument,
        filename: *const c_char,
        first_page: c_int,
        n_pages: c_int,
    ) -> *mut PopplerPSFile;
    #[cfg(feature = "v21_12")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v21_12")))]
    #[cfg(target_os = "linux")]
    #[cfg_attr(docsrs, doc(cfg(target_os = "linux")))]
    pub fn poppler_ps_file_new_fd(
        document: *mut PopplerDocument,
        fd: c_int,
        first_page: c_int,
        n_pages: c_int,
    ) -> *mut PopplerPSFile;
    pub fn poppler_ps_file_free(ps_file: *mut PopplerPSFile);
    pub fn poppler_ps_file_set_duplex(ps_file: *mut PopplerPSFile, duplex: gboolean);
    pub fn poppler_ps_file_set_paper_size(
        ps_file: *mut PopplerPSFile,
        width: c_double,
        height: c_double,
    );

    //=========================================================================
    // PopplerPage
    //=========================================================================
    pub fn poppler_page_get_type() -> GType;
    pub fn poppler_page_free_annot_mapping(list: *mut glib::GList);
    pub fn poppler_page_free_form_field_mapping(list: *mut glib::GList);
    pub fn poppler_page_free_image_mapping(list: *mut glib::GList);
    pub fn poppler_page_free_link_mapping(list: *mut glib::GList);
    pub fn poppler_page_free_text_attributes(list: *mut glib::GList);
    pub fn poppler_page_selection_region_free(region: *mut glib::GList);
    pub fn poppler_page_add_annot(page: *mut PopplerPage, annot: *mut PopplerAnnot);
    pub fn poppler_page_find_text(page: *mut PopplerPage, text: *const c_char) -> *mut glib::GList;
    pub fn poppler_page_find_text_with_options(
        page: *mut PopplerPage,
        text: *const c_char,
        options: PopplerFindFlags,
    ) -> *mut glib::GList;
    pub fn poppler_page_get_annot_mapping(page: *mut PopplerPage) -> *mut glib::GList;
    pub fn poppler_page_get_bounding_box(
        page: *mut PopplerPage,
        rect: *mut PopplerRectangle,
    ) -> gboolean;
    pub fn poppler_page_get_crop_box(page: *mut PopplerPage, rect: *mut PopplerRectangle);
    pub fn poppler_page_get_duration(page: *mut PopplerPage) -> c_double;
    pub fn poppler_page_get_form_field_mapping(page: *mut PopplerPage) -> *mut glib::GList;
    pub fn poppler_page_get_image(
        page: *mut PopplerPage,
        image_id: c_int,
    ) -> *mut cairo::cairo_surface_t;
    pub fn poppler_page_get_image_mapping(page: *mut PopplerPage) -> *mut glib::GList;
    pub fn poppler_page_get_index(page: *mut PopplerPage) -> c_int;
    pub fn poppler_page_get_label(page: *mut PopplerPage) -> *mut c_char;
    pub fn poppler_page_get_link_mapping(page: *mut PopplerPage) -> *mut glib::GList;
    pub fn poppler_page_get_selected_region(
        page: *mut PopplerPage,
        scale: c_double,
        style: PopplerSelectionStyle,
        selection: *mut PopplerRectangle,
    ) -> *mut cairo::cairo_region_t;
    pub fn poppler_page_get_selected_text(
        page: *mut PopplerPage,
        style: PopplerSelectionStyle,
        selection: *mut PopplerRectangle,
    ) -> *mut c_char;
    pub fn poppler_page_get_selection_region(
        page: *mut PopplerPage,
        scale: c_double,
        style: PopplerSelectionStyle,
        selection: *mut PopplerRectangle,
    ) -> *mut glib::GList;
    pub fn poppler_page_get_size(
        page: *mut PopplerPage,
        width: *mut c_double,
        height: *mut c_double,
    );
    pub fn poppler_page_get_text(page: *mut PopplerPage) -> *mut c_char;
    pub fn poppler_page_get_text_attributes(page: *mut PopplerPage) -> *mut glib::GList;
    pub fn poppler_page_get_text_attributes_for_area(
        page: *mut PopplerPage,
        area: *mut PopplerRectangle,
    ) -> *mut glib::GList;
    pub fn poppler_page_get_text_for_area(
        page: *mut PopplerPage,
        area: *mut PopplerRectangle,
    ) -> *mut c_char;
    pub fn poppler_page_get_text_layout(
        page: *mut PopplerPage,
        rectangles: *mut *mut PopplerRectangle,
        n_rectangles: *mut c_uint,
    ) -> gboolean;
    pub fn poppler_page_get_text_layout_for_area(
        page: *mut PopplerPage,
        area: *mut PopplerRectangle,
        rectangles: *mut *mut PopplerRectangle,
        n_rectangles: *mut c_uint,
    ) -> gboolean;
    pub fn poppler_page_get_thumbnail(page: *mut PopplerPage) -> *mut cairo::cairo_surface_t;
    pub fn poppler_page_get_thumbnail_size(
        page: *mut PopplerPage,
        width: *mut c_int,
        height: *mut c_int,
    ) -> gboolean;
    pub fn poppler_page_get_transition(page: *mut PopplerPage) -> *mut PopplerPageTransition;
    pub fn poppler_page_remove_annot(page: *mut PopplerPage, annot: *mut PopplerAnnot);
    pub fn poppler_page_render(page: *mut PopplerPage, cairo: *mut cairo::cairo_t);
    pub fn poppler_page_render_for_printing(page: *mut PopplerPage, cairo: *mut cairo::cairo_t);
    pub fn poppler_page_render_for_printing_with_options(
        page: *mut PopplerPage,
        cairo: *mut cairo::cairo_t,
        options: PopplerPrintFlags,
    );
    #[cfg(feature = "v25_2")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v25_2")))]
    pub fn poppler_page_render_full(
        page: *mut PopplerPage,
        cairo: *mut cairo::cairo_t,
        printing: gboolean,
        flags: PopplerRenderAnnotsFlags,
    );
    pub fn poppler_page_render_selection(
        page: *mut PopplerPage,
        cairo: *mut cairo::cairo_t,
        selection: *mut PopplerRectangle,
        old_selection: *mut PopplerRectangle,
        style: PopplerSelectionStyle,
        glyph_color: *mut PopplerColor,
        background_color: *mut PopplerColor,
    );
    pub fn poppler_page_render_to_ps(page: *mut PopplerPage, ps_file: *mut PopplerPSFile);
    #[cfg(feature = "v25_8")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v25_8")))]
    pub fn poppler_page_render_transparent_selection(
        page: *mut PopplerPage,
        cairo: *mut cairo::cairo_t,
        selection: *mut PopplerRectangle,
        old_selection: *mut PopplerRectangle,
        style: PopplerSelectionStyle,
        background_color: *mut PopplerColor,
        background_opacity: c_double,
    );

    //=========================================================================
    // PopplerStructureElement
    //=========================================================================
    pub fn poppler_structure_element_get_type() -> GType;
    pub fn poppler_structure_element_get_abbreviation(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> *mut c_char;
    pub fn poppler_structure_element_get_actual_text(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> *mut c_char;
    pub fn poppler_structure_element_get_alt_text(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> *mut c_char;
    pub fn poppler_structure_element_get_background_color(
        poppler_structure_element: *mut PopplerStructureElement,
        color: *mut PopplerColor,
    ) -> gboolean;
    pub fn poppler_structure_element_get_baseline_shift(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> c_double;
    pub fn poppler_structure_element_get_block_align(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> PopplerStructureBlockAlign;
    pub fn poppler_structure_element_get_border_color(
        poppler_structure_element: *mut PopplerStructureElement,
        colors: *mut [PopplerColor; 4],
    ) -> gboolean;
    pub fn poppler_structure_element_get_border_style(
        poppler_structure_element: *mut PopplerStructureElement,
        border_styles: *mut [PopplerStructureBorderStyle; 4],
    );
    pub fn poppler_structure_element_get_border_thickness(
        poppler_structure_element: *mut PopplerStructureElement,
        border_thicknesses: *mut [c_double; 4],
    ) -> gboolean;
    pub fn poppler_structure_element_get_bounding_box(
        poppler_structure_element: *mut PopplerStructureElement,
        bounding_box: *mut PopplerRectangle,
    ) -> gboolean;
    pub fn poppler_structure_element_get_color(
        poppler_structure_element: *mut PopplerStructureElement,
        color: *mut PopplerColor,
    ) -> gboolean;
    pub fn poppler_structure_element_get_column_count(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> c_uint;
    pub fn poppler_structure_element_get_column_gaps(
        poppler_structure_element: *mut PopplerStructureElement,
        n_values: *mut c_uint,
    ) -> *mut c_double;
    pub fn poppler_structure_element_get_column_widths(
        poppler_structure_element: *mut PopplerStructureElement,
        n_values: *mut c_uint,
    ) -> *mut c_double;
    pub fn poppler_structure_element_get_end_indent(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> c_double;
    pub fn poppler_structure_element_get_form_description(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> *mut c_char;
    pub fn poppler_structure_element_get_form_role(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> PopplerStructureFormRole;
    pub fn poppler_structure_element_get_form_state(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> PopplerStructureFormState;
    pub fn poppler_structure_element_get_glyph_orientation(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> PopplerStructureGlyphOrientation;
    pub fn poppler_structure_element_get_height(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> c_double;
    pub fn poppler_structure_element_get_id(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> *mut c_char;
    pub fn poppler_structure_element_get_inline_align(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> PopplerStructureInlineAlign;
    pub fn poppler_structure_element_get_kind(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> PopplerStructureElementKind;
    pub fn poppler_structure_element_get_language(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> *mut c_char;
    pub fn poppler_structure_element_get_line_height(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> c_double;
    pub fn poppler_structure_element_get_list_numbering(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> PopplerStructureListNumbering;
    pub fn poppler_structure_element_get_padding(
        poppler_structure_element: *mut PopplerStructureElement,
        paddings: *mut [c_double; 4],
    );
    pub fn poppler_structure_element_get_page(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> c_int;
    pub fn poppler_structure_element_get_placement(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> PopplerStructurePlacement;
    pub fn poppler_structure_element_get_ruby_align(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> PopplerStructureRubyAlign;
    pub fn poppler_structure_element_get_ruby_position(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> PopplerStructureRubyPosition;
    pub fn poppler_structure_element_get_space_after(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> c_double;
    pub fn poppler_structure_element_get_space_before(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> c_double;
    pub fn poppler_structure_element_get_start_indent(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> c_double;
    pub fn poppler_structure_element_get_table_border_style(
        poppler_structure_element: *mut PopplerStructureElement,
        border_styles: *mut [PopplerStructureBorderStyle; 4],
    );
    pub fn poppler_structure_element_get_table_column_span(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> c_uint;
    pub fn poppler_structure_element_get_table_headers(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> *mut *mut c_char;
    pub fn poppler_structure_element_get_table_padding(
        poppler_structure_element: *mut PopplerStructureElement,
        paddings: *mut [c_double; 4],
    );
    pub fn poppler_structure_element_get_table_row_span(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> c_uint;
    pub fn poppler_structure_element_get_table_scope(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> PopplerStructureTableScope;
    pub fn poppler_structure_element_get_table_summary(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> *mut c_char;
    pub fn poppler_structure_element_get_text(
        poppler_structure_element: *mut PopplerStructureElement,
        flags: PopplerStructureGetTextFlags,
    ) -> *mut c_char;
    pub fn poppler_structure_element_get_text_align(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> PopplerStructureTextAlign;
    pub fn poppler_structure_element_get_text_decoration_color(
        poppler_structure_element: *mut PopplerStructureElement,
        color: *mut PopplerColor,
    ) -> gboolean;
    pub fn poppler_structure_element_get_text_decoration_thickness(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> c_double;
    pub fn poppler_structure_element_get_text_decoration_type(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> PopplerStructureTextDecoration;
    pub fn poppler_structure_element_get_text_indent(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> c_double;
    pub fn poppler_structure_element_get_text_spans(
        poppler_structure_element: *mut PopplerStructureElement,
        n_text_spans: *mut c_uint,
    ) -> *mut *mut PopplerTextSpan;
    pub fn poppler_structure_element_get_title(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> *mut c_char;
    pub fn poppler_structure_element_get_width(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> c_double;
    pub fn poppler_structure_element_get_writing_mode(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> PopplerStructureWritingMode;
    pub fn poppler_structure_element_is_block(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> gboolean;
    pub fn poppler_structure_element_is_content(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> gboolean;
    pub fn poppler_structure_element_is_grouping(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> gboolean;
    pub fn poppler_structure_element_is_inline(
        poppler_structure_element: *mut PopplerStructureElement,
    ) -> gboolean;

    //=========================================================================
    // Other functions
    //=========================================================================
    pub fn poppler_date_parse(date: *const c_char, timet: *mut time_t) -> gboolean;
    pub fn poppler_get_available_signing_certificates() -> *mut glib::GList;
    pub fn poppler_get_backend() -> PopplerBackend;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_get_certificate_info_by_id(id: *const c_char) -> *mut PopplerCertificateInfo;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_get_nss_dir() -> *mut c_char;
    pub fn poppler_get_version() -> *const c_char;
    #[cfg(feature = "v0_73")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_73")))]
    pub fn poppler_named_dest_from_bytestring(data: *const u8, length: size_t) -> *mut c_char;
    #[cfg(feature = "v0_73")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v0_73")))]
    pub fn poppler_named_dest_to_bytestring(name: *const c_char, length: *mut size_t) -> *mut u8;
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_set_nss_dir(path: *const c_char);
    #[cfg(feature = "v23_7")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v23_7")))]
    pub fn poppler_set_nss_password_callback(func: PopplerNssPasswordFunc);

}
