a
    yÀhLŸ  ã                   @   s  d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZ ddl	m
Z
 dd„ Zdd„ Zd5dd„Zdd„ Zdd„ Zd6dd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Z e!d4kre ƒ  dS )7é    N)ÚDictÚListÚSeté   )Úpymupdfc                 C   s   d|    dd¡S )Nz %s éK   ú-)Úcenter)Úx© r   úL/var/www/html/assistant/venv/lib/python3.9/site-packages/pymupdf/__main__.pyÚmycenter   s    r   c                 C   sÂ   |d }|d }|dkr"|   |¡S dd„ }t | |¡}t | |¡}|j|jkrt|j|j  krfdkrtn n
|jdksœt d||f ¡ t |¡ d}||ƒS t |¡}| |j¡ d }}||ƒS )zReturn image for a given XREF.r   r   c                 S   s"   | j jdkr| S t tj| ¡}|S )Né   )Ú
colorspaceÚnr   ÚPixmapÚcsRGB)ÚpixZtpixr   r   r   Úgetimage   s    zrecoverpix.<locals>.getimagez&Warning: unsupported /SMask %i for %i:N)	Zextract_imager   r   ZirectÚalphar   ÚmessageZ	set_alphaZsamples)ÚdocÚitemr
   Úsr   Zpix1Úpix2r   r   r   r   Ú
recoverpix   s     
2

r   FTc                 C   s„   t  | ¡}|js"|du r"t d¡ d}|js0|S |rp| |¡}|sLt d¡ |du r€t  |dkrhdd nd¡ nt d	|j ¡ |S )
z!Open and authenticate a document.Tz$this command supports PDF files onlyéÿÿÿÿzauthentication unsuccessfulé   zauthenticated as %sÚownerÚuserz'%s' requires a password)	r   ÚopenZis_pdfÚsysÚexitZ
needs_passZauthenticater   Úname)ÚfilenameÚpasswordÚshowÚpdfr   Úrcr   r   r   Ú	open_file9   s    



r)   c                 C   sL   t dd„ |  ¡ D ƒƒd }|  ¡ D ]$\}}d| |¡|f }t |¡ q"dS )zPrint a Python dictionary.c                 S   s   g | ]}t |ƒ‘qS r   )Úlen)Ú.0Úkr   r   r   Ú
<listcomp>N   ó    zprint_dict.<locals>.<listcomp>r   z%s: %sN)ÚmaxÚkeysÚitemsÚrjustr   r   )r   Úlr,   ÚvÚmsgr   r   r   Ú
print_dictL   s    r6   c                 C   sš   t  d| ¡ |  |¡}t  |¡ |  |¡rŒ| ¡ }z(| d¡d }|| }| d¡rZd}W n tyr   d}Y n0 t  d| ¡ t  d¡ t  d¡ d	S )
zPrint an object given by XREF number.

    Simulate the PDF source in "pretty" format.
    For a stream also print its size.
    z%i 0 objz/Lengthr   z0 RÚunknownzstream
...%s bytesZ	endstreamZendobjN)r   r   Zxref_objectZxref_is_streamÚsplitÚindexÚendswithÚ	Exception)r   ÚxrefZxref_strÚtempÚidxÚsizer   r   r   Ú
print_xrefT   s    





r@   Úpagec              	   C   sx  t |d ƒ}|  d|¡ dd¡} |  d¡}g }t|ƒD ]:\}}|d }| ¡ r”t|ƒ}	d|	  krl|k r€n n| t|ƒ¡ q6t d||f ¡ q6z"| d¡\}
}t|
ƒ}
t|ƒ}W n$ t	yÚ   t d||f ¡ Y n0 d|
  krò|k rn nd|  kr|k s"n t d||f ¡ |
|kr8| |
¡ q6|
|k rZ|t
t|
|d ƒƒ7 }q6|t
t|
|d d	ƒƒ7 }q6|S )
aK  Transform a page / xref specification into a list of integers.

    Args
    ----
        rlist: (str) the specification
        limit: maximum number, i.e. number of pages, number of objects
        what: a string to be used in error messages
    Returns
    -------
        A list of integers representing the specification.
    r   ÚNú Ú ú,zbad %s specification at item %ir   z%bad %s range specification at item %ir   )ÚstrÚreplacer8   Ú	enumerateÚ	isdecimalÚintÚappendr!   r"   r;   ÚlistÚrange)ZrlistÚlimitÚwhatrB   Z	rlist_arrZout_listÚseqr   r   ÚiÚi1Úi2r   r   r   Úget_listk   s6    
4


rT   c                 C   s  t | j| jdƒ}tj | j¡d }d}|dkr:|d }d}t|dƒ}|j}t 	d| j|j
| ¡ d |||d |d	 f ¡ |j}|d
kr®| ¡ }t 	d||dkr¤dndf ¡ | ¡ }|d
krÌt 	d| ¡ t 	¡  | jrt 	tdƒ¡ | ¡ }t||ƒ t 	¡  | jr,t 	tdƒ¡ t|jƒ t 	¡  | jrtt 	tdƒ¡ t| j| ¡ dd}|D ]}t||ƒ t 	¡  qZ| jrÚt 	tdƒ¡ t| j|j
d ƒ}	|	D ]8}
|
d }| |¡}t 	d|
 ¡ t||ƒ t 	¡  q | jrt 	tdƒ¡ t 	| ¡ ¡ t 	¡  | ¡  d S )NTi   ZKBiè  ÚMBr   z7'%s', pages: %i, objects: %i, %g %s, %s, encryption: %sÚformatÚ
encryptionr   z5document contains %i root form fields and is %ssignedé   znot rD   z#document contains %i embedded fileszPDF catalogzPDF metadatazobject informationr<   )rO   zpage informationzPage %i:zPDF trailer)r)   Úinputr%   ÚosÚpathÚgetsizeÚroundÚmetadatar   r   Ú
page_countZxref_lengthZis_form_pdfZget_sigflagsZembfile_countÚcatalogr   Zpdf_catalogr@   r6   ZxrefsrT   ÚpagesZ	page_xrefÚtrailerZpdf_trailerÚclose)Úargsr   r?   ÚflagÚmetar   r   r<   ZxreflÚpagelÚpnor   r   r   r&   š   sz    

ùÿÿÿÿ




r&   c                 C   sä   t | j| jdd}| j}d |¡}| js`|j| j| j| j	| j
| j| j| j|| j| j| jd d S t| j|jd ƒ}t ¡ }|D ]}|d }|j|||d q~|j| j| j| j	| j
| j| j| j|| j| j| jd | ¡  | ¡  d S )NT©r'   ©ZkeepÚnonezrc4-40zrc4-128zaes-128zaes-256)
ÚgarbageÚdeflateÚprettyÚcleanÚasciiÚlinearrW   Zowner_pwZuser_pwZpermissionsr   ©Z	from_pageZto_page)r)   rY   r%   rW   r9   ra   ÚsaveÚoutputrl   Úcompressrn   Úsanitizerp   rq   r   r   Z
permissionrT   r_   r   r    Ú
insert_pdfrc   )rd   r   rW   Zencryptra   Zoutdocrh   r   r   r   r   ro   Ù   sR    ÿõõro   c           
      C   sÚ   | j }t ¡ }|D ]¨}| d¡}t|ƒdkr4|d nd}t|d |dd}d |dd… ¡}|r€td |dd… ¡|jd ƒ}nt	d|jd ƒ}|D ]}	|j
||	d |	d d q”| ¡  q|j| jd	dd
 | ¡  dS )z&Join pages from several PDF documents.rE   r   Nr   Tri   r   rr   r   )rl   rm   )rY   r   r    r8   r*   r)   ÚjoinrT   r_   rM   rw   rc   rs   rt   )
rd   Zdoc_listr   Zsrc_itemZsrc_listr%   Úsrcra   Z	page_listrQ   r   r   r   Údoc_join  s    
 
rz   c           	      C   sL  t | j| jdd}| ¡ s6| jr,| j| jkr6t d¡ t | j| jƒ}| j	rTt
| j	ƒnt
ƒ }t
| ¡ ƒ}|r~||ks‚t d¡ n|}|st d¡ |t
| ¡ ƒ@ }|r¶t dt|ƒ ¡ |D ]L}| |¡}| |¡}|j|||d |d |d	 d
 t d||j	f ¡ qº| ¡  | jr8| j| jkr8|j| jdd n| ¡  | ¡  dS )z!Copy embedded files between PDFs.Tri   úcannot save PDF incrementallyz%not all names are contained in sourceznothing to copyz2following names already exist in receiving PDF: %sr$   Ú	ufilenameÚdesc©r$   r|   r}   zcopied entry '%s' from '%s'rX   ©rl   N)r)   rY   r%   Úcan_save_incrementallyrt   r!   r"   ÚsourceZ	pwdsourcer#   ÚsetÚembfile_namesrF   Úembfile_infoÚembfile_getÚembfile_addr   r   rc   rs   ÚsaveIncr)	rd   r   ry   ÚnamesZ	src_namesZ	intersectr   ÚinfoZbuffr   r   r   Úembedded_copy  sF    ÿ
ÿ



ûrŠ   c              
   C   sÄ   t | j| jdd}| ¡ s6| jr,| j| jkr6t d¡ z| | j¡ W nD t	t
jjfyŠ } z$t d| j›d|› ¡ W Y d}~n
d}~0 0 | jrž| j| jkr¨| ¡  n|j| jdd | ¡  dS )	zDelete an embedded file entry.Tri   r{   úno such embedded file ú: Nr   r   )r)   rY   r%   r€   rt   r!   r"   Úembfile_delr#   Ú
ValueErrorr   ÚmupdfÚFzErrorBaser‡   rs   rc   )rd   r   Úer   r   r   Úembedded_delE  s    ÿ
ÿ
.
r’   c              
   C   sÜ   t | j| jdd}z| | j¡}| | j¡}W nD ttjj	fyr } z$t
 d| j›d|› ¡ W Y d}~n
d}~0 0 | jr€| jn|d }t|dƒ}| |¡ W d  ƒ n1 s²0    Y  t d| j|f ¡ | ¡  dS )	z&Retrieve contents of an embedded file.Tri   r‹   rŒ   Nr$   Úwbzsaved entry '%s' as '%s')r)   rY   r%   r…   r#   r„   rŽ   r   r   r   r!   r"   rt   r    Úwriter   rc   )rd   r   ÚstreamÚdr‘   r$   rt   r   r   r   Úembedded_getX  s    .(r—   c                 C   s<  t | j| jdd}| ¡ s:| jdu s0| j| jkr:t d¡ z | | j¡ t d| j ¡ W n t	yl   Y n0 t
j | j¡rŠt
j | j¡sšt d| j ¡ t| jdƒ}| ¡ }W d  ƒ n1 sÄ0    Y  | j}|}| jsä|}n| j}|j| j||||d | jr| j| jkr | ¡  n|j| jd	d
 | ¡  dS )zInsert a new embedded file.Tri   Nr{   zentry '%s' already existszno such file '%s'Úrbr~   rX   r   )r)   rY   r%   r€   rt   r!   r"   r   r#   r;   rZ   r[   ÚexistsÚisfiler    Úreadr}   r†   r‡   rs   rc   ©rd   r   Úfr•   r$   r|   r}   r   r   r   Úembedded_addg  s8    ÿ
ÿ
&ÿ
rž   c                 C   sj  t | j| jdd}| ¡ s:| jdu s0| j| jkr:t d¡ z| | j¡ W n" t	yl   t d| j ¡ Y n0 | j
durÊtj
 | j
¡rÊtj
 | j
¡rÊt| j
dƒ}| ¡ }W d  ƒ qÎ1 s¾0    Y  nd}| jrÜ| j}nd}| jrî| j}n| jrü| j}nd}| jr| j}nd}|j| j||||d | jdu sD| j| jkrN| ¡  n|j| jdd	 | ¡  dS )
z0Update contents or metadata of an embedded file.Tri   Nr{   úno such embedded file '%s'r˜   r~   rX   r   )r)   rY   r%   r€   rt   r!   r"   r„   r#   r;   r[   rZ   r™   rš   r    r›   r$   r|   r}   Zembfile_updr‡   rs   rc   rœ   r   r   r   Úembedded_upd‰  sL    ÿ
ÿ
ÿþý(ÿ
r    c                 C   s0  t | j| jdd}| ¡ }| jdur’| j|vr@t d| j ¡ nRt ¡  t dt	|ƒt	|ƒdkrddndf ¡ t ¡  t
| | j¡ƒ t ¡  dS |sªt d	|j ¡ dS t	|ƒdkrÊd
|jt	|ƒf }n
d|j }t |¡ t ¡  |D ]8}| jst |¡ qê| |¡}t
| |¡ƒ t ¡  qê| ¡  dS )zList embedded files.Tri   NrŸ   z!printing 1 of %i embedded file%s:r   r   rD   z'%s' contains no embedded filesz-'%s' contains the following %i embedded filesz)'%s' contains the following embedded file)r)   rY   r%   rƒ   r#   r!   r"   r   r   r*   r6   r„   Údetailrc   )rd   r   rˆ   r5   r#   Ú_r   r   r   Úembedded_list»  s>    

ÿÿ




r£   c              
   C   sž  | j s| jst d¡ t| j| jdd}| jrBt| j|j	d ƒ}nt
d|j	d ƒ}| jshtj tj¡}n,| j}tj |¡r†tj |¡s”t d| ¡ tƒ }tƒ }|D ]®}| j rf| |d ¡}|D ] }|d }	|	|vrÄ| |	¡ | |	¡\}
}}}|dksÄ|sqÄtj ||
 dd	¡› d	|	› d
|› ¡}t|dƒ}| |¡ W d  ƒ n1 sV0    Y  d}qÄ| jr¤| |d ¡}|D ]Ô}|d }	|	|vr~| |	¡ t||ƒ}t|ƒtu r|d }|d }tj |d|	|f ¡}t|dƒ}| |¡ W d  ƒ n1 s0    Y  n<tj |d|	 ¡}|jjdk r8|nt  !t j"|¡}| #|¡ q~q¤| j rtt  $dt%|ƒ|f ¡ | jr’t  $dt%|ƒ|f ¡ | &¡  dS )z)Extract images and / or fonts from a PDF.z"neither fonts nor images requestedTri   r   z"output directory %s does not existr   zn/arC   r   Ú.r“   NÚextÚimagez	img-%i.%sz
img-%i.pngr   zsaved %i fonts to '%s'zsaved %i images to '%s')'ZfontsZimagesr!   r"   r)   rY   r%   ra   rT   r_   rM   rt   rZ   r[   ÚabspathÚcurdirr™   Úisdirr‚   Zget_page_fontsÚaddZextract_fontrx   rG   r    r”   Zget_page_imagesr   ÚtypeÚdictr   r   r   r   r   rs   r   r*   rc   )rd   r   ra   Zout_dirZ
font_xrefsZimage_xrefsrh   Zitemlistr   r<   Zfontnamer¥   r¢   ÚbufferÚoutnameÚoutfiler   Zimgdatar   r   r   r   Úextract_objectsß  sj    


ÿ*


,
ÿýr°   c           	      C   sX   |rdnt dgƒ}| jd|d}|s6|s2| |¡ d S | |jddd¡ | |¡ d S )Nó   
é   Útext©ÚflagsÚutf8Úsurrogatepass©Úerrors)ÚbytesÚget_textr”   Úencode)	rA   ÚtextoutÚGRIDÚfontsizeÚ
noformfeedÚ
skip_emptyrµ   Úeopr³   r   r   r   Úpage_simple!  s    

rÃ   c           
      C   sz   |rdnt dgƒ}| jd|d}|g kr:|s6| |¡ d S |jdd„ d |D ]}	| |	d jd	d
d¡ qN| |¡ d S )Nr±   r²   Úblocksr´   c                 S   s   | d | d fS )NrX   r   r   )Úbr   r   r   Ú<lambda>4  r.   z page_blocksort.<locals>.<lambda>©Úkeyr   r¶   r·   r¸   )rº   r»   r”   Úsortr¼   )
rA   r½   r¾   r¿   rÀ   rÁ   rµ   rÂ   rÄ   rÅ   r   r   r   Úpage_blocksort-  s    

rÊ   c           !         s>  |rdnt dgƒ}tt ttdœdd„}tt tdœdd„}	tt tjd	œ‡ ‡fd
d„}
ttdœdd„‰dd„ }| jd|dd }|
|| ƒ\}}}}}|g kr°|s¬| 	|¡ d S |	||ƒ}|j
dd„ d i }|D ]8}|\}}}}|||ƒ}| |g ¡}| |¡ |||< qÒt| ¡ ƒ}| 
¡  || }i }|D ]f}|| }t|ƒ}|dk rZd||< q0dd„ |D ƒ}| 
¡  t |¡}||k rˆ|}|d ||< q0||d |d   |t|ƒ  d }|d }| 	d¡ |D ]\}||k rö| 	d¡ ||7 }qÖ||||| || ƒ} | 	| d jdd d!¡ || }qÒ| 	|¡ d S )"Nr±   r²   )ÚvaluesÚvalueÚreturnc                 S   s0   t  | |¡}|r| |d  S td|| f ƒ‚dS )zôFind the right row coordinate.

        Args:
            values: (list) y-coordinates of rows.
            value: (int) lookup for this value (y-origin of char).
        Returns:
            y-ccordinate of appropriate line for value.
        r   zLine for %g not found in %sN)ÚbisectÚbisect_rightÚRuntimeError)rË   rÌ   rQ   r   r   r   Úfind_line_index?  s    	z$page_layout.<locals>.find_line_index)ÚrowsrÍ   c                 S   sJ   t | ƒ} |  ¡  | d g}| dd … D ]}||d | kr&| |¡ q&|S )Nr   r   r   )rL   rÉ   rK   )rÒ   r¾   ZnrowsÚhr   r   r   Úcurate_rowsN  s    
z page_layout.<locals>.curate_rows)rÄ   rA   c              
      sÈ  t ƒ }|jj}|jj}|}|}d}g }| D ]Œ}	|	d D ]|}
|
d dkrLq8|
d \}}}}|dk s8||jjkrrq8|| }||kr†|}|
d D ]$}|d ˆ kr¢qŽ|d D ]}|d \}}}}|| }|d	 \}}tt|ƒƒ}| |¡ |d
 }||kr
|dkr
|}||k r|}|dkr |g kr |d \}}}}||kr |tdƒkrbˆ|| ƒ}n,|dkrvtdƒ}n|dkrŠtdƒ}n|}||||f|d< qª| ||||f¡ qªqŽq8q*|||||fS )Nr   ÚlinesÚdir)r   r   ZbboxÚspansr?   ÚcharsÚoriginÚcrC   r   é û  rQ   éû  r3   éû  )	r‚   ÚrectÚwidthÚheightrJ   r]   rª   ÚchrrK   )rÄ   rA   rÒ   Z
page_widthZpage_heightÚ	rowheightÚleftÚrightrØ   ÚblockÚlineZx0Zy0Úx1Úy1rà   ÚspanrÚ   r¢   ÚcwidthÚoxÚoyÚchZold_chÚold_oxZold_oyZ
old_cwidthÚlig©r¿   Újoinligaturer   r   Úprocess_blocksW  sZ    







z#page_layout.<locals>.process_blocks)rï   rÍ   c                 S   st   | dkrt dƒS | dkr t dƒS | dkr0t dƒS | dkr@t dƒS | d	krPt d
ƒS | dkr`t dƒS | dkrpt dƒS | S )zËReturn ligature character for a given pair / triple of characters.

        Args:
            lig: (str) 2/3 characters, e.g. "ff"
        Returns:
            Ligature, e.g. "ff" -> chr(0xFB00)
        ÚffrÛ   Úfiiû  Úfliû  ÚffirÜ   ÚfflrÝ   Úftiû  Ústiû  )rá   )rï   r   r   r   rñ   ‹  s    	z!page_layout.<locals>.joinligaturec                 S   sô   d}d}d}d}|t jkr&td| ƒ‚|D ]À}|\}	}
}}|
|  }
|
| }||	krd|
| |d krdq*|	dkr~||
 | dkr~q*|	}|
|| k r ||	7 }|}|
}q*|	dkrªq*t|
| ƒt|ƒ }|
|krÚ|dkrÚ|d| 7 }||	7 }|}|
}q*| ¡ S )a†  Produce the text of one output line.

        Args:
            left: (float) left most coordinate used on page
            slot: (float) avg width of one character in any font in use.
            minslot: (float) min width for the characters in this line.
            chars: (list[tuple]) characters of this line.
        Returns:
            text: (str) text string for this line
        rD   r   z%program error: minslot too small = %ggš™™™™™É?rC   gš™™™™™é?r   )r   ZEPSILONrÐ   rJ   r*   Úrstrip)rã   ÚslotZminslotÚlcharsr³   Zold_charZold_x1rî   rÚ   Úcharrë   r¢   rê   rç   Údeltar   r   r   Úmake_textline¥  s:    
z"page_layout.<locals>.make_textlineZrawdictr´   rÄ   c                 S   s   | d S )Nr   r   )rÚ   r   r   r   rÆ   ç  r.   zpage_layout.<locals>.<lambda>rÇ   r   r   c                 S   s   g | ]}|d  ‘qS )rX   r   )r+   rÚ   r   r   r   r-     r.   zpage_layout.<locals>.<listcomp>r   r   g333333ó?Ú
r¶   r·   r¸   )rº   r   rJ   r   r   r   ZPagerF   r»   r”   rÉ   ÚgetrK   rL   r0   r*   Ú
statisticsZmedianr¼   )!rA   r½   r¾   r¿   rÀ   rÁ   rµ   rÂ   rÑ   rÔ   rò   rÿ   rÄ   rØ   rÒ   rã   rä   râ   rÕ   rÚ   r¢   rì   Úyrü   r0   rû   Zminslotsr,   ZccountÚwidthsZ	this_slotZrowposr³   r   rð   r   Úpage_layout;  s`    	46








$


r  c                 C   sü   t | j| jdd}t| j|jd ƒ}| j}|d u rLtj 	|j
¡\}}|d }t|dƒ’}tjtjB }| jrt|tjN }| jr„|tjN }| jr”|tjN }tttdœ}|D ]4}	||	d  }
|| j |
|| j| j| j| j|d q¤W d   ƒ n1 sî0    Y  d S )NFri   r   z.txtr“   ©ÚsimplerÄ   Úlayoutr´   )r)   rY   r%   rT   ra   r_   rt   rZ   r[   Úsplitextr#   r    r   ZTEXT_PRESERVE_LIGATURESZTEXT_PRESERVE_WHITESPACEZconvert_whiteZnoligaturesZextra_spacesZTEXT_INHIBIT_SPACESrÃ   rÊ   r  ÚmodeÚgridr¿   rÀ   rÁ   )rd   r   rg   rt   r$   r¢   r½   rµ   Úfuncrh   rA   r   r   r   Úgettext  s:    


ýùr  c                 C   s   t  d¡ t  d¡ d S )NzThis is from PyMuPDF message().zThis is from PyMuPDF log().)r   r   Úlog)rd   r   r   r   Ú	_internal=  s    
r  c                  C   s8  t jdtdƒd} | jddd}|jdtdƒd	}|jd
tdd |jddd |jdddd |jdddd |jdddd |jdtdd |jdtdd |jtd |jdtdƒd	}|jd
tdd |jdtd d |jddd |jd!d"d#d$d% |jd&td'd |jd(td)d |jd*t	d+t
d,ƒd-d. |jd/dd0d1d2 |jd3dd0d4d2 |jd5dd0d6d2 |jd7t	d8d9d: |jd;dd0d<d2 |jd=dd0d>d2 |jdd?d |jtd |jd@tdAƒdBdC}|jd
dDdEdF |jdGdHdIdJ |jtd |jdKtdLƒd	}|jd
tdd |jdMddNd |jdOddPd |jdGdQd |jddd |jdtdRd |jtd |jdStdTƒd	}|jd
dd |jdUdVd |jdWddXd |jddd |jtd |jdYtdZƒd	}|jd
dd |jddd |jdGd[d |jdUdHd\dJ |jd]dHd^dJ |jd_d`d |jtd |jdatdbƒd	}|jd
dd |jddd |jdGd[d |jdUdHdcdJ |jtd |jddtdeƒdfdC}|jd
dd |jdUdHdgdJ |jddd |jdGdhd |jd]did |jdjdkd |jdldmd |jd_dnd |jtd |jdotdpƒd	}	|	jd
tdd |	jdUdHdgdJ |	jddd |	jdGdqd |	jtd |jdrtdsƒd	}
|
jd
tdtd |
jddud |
jdGdvd |
jdwdHdxdJ |
jdydzd |
jdUdDd{dF |
jtd |jd|td}ƒd	}|jd
td~d |jddd |jd€tdd‚dƒd. |jdtd„d…d† |jd‡ddˆd0d‰ |jdŠdd‹d0d‰ |jdŒddd0d‰ |jdŽddd0d‰ |jddd‘d0d‰ |jdGd’d |jd“td”d•d† |jd–td—d˜d† |jtd |jd™tdšƒd	}|jtd |  ¡ }t|d›ƒs*|  ¡  n
| |¡ dœS )zDefine command configurations.r   zBasic PyMuPDF Functions)ÚprogÚdescriptionZSubcommandsz/Enter 'command -h' for subcommand specific help)ÚtitleÚhelpr&   zdisplay PDF information)r  rY   zPDF filename)r«   r  z	-passwordr%   )r  z-catalogÚ
store_truezshow PDF catalog)Úactionr  z-trailerzshow PDF trailerz	-metadatazshow PDF metadataz-xrefsz&show selected objects, format: 1,5-7,Nz-pagesz'show selected pages, format: 1,5-7,50-N)r  ro   z.optimize PDF, or create sub-PDF if pages givenrt   zoutput PDF filenamez-encryptionzencryption methodrj   rk   )r  ÚchoicesÚdefaultz-ownerzowner passwordz-userzuser passwordz-garbagezgarbage collection levelé   r   )r«   r  r  r  z	-compressFzcompress (deflate) output)r  r  r  z-asciizASCII encode binary dataz-linearzformat for fast web displayz-permissionr   zinteger with permission levels)r«   r  r  z	-sanitizezsanitize / clean contentsz-prettyzprettify PDF structurez/output selected pages pages, format: 1,5-7,50-Nrx   zjoin PDF documentsz3specify each input as 'filename[,password[,pages]]')r  ÚepilogÚ*zinput filenames)Únargsr  z-outputTzoutput filename)Úrequiredr  Úextractz extract images and fonts to diskz-imageszextract imagesz-fontszextract fontsz-folder to receive output, defaults to currentz-consider these pages only, format: 1,5-7,50-Nz
embed-infozlist embedded filesz-namezif given, report only this onez-detailzdetail informationz	embed-addzadd embedded filez-output PDF filename, incremental save if nonezname of new entryz-pathzpath to data for new entryz-desczdescription of new entryz	embed-delzdelete embedded filezname of entry to deletez	embed-updzupdate embedded filez*except '-name' all parameters are optionalzname of entryz-Output PDF filename, incremental save if nonezpath to new data for entryz	-filenameznew filename to store in entryz
-ufilenamez&new unicode filename to store in entryz!new description to store in entryzembed-extractzextract embedded file to diskz'output filename, default is stored namez
embed-copyz copy embedded files between PDFszPDF to receive embedded fileszpassword of inputz2output PDF, incremental save to 'input' if omittedz-sourcezcopy embedded files from herez
-pwdsourcezpassword of 'source' PDFzrestrict copy to these entriesr  z(extract text in various formatting modeszinput document filenamezpassword for input documentz-modez-mode: simple, block sort, or layout (default)r  r  z select pages, format: 1,5-7,50-Nz1-N)r«   r  r  z-noligaturesz*expand ligature characters (default False))r  r  r  z-convert-whitez6convert whitespace characters to white (default False)z-extra-spacesz%fill gaps with spaces (default False)z-noformfeedz-write linefeeds, no formfeeds (default False)z-skip-emptyz+suppress pages with no text (default False)z3store text in this file (default inputfilename.txt)z-gridz+merge lines if closer than this (default 2)r   z	-fontsizez4only include text with a larger fontsize (default 3)rX   Zinternalzinternal testingr  N)ÚargparseÚArgumentParserr   Úadd_subparsersÚ
add_parserÚadd_argumentrF   Úset_defaultsr&   rJ   rM   ro   rz   r°   r£   rž   r’   r    r—   rŠ   Úfloatr  r  Ú
parse_argsÚhasattrÚ
print_helpr  )ÚparserZsubpsZps_showZps_cleanZps_joinZ
ps_extractZps_embed_addZps_embed_delZps_embed_updZps_embed_extractZps_embed_copyZ
ps_gettextZps_internalrd   r   r   r   ÚmainA  sâ   þÿÿÿÿüûüÿüÿüÿÿýÿÿÿÿÿÿÿÿýÿÿÿÿÿÿÿÿÿûüüüüüüþüüÿ
r)  Ú__main__)FT)rA   )"r  rÎ   rZ   r!   r  Útypingr   r   r   rD   r   r   r   r)   r6   r@   rT   r&   ro   rz   rŠ   r’   r—   rž   r    r£   r°   rÃ   rÊ   r  r  r  r)  Ú__name__r   r   r   r   Ú<module>   sB   $

/?/("2$B b!  4
