
    j5j                        d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ  ej"                  e      Z G d
 de
      Z eddef      Zej.                  Zej0                  ZddZddZy)z Interface to verapdf executable.    )annotationsN)Path)PIPE)
NamedTuple)	ToolProbe)MissingDependencyError)runc                  0    e Zd ZU dZded<   ded<   ded<   y)	ValidationResultzResult of PDF/A validation.boolvalidintfailed_rulesstrmessageN)__name__
__module____qualname____doc____annotations__     L/var/www/html/qr/venv/lib/python3.12/site-packages/ocrmypdf/_exec/verapdf.pyr   r      s    %KLr   r   verapdfzveraPDF (\d+(\.\d+)*))programversion_regex
also_catchc                4    ddddd}|j                  | d      S )zMap OCRmyPDF output_type to verapdf flavour.

    Args:
        output_type: One of 'pdfa', 'pdfa-1', 'pdfa-2', 'pdfa-3'

    Returns:
        verapdf flavour string like '1b', '2b', '3b'
    2b1b3b)pdfazpdfa-1zpdfa-2zpdfa-3)get)output_typemappings     r   output_type_to_flavourr&   &   s*     	G ;;{D))r   c                   dddd|t        |       g}	 t        |t        t        d      }	 t        j                  |j                        }|j                  di       j                  d	g       }|st        dd
d      S |d   j                  dg       }|st        dd
d      S |d   }|j                  di       }	|	j                  dd      }
|
dk(  rt        ddd      S t        d|
d|
 d      S # t        $ r}t	        d      |d}~ww xY w# t
        j                  t        t        f$ r0}t        j                  d|       t        dd
d|       cY d}~S d}~ww xY w)zValidate a PDF against a PDF/A profile.

    Args:
        input_file: Path to PDF file to validate
        flavour: verapdf flavour (1a, 1b, 2a, 2b, 2u, 3a, 3b, 3u)

    Returns:
        ValidationResult with validation status
    r   z--formatjsonz	--flavourF)stdoutstderrcheckNreportjobszNo validation jobs in resultr   validationResultzNo validation result in outputdetailsfailedRulesTzPDF/A validation passedzPDF/A validation failed with z rule violationsz"Failed to parse verapdf output: %sz Failed to parse verapdf output: )r   r	   r   FileNotFoundErrorr   r(   loadsr)   r#   r   JSONDecodeErrorKeyError	TypeErrorlogdebug)
input_fileflavourargsproceresultr-   validation_resultsvalidation_resultr0   r   s              r   validaterA   8   sq    	JD74T?SDKK(zz(B'++FB7#E2/MNN!!W[[);R@!#E2/OPP.q1#''	26{{=!41#D!-FGG#/~=MN %  7$Y/Q67.   (I6 S		6:r-MaS+QRRSsG   C+ AD ;#D :D D +	D4D  DE&%EEE)r$   r   returnr   )r9   r   r:   r   rB   r   )r   
__future__r   r(   loggingpathlibr   
subprocessr   typingr   ocrmypdf._exec._prober   ocrmypdf.exceptionsr   ocrmypdf.subprocessr	   	getLoggerr   r7   r   OSErrorPROBEversion	availabler&   rA   r   r   r   <module>rP      sy    ' "      + 6 #g!z  	*z	
 --OO	*$.Sr   