Exceptions
All exceptions are importable directly from paperjam:
from paperjam import PdfError, ParseError, PasswordRequired, InvalidPassword, PageOutOfRange
Exception hierarchy
PdfError (base)
├── ParseError
├── PasswordRequired
├── InvalidPassword
├── PageOutOfRange (also subclasses IndexError)
├── UnsupportedFeature
├── TableExtractionError
├── AnnotationError
├── WatermarkError
├── OptimizationError
├── SanitizeError
├── EncryptionError
├── RedactError
├── FormError
├── RenderError
├── SignatureError
├── FormatError
└── PipelineError
Base exception
PdfError
class paperjam.PdfError(Exception)
Base class for all paperjam exceptions. Catch this to handle any PDF-related error regardless of its specific cause:
import paperjam
from paperjam import PdfError
try:
doc = paperjam.open("file.pdf")
except PdfError as e:
print(f"PDF error: {e}")
Opening and parsing
ParseError
class paperjam.ParseError(PdfError)
Raised when a file cannot be parsed as a PDF. This typically means the file is corrupt, truncated, or not a PDF at all.
try:
doc = paperjam.open("not-a-pdf.txt")
except paperjam.ParseError as e:
print(f"Not a valid PDF: {e}")
PasswordRequired
class paperjam.PasswordRequired(PdfError)
Raised when trying to open an encrypted PDF without providing a password.
try:
doc = paperjam.open("locked.pdf")
except paperjam.PasswordRequired:
print("This PDF requires a password")
doc = paperjam.open("locked.pdf", password=input("Password: "))
InvalidPassword
class paperjam.InvalidPassword(PdfError)
Raised when the provided password does not decrypt the PDF.
try:
doc = paperjam.open("locked.pdf", password="wrong")
except paperjam.InvalidPassword:
print("Incorrect password")
PageOutOfRange
class paperjam.PageOutOfRange(PdfError, IndexError)
Raised when a 1-based page number does not exist in the document. Also subclasses IndexError so it is caught by bare IndexError handlers.
try:
doc.render_page(999)
except paperjam.PageOutOfRange as e:
print(f"No such page: {e}")
UnsupportedFeature
class paperjam.UnsupportedFeature(PdfError)
Raised when the PDF uses a feature that paperjam does not support (e.g. a very old or experimental PDF extension).
Extraction errors
TableExtractionError
class paperjam.TableExtractionError(PdfError)
Raised when table extraction fails for a specific page, for example due to malformed content streams.
Annotation and watermark errors
AnnotationError
class paperjam.AnnotationError(PdfError)
Raised when adding or removing annotations fails.
WatermarkError
class paperjam.WatermarkError(PdfError)
Raised when adding a watermark fails (e.g. invalid font or color parameters).
Security errors
OptimizationError
class paperjam.OptimizationError(PdfError)
Raised when PDF optimization fails.
SanitizeError
class paperjam.SanitizeError(PdfError)
Raised when sanitization fails.
EncryptionError
class paperjam.EncryptionError(PdfError)
Raised when encryption fails (e.g. unsupported algorithm or key length).
RedactError
class paperjam.RedactError(PdfError)
Raised when redaction fails, for example if the specified regions are outside the page bounds.
Form errors
FormError
class paperjam.FormError(PdfError)
Raised for all form-related failures: reading, filling, creating, or modifying fields.
Rendering errors
RenderError
class paperjam.RenderError(PdfError)
Raised when page rendering fails. Requires the render feature — if pdfium is not available this exception will be raised.
Signature errors
SignatureError
class paperjam.SignatureError(PdfError)
Raised when signing fails (e.g. malformed private key or certificate) or when signature verification encounters an internal error.
Format errors
FormatError
class paperjam.FormatError(PdfError)
Raised when a document format is unsupported or cannot be processed.
try:
doc = paperjam.open("archive.7z")
except paperjam.FormatError as e:
print(f"Unsupported format: {e}")
Pipeline errors
PipelineError
class paperjam.PipelineError(PdfError)
Raised when a pipeline definition is invalid or execution fails.
try:
paperjam.validate_pipeline(yaml_string)
except paperjam.PipelineError as e:
print(f"Invalid pipeline: {e}")
Catching all PDF errors
import paperjam
from paperjam import PdfError
try:
doc = paperjam.open(user_input)
text = doc.pages[0].extract_text()
doc.save("output.pdf")
except paperjam.PasswordRequired:
return "This PDF is password-protected"
except paperjam.ParseError:
return "This file is not a valid PDF"
except PdfError as e:
return f"PDF processing error: {e}"