use crate::bindgen::{
FPDF_ERR_FILE, FPDF_ERR_FORMAT, FPDF_ERR_PAGE, FPDF_ERR_PASSWORD, FPDF_ERR_SECURITY,
FPDF_ERR_UNKNOWN,
};
use std::error::Error;
use std::ffi::IntoStringError;
use std::fmt::{Display, Formatter, Result};
use std::num::ParseIntError;
#[cfg(target_arch = "wasm32")]
use wasm_bindgen::JsValue;
#[derive(Debug)]
pub enum PdfiumInternalError {
FileError = FPDF_ERR_FILE as isize,
FormatError = FPDF_ERR_FORMAT as isize,
PasswordError = FPDF_ERR_PASSWORD as isize,
SecurityError = FPDF_ERR_SECURITY as isize,
PageError = FPDF_ERR_PAGE as isize,
Unknown = FPDF_ERR_UNKNOWN as isize,
}
#[derive(Debug)]
pub enum PdfiumError {
#[cfg(target_arch = "wasm32")]
PdfiumWASMModuleNotConfigured,
#[cfg(not(target_arch = "wasm32"))]
LoadLibraryError(libloading::Error),
#[cfg(not(target_arch = "wasm32"))]
LoadLibraryFunctionNameError(String),
UnrecognizedPath,
PageIndexOutOfBounds,
LinkIndexOutOfBounds,
UnknownBitmapFormat,
UnknownBitmapRotation,
UnknownFormType,
UnknownFormFieldType,
UnknownActionType,
UnknownAppearanceMode,
UnknownPageAnnotationVariableTextJustificationType,
PageObjectIndexOutOfBounds,
PageAnnotationIndexOutOfBounds,
OwnershipNotAttachedToDocument,
OwnershipNotAttachedToPage,
OwnershipAlreadyAttachedToDifferentPage,
OwnershipNotAttachedToAnnotation,
FormFieldOptionIndexOutOfBounds,
FormFieldAppearanceStreamUndefined,
PageFlattenFailure,
PageMissingEmbeddedThumbnail,
UnknownPdfPageObjectType,
UnknownPdfPageTextRenderMode,
UnknownPdfPagePathFillMode,
UnknownPdfAnnotationType,
UnknownPdfDestinationViewType,
UnknownPdfSecurityHandlerRevision,
UnknownPdfSignatureModificationDetectionPermissionLevel,
UnsupportedPdfPageObjectType,
TextSegmentIndexOutOfBounds,
TextSearchTargetIsEmpty,
CharIndexOutOfBounds,
NoCharsInPageObject,
NoCharsInAnnotation,
NoCharsInRect,
ImageObjectFilterIndexOutOfBounds,
ImageObjectFilterIndexInBoundsButFilterUndefined,
UnknownPdfColorSpace,
InvalidTransformationMatrix,
SignatureIndexOutOfBounds,
AttachmentIndexOutOfBounds,
NoDataInAttachment,
FontGlyphIndexOutOfBounds,
UnknownPathSegmentType,
NoPagesInDocument,
NoPageObjectsInCollection,
NoPageLinksInCollection,
NoAnnotationsInCollection,
PageObjectNotCopyable,
ImageObjectFiltersNotCopyable,
PathObjectBezierControlPointsNotCopyable,
PathObjectUnknownSegmentTypeNotCopyable,
GroupContainsNonCopyablePageObjects,
SourcePageIndexNotInCache,
NoUriForAction,
DestinationPageIndexNotAvailable,
DestinationPageLocationNotAvailable,
PageAnnotationAttachmentPointIndexOutOfBounds,
NoAttachmentPointsInPageAnnotation,
CoordinateConversionFunctionIndicatedError,
CannotMoveObjectAcrossDocuments,
PageObjectsCollectionIsImmutable,
PdfDestinationViewInvalidParameters,
ParseHexadecimalColorError(ParseIntError),
ParseHexadecimalColorUnexpectedLength,
ParseHexadecimalColorMissingLeadingHash,
CStringConversionError(IntoStringError),
DataBufferLengthMismatch,
EmptyPageObjectGroup,
PdfiumFunctionReturnValueIndicatedFailure,
UnableToConvertPdfiumColorValueToRustu8(std::num::TryFromIntError),
WebSysWindowObjectNotAvailable,
#[cfg(target_arch = "wasm32")]
JsValueUndefined,
#[cfg(target_arch = "wasm32")]
WebSysFetchError(JsValue),
#[cfg(target_arch = "wasm32")]
WebSysInvalidResponseError,
#[cfg(target_arch = "wasm32")]
JsSysErrorConstructingBlobFromBytes,
#[cfg(target_arch = "wasm32")]
JsSysErrorRetrievingFunctionTable(JsValue),
#[cfg(target_arch = "wasm32")]
JsSysErrorRetrievingFunction(JsValue),
#[cfg(target_arch = "wasm32")]
JsSysErrorPatchingFunctionTable(JsValue),
#[cfg(target_arch = "wasm32")]
NoPreviouslyCachedFunctionSet,
ImageError,
ImageSizeOutOfBounds,
IoError(std::io::Error),
PdfiumLibraryInternalError(PdfiumInternalError),
}
impl Display for PdfiumError {
fn fmt(&self, f: &mut Formatter<'_>) -> Result {
write!(f, "{self:#?}")
}
}
impl Error for PdfiumError {}