[文档]classLink(AnnotationDictionary):def__init__(self,*,rect:Union[RectangleObject,Tuple[float,float,float,float]],border:Optional[ArrayObject]=None,url:Optional[str]=None,target_page_index:Optional[int]=None,fit:Fit=DEFAULT_FIT,**kwargs:Any,):super().__init__(**kwargs)ifTYPE_CHECKING:from..typesimportBorderArrayTypeis_external=urlisnotNoneis_internal=target_page_indexisnotNoneifnotis_externalandnotis_internal:raiseValueError("Either 'url' or 'target_page_index' have to be provided. Both were None.")ifis_externalandis_internal:raiseValueError("Either 'url' or 'target_page_index' have to be provided. "f"{url=}, {target_page_index=}")border_arr:BorderArrayTypeifborderisnotNone:border_arr=[NumberObject(n)forninborder[:3]]iflen(border)==4:dash_pattern=ArrayObject([NumberObject(n)forninborder[3]])border_arr.append(dash_pattern)else:border_arr=[NumberObject(0)]*3self.update({NameObject("/Type"):NameObject("/Annot"),NameObject("/Subtype"):NameObject("/Link"),NameObject("/Rect"):RectangleObject(rect),NameObject("/Border"):ArrayObject(border_arr),})ifis_external:self[NameObject("/A")]=DictionaryObject({NameObject("/S"):NameObject("/URI"),NameObject("/Type"):NameObject("/Action"),NameObject("/URI"):TextStringObject(url),})ifis_internal:# This needs to be updated later!dest_deferred=DictionaryObject({"target_page_index":NumberObject(target_page_index),"fit":NameObject(fit.fit_type),"fit_args":fit.fit_args,})self[NameObject("/Dest")]=dest_deferred
[文档]classPopup(AnnotationDictionary):def__init__(self,*,rect:Union[RectangleObject,Tuple[float,float,float,float]],parent:Optional[DictionaryObject]=None,open:bool=False,**kwargs:Any,):super().__init__(**kwargs)self.update({NameObject("/Subtype"):NameObject("/Popup"),NameObject("/Rect"):RectangleObject(rect),NameObject("/Open"):BooleanObject(open),})ifparent:# This needs to be an indirect objecttry:self[NameObject("/Parent")]=parent.indirect_referenceexceptAttributeError:from.._utilsimportlogger_warninglogger_warning("Unregistered Parent object : No Parent field set",__name__,)