diff --git a/src/ocrmypdf/_jobcontext.py b/src/ocrmypdf/_jobcontext.py index b13c5deb..8e9cb520 100644 --- a/src/ocrmypdf/_jobcontext.py +++ b/src/ocrmypdf/_jobcontext.py @@ -39,9 +39,18 @@ class PdfContext: if isinstance(options, Namespace): self.options = OCROptions.from_namespace(options) self._namespace_options = options # Keep original for PageContext - else: + elif isinstance(options, OCROptions): self.options = options self._namespace_options = options.to_namespace() # Convert immediately for PageContext + else: + # Handle other option types (like OptimizeOptions) by converting to OCROptions first + # This is a fallback for legacy code + self.options = options + # Create a minimal namespace for PageContext compatibility + self._namespace_options = Namespace() + for attr in dir(options): + if not attr.startswith('_') and hasattr(options, attr): + setattr(self._namespace_options, attr, getattr(options, attr)) self.work_folder = work_folder self.origin = origin self.pdfinfo = pdfinfo diff --git a/src/ocrmypdf/optimize.py b/src/ocrmypdf/optimize.py index 41a1a385..80c02b7b 100644 --- a/src/ocrmypdf/optimize.py +++ b/src/ocrmypdf/optimize.py @@ -766,32 +766,23 @@ def main(infile, outfile, level, jobs=1): """Entry point for direct optimization of a file.""" from shutil import copy # pylint: disable=import-outside-toplevel from tempfile import TemporaryDirectory # pylint: disable=import-outside-toplevel - - class OptimizeOptions: - """Emulate ocrmypdf's options.""" - - def __init__( - self, input_file, jobs, optimize_, jpeg_quality, png_quality, jb2lossy - ): - self.input_file = input_file - self.jobs = jobs - self.optimize = optimize_ - self.jpeg_quality = jpeg_quality - self.png_quality = png_quality - self.jbig2_page_group_size = 0 - self.jbig2_lossy = jb2lossy - self.jbig2_threshold = 0.85 - self.quiet = True - self.progress_bar = False + from ocrmypdf._options import OCROptions # pylint: disable=import-outside-toplevel infile = Path(infile) - options = OptimizeOptions( + + # Create OCROptions with optimization-specific settings + options = OCROptions( input_file=infile, + output_file=outfile, # Required field jobs=jobs, - optimize_=int(level), - jpeg_quality=0, # Use default + optimize=int(level), + jpg_quality=0, # Use default png_quality=0, - jb2lossy=False, + jbig2_page_group_size=0, + jbig2_lossy=False, + jbig2_threshold=0.85, + quiet=True, + progress_bar=False, ) with TemporaryDirectory() as tmpdir: