
    h5j9)                    R   d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
 e	rddlmZ ddlmZmZmZmZ e G d d	             Zdd
ZdddZd dZe G 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d	 	 	 	 	 	 	 	 	 d,dZ!y)-z3Results and helpers for copying pages between PDFs.    )annotations)Iterable)	dataclassfield)TYPE_CHECKINGLiteral)Pdf)Array
DictionaryNameStringc                  :    e Zd ZU dZded<   ded<   ded<   ded<   y	)
_DestRefzA named-destination reference found on a copied page.

    ``owner[key]`` is the ``String``/``Name`` value to rewrite if the
    destination is renamed during migration.
    r   ownerr   keystrkindnameN)__name__
__module____qualname____doc____annotations__     H/var/www/html/qr/venv/lib/python3.12/site-packages/pikepdf/_page_copy.pyr   r      s     	I
I
Ir   r   c           
        | j                  |      }t        |t              r'|j                  t	        | |dt        |                   y t        |t              r'|j                  t	        | |dt        |                   y y )Nstringr   )get
isinstancer   appendr   r   r   )r   r   refsvals       r   _maybe_add_destr$      s^    
))C.C#vHUC3s8<=	C	HUCS:; 
r   c                   |dkD  st        | t              sy | j                  t        j                        t        j
                  k(  rt        | t        j                  |       | j                  t        j                        }t        |t              r|D ]  }t        |||dz           y t        |t              rt        |||dz          y y )N2      )r    r   r   r   SGoTor$   DNextr
   _collect_from_action)actionr"   depthnxtsubs        r   r,   r,   (   s    rzFJ7zz$&&TYY&-
**TYY
C#u 	7C dEAI6	7	C	$S$	2 
%r   c                   g }| j                  t        j                        }t        |t              s|S |D ]  }t        |t
              st        |t        j                  |       t        |j                  t        j                        |       |j                  t        j                        }t        |t
              s|j                         D ]  }t        ||   |         |S N)r   r   Annotsr    r
   r   r$   Destr,   AAAkeys)page_objr"   annotsannotaaks         r   _collect_named_dest_refsr=   5   s    D\\$++&Ffe$ 2%,tyy$/UYYtvv.5YYtwwb*%WWY 2$RUD122 Kr   c                      e Zd ZU dZded<   ded<   dZded<    ee      Zd	ed
<    ee	      Z
ded<   dZded<    ee      Zd	ed<    ee	      Zded<   y)PageCopyResultz;Facts about a :meth:`pikepdf.Pdf.add_pages_from` operation.intpages_addedLiteral['preserve', 'strip']formsr   fields_added)default_factoryzdict[str, str]renamed_fieldsz	list[str]partial_fieldsnamed_dests_addedrenamed_destsdropped_destsN)r   r   r   r   r   rD   r   dictrF   listrG   rH   rI   rJ   r   r   r   r?   r?   F   sb    E''L#%*4%@NN@ %d ;NI;s$)$$?M>?$T:M9:r   r?   c                   ddl m} |j                  dk(  r| j                  j	                  t
        j                        }t        |t              sy |j	                  t
        j                        }|y  ||      }|j                  |v r||j                     S d S | j                  j	                  t
        j                        }t        |t              sy |j	                  t        |j                              S )Nr   NameTreer   )pikepdfrO   r   Rootr   r   Namesr    r   Destsr   )srcrefrO   namesdestsnts         r   _lookup_source_entryrY   T   s     
xx8 TZZ(%,		$**%=e_"xx2~r#((|747HHLL$EeZ(99T#((^$$r   c                @   t        | |      }|yt        |t              r|j                  t        j
                        n|}t        |t              rt        |      dk(  ry|d   }|j                  syt        dt        |            D cg c]  }||   	 }}||fS c c}w )zIReturn (page_ref, view_params) for a named dest, or None if unresolvable.Nr   r'   )
rY   r    r   r   r   r*   r
   lenis_indirectrange)rT   rU   entryarrpage_refiparamss          r   _resolve_source_destrc   h   s     c*E})%<%))DFF
%Cc5!SX]1vH#As3x01c!f1F1V 2s   	Bc                \   ddl m} | j                  j                  t        j
                        }t        |t              s*| j                  t                     }|| j                  _        t        j                  |vr |j                  |       j                  |_	         ||j                        S )Nr   rN   )rP   rO   rQ   r   r   rR   r    r   make_indirectrS   newobj)destrO   rV   s      r   _ensure_string_destsri   w   ss     IIMM$**%EeZ("":<0		zzll4(,,EKK  r   c                    | j                   j                  t        j                        }t	        |t
              s*| j                  t                     }|| j                   _        |S r2   )rQ   r   r   rS   r    r   re   )rh   dds     r   _ensure_name_destsrl      sD    	tzz	"Bb*%
-		Ir   c                P    || vr|S d}| d| | v r|dz  }| d| | v r| d| S Nr'   .r   )rX   r   ra   s      r   _unique_string_namerp      sR    2~	AF!A3-2
	Q F!A3-2
V1QC=r   c                    t        |      | vr|S d}t        | d|       | v r|dz  }t        | d|       | v r| d| S rn   )r   )rk   r   ra   s      r   _unique_name_namerr      sa    Dz	A
$q}

#	Q $q}

#V1QC=r   c                    | j                  t        |            }|dk(  rt        |       }t        ||      }|||<   |S t	        |       }t        ||      }||t        |      <   |S )N)r*   r   )re   r   ri   rp   rl   rr   r   )rh   r   r   new_arrr^   rX   finalrk   s           r   _insert_destrv      sk    zG45Ex!$'#B-5		D	!Bb$'EBtE{OLr   c                |    | j                   dk(  rt        |      n
t        |      | j                  | j                  <   y )Nr   )r   r   r   r   r   )rU   ru   s     r   _rewrite_refrx      s)    *-((h*>DKCIIcggr   c                   t        t        |            D ci c]6  }||   j                  j                  | j                  ||z      j                  8 }}g }t        t        |            D ]6  }|j                  t        | j                  ||z      j                               8 d}i }	g }
i }|D ]  }|j                  |j                  f}||v r#||   }|||j                  k7  rt        ||       Ct        ||      }|r|d   nd }||j                  |j                        nd }|/d ||<   |j                  |
vr|
j                  |j                         t        |g|d         }t        | |j                  |j                  |      }|||<   |dz  }||j                  k7  s||	|j                  <   t        ||        ||	|
fS c c}w )Nr   r'   )r]   r[   rg   objgenpagesextendr=   r   r   rx   rc   r   r!   r
   rv   )rh   rT   	src_pagesstartra   page_mapr"   offsetaddedrenameddroppeddecidedrU   dkeyru   resolvedr`   	dest_pagert   s                      r   _migrate_named_destinationsr      s   
 s9~& 	!EAI!6!:!::H  DI' N,TZZ-G-K-KLMN E GG13G %#((#7?DME Uchh%6S%('S1"*8A;5=5IHLL1t	 GDMxxw&sxx(1Xa[12T388SXXw?
CHH %GCHHe$+%. '7""Is   ;Gc                    t        | j                        }|t        t        |            S t	        |t
              r t        t        |j                  |             S |D cg c]  }|dk\  r|n||z    c}S c c}w )Nr   )r[   r{   rL   r]   r    sliceindices)rT   r{   nra   s       r   _resolve_indicesr      sj     	CIIA}E!H~%E5==+,--,12qaAQU"222s    A6Npreserve)rC   c          
     d   t        ||      }|j                  }| j                  }t        | j                        }|D cg c]  }|j                  |    }	}|	D ]  }
| j                  j	                  |
        |dk(  rt        t        |	            D ]  }| j                  ||z      j                  }t        j                  |v s2t        |j                  D cg c]5  }|j                  t        j                        t        j                  k7  s4|7 c}      }t        |      dk(  r|`||_         i }|dk(  r|j                  rt        |j                        }t        |	      D ]  \  }}
| j                  ||z      }|j!                  |
      D cg c]  }|j"                   }}|j%                  ||
|       |j!                  |      D cg c]  }|j"                   }}t'        ||      D ]  \  }}|	|||k7  s|||<     t        |j                        |z
  }nd}g }|dk(  rG|j                  r:t        |      t        |j                        k  rt)        |      }i }t        |j                        D ]n  \  }}|j+                  |      D ]U  }|j-                  |      j.                  }|j"                  }|-|j1                  |t)                     j3                  |       W p t)               }|	D ]@  }
|j!                  |
      D ]*  }|j"                  |j3                  |j"                         , B |D ]1  }|j                  |t)                     |z
  s!|j	                  |       3 t5        | ||	|      \  } }!}"t7        t        |	      ||||| |!|"      S c c}w c c}w c c}w c c}w )Nstripr   r   )rA   rC   rD   rF   rG   rH   rI   rJ   )r   acroformr[   r{   r!   r]   rg   r   r3   r
   r   SubtypeWidgetexistsfields	enumerateget_form_fields_for_pagefully_qualified_namefix_copied_annotationszipsetget_widget_annotations_for_pageget_field_for_annotationtop_level_field
setdefaultaddr   r?   )#rh   rT   r{   rC   r   src_acro	dest_acror~   ra   r}   spr   r8   akeptr   beforenew_pagef	src_names
dest_namesoldrf   rD   partialselected	fqn_pagespr:   fldr   selected_fqnsnamed_addedrI   rJ   s#                                      r   
copy_pagesr      s    sE*G||HI

OE'./!1/I/ 

" C	N+ 		+Fzz%&.155H{{h& (V11553F$++3UQV t9> &*HO		+ !G
xY%%&#I. 	'JFBzz%&.1H080Q0QRT0U+,&&I  ,,Xr8D #;;HE &&J   	:6 'S?s3#:#&GCL'	' 9++,v5G
x3w<#cii.3Pw< *,	cii( 	=DAq!AA!D =77>NN//#((su599!<	=	= #&% 	@B88< @++7!%%c&>&>?@	@ " 	%D}}T35)H4t$	% 1Lc9e1-K 	N!%##	 	C 0 Ws   N5N#
N#
N(
N-)r   r   r   r   r"   list[_DestRef]returnNone)r   )r-   objectr"   r   r.   r@   r   r   )r8   r   r   r   )rT   r	   rU   r   r   zobject | None)rT   r	   rU   r   )rh   r	   )rh   r	   r   r   )r   r   r   r   )rk   r   r   r   r   r   )
rh   r	   r   r   r   r   rt   r
   r   r   )rU   r   ru   r   r   r   )
rh   r	   rT   r	   r}   rL   r~   r@   r   z%tuple[int, dict[str, str], list[str]])rT   r	   r{   $Iterable[int] | range | slice | Noner   z	list[int]r2   )
rh   r	   rT   r	   r{   r   rC   rB   r   r?   )"r   
__future__r   collections.abcr   dataclassesr   r   typingr   r   rP   r	   pikepdf.objectsr
   r   r   r   r   r$   r,   r=   r?   rY   rc   ri   rl   rp   rr   rv   rx   r   r   r   r   r   r   <module>r      s    : " $ ( ) ; ; 
 
 
<
3" 
; 
; 
;%(	!
P'#
'#'#$('#14'#*'#T3	3933 37V
 +5V
V	V 0V
 (V Vr   