diff --git a/src/ocrmypdf/_options.py b/src/ocrmypdf/_options.py index e381fc22..c7583d3e 100644 --- a/src/ocrmypdf/_options.py +++ b/src/ocrmypdf/_options.py @@ -139,6 +139,10 @@ class OCROptions(BaseModel): else: extra_attrs[key] = value + # Handle special cases for hOCR API + if 'output_folder' in extra_attrs and 'output_file' not in known_fields: + known_fields['output_file'] = '/dev/null' # Placeholder + instance = cls(**known_fields) instance.extra_attrs = extra_attrs return instance diff --git a/src/ocrmypdf/_pipeline.py b/src/ocrmypdf/_pipeline.py index 90524d58..df7823da 100644 --- a/src/ocrmypdf/_pipeline.py +++ b/src/ocrmypdf/_pipeline.py @@ -909,13 +909,22 @@ def convert_to_pdfa(input_pdf: Path, input_ps_stub: Path, context: PdfContext) - else: safe_symlink(input_pdf, fix_docinfo_file) + # Extract PDF/A part correctly + if options.output_type.startswith('pdfa'): + if options.output_type == 'pdfa': + pdfa_part = '2' # Default to PDF/A-2 + else: + pdfa_part = options.output_type.split('-')[-1] # Extract number from pdfa-1, pdfa-2, etc. + else: + pdfa_part = '2' # Fallback + context.plugin_manager.hook.generate_pdfa( pdf_version=input_pdfinfo.min_version, pdf_pages=[fix_docinfo_file], pdfmark=input_ps_stub, output_file=output_file, context=context, - pdfa_part=options.output_type[-1], # is pdfa-1, pdfa-2, or pdfa-3 + pdfa_part=pdfa_part, progressbar_class=( context.plugin_manager.hook.get_progressbar_class() if options.progress_bar