
    TAi                       S r SSKJr  SSKrSSKrSSKJr  SSKJr  SSK	J
r
JrJr  SSKJrJr  SSKJr  SS	KJr  SS
KJr  SSKJr  \R0                  " \5      r\S 5       r\S 5       r\            SS j5       r\SS j5       rg)z3Built-in plugin to implement PDF page optimization.    )annotationsN)Sequence)Path)Executor
PdfContexthookimpl)jbig2encpngquant)get_pdf_save_settings)numeric)optimize)check_external_programc           	        U R                  SS5      nUR                  SS[        [        SS5      SSS	9  UR                  S
[	        [        SS5      SSSS9  UR                  S[	        [        SS5      SSS[
        R                  S9  UR                  S[	        [        SS5      SSSS9  UR                  SSSS9  UR                  S[	        [        SS5      SS[
        R                  S9  UR                  S[	        [        SS5      SSS S9  g )!NzOptimization optionsz*Control how the PDF is optimized after OCRz-Oz
--optimizer         a  Control how PDF is optimized after processing:0 - do not optimize; 1 - do safe, lossless optimizations (default); 2 - do lossy JPEG and JPEG2000 optimizations; 3 - do more aggressive lossy JPEG and JPEG2000 optimizations. To enable lossy JBIG2, see --jbig2-lossy.)typechoicesdefaulthelpz--jpeg-qualityd   QzAdjust JPEG quality level for JPEG optimization. 100 is best quality and largest output size; 1 is lowest quality and smallest output; 0 uses the default.)r   r   metavarr   z--jpg-qualityjpeg_quality)r   r   r   destr   z--png-qualityzeAdjust PNG quality level to use when quantizing PNGs. Values have same meaning as with --jpeg-qualityz--jbig2-lossy
store_truezEnable JBIG2 lossy mode (better compression, not suitable for some use cases - see documentation). Only takes effect if --optimize 1 or higher is also enabled.)actionr   z--jbig2-page-group-sizei'  Nz--jbig2-thresholdg?g?g333333?TzSAdjust JBIG2 symbol code classification threshold (default 0.85), range 0.4 to 0.9.)add_argument_groupadd_argumentintranger   argparseSUPPRESSfloat)parser
optimizings     ]/var/www/html/land-ocr/venv/lib/python3.13/site-packages/ocrmypdf/builtin_plugins/optimize.pyadd_optionsr)      s]   ** LJ a8   S!S!"   S!S!   S!S!>  	 &	   !S!U#   UC%0  	    c           	        U R                   S:  a  [        SS[        R                  SSS9  U R                   S:  a/  [        SS[        R                  SS	U R
                  (       d  S
OSS9  U R                   S:X  aH  [        U R
                  U R                  U R                  /5      (       a  [        R                  S5        g g g )N   r
   z2.12.2z--optimize {2,3})programpackageversion_checkerneed_versionrequired_forjbig2r	   z0.28z --optimize {2,3} | --jbig2-lossyTF)r-   r.   r/   r0   r1   recommendedr   zdThe arguments --jbig2-lossy, --png-quality, and --jpeg-quality will be ignored because --optimize=0.)r   r   r
   versionr	   jbig2_lossyanypng_qualityr   logwarning)optionss    r(   check_optionsr;   e   s    1$,,!+	
 1 	$,,;$+$7$7U	
 1			g1173G3GH" " 	4	
"r*   c                   [        SSU0[        UR                  R                  5      D6n[	        XX%U5      n/ nUR                  R                  S:X  a  UR                  S5        Xg4$ [        R                  " 5       [        R                  " 5       S.nUR                  5        H#  u  pU
(       a  M  UR                  SU	 S35        M%     Xg4$ )N	linearizer   zOptimization was disabled.)r2   r
   zThe optional dependency 'zD' was not found, so some image optimizations could not be attempted. )
dictr   r:   output_typer   appendr	   	availabler
   items)	input_pdf
output_pdfcontextexecutorr=   save_settingsresult_pathmessagesimage_optimizersnamerB   s              r(   optimize_pdfrM      s      
 ; ;
<M 9'(SKH1$45    '') **,
  0557OD9/v 6< =  8   r*   c                4    U R                   R                  S:g  $ )Nr   )r:   r   )rF   s    r(   is_optimization_enabledrO      s    ??##q((r*   )rD   r   rE   r   rF   r   rG   r   r=   boolreturnztuple[Path, Sequence[str]])rF   r   rQ   rP   )__doc__
__future__r   r#   loggingcollections.abcr   pathlibr   ocrmypdfr   r   r   ocrmypdf._execr	   r
   ocrmypdf._pipeliner   ocrmypdf.clir   ocrmypdf.optimizer   ocrmypdf.subprocessr   	getLogger__name__r8   r)   r;   rM   rO   r>   r*   r(   <module>r_      s    : "   $  3 3 - 4   & 6! 
K 
K\ 

 

> 
!!! ! 	!
 !  ! 
!: 
) 
)r*   