88import sys
99import json
1010import time
11- from typing import Union , Optional , Tuple , List
11+ from typing import Union , Optional , Tuple , List , Dict
1212from pathlib import Path
1313from pymupdf .mupdf import FzErrorFormat , FzErrorLibrary
1414from pymupdf import Document , Page , Pixmap , Rect , Point , Font
@@ -38,7 +38,7 @@ class Doc(Document):
3838 """
3939
4040 pass_word : Optional [str ] = None
41- rotatedPages = {}
41+ rotatedPages : Dict [ int , int ] = {}
4242
4343
4444def copy (doc : Doc ) -> Doc :
@@ -76,7 +76,10 @@ def open_pdf(file_name: str, parent: QWidget) -> Tuple[Optional[Doc], bool]:
7676 except RuntimeError :
7777 return _open_warning (parent )
7878 if not doc .is_pdf :
79- if file_name .endswith (SUPPORT_IMG_FORMAT [:- 1 ]):
79+ _support_img_format = SUPPORT_IMG_FORMAT [:- 1 ] + tuple (
80+ i .upper () for i in SUPPORT_IMG_FORMAT [:- 1 ]
81+ )
82+ if file_name .endswith (_support_img_format ):
8083 try : # handle wrong image formats
8184 pdf_bites = Pixmap (file_name ).tobytes ()
8285 doc = Doc ("png" , pdf_bites )
@@ -106,7 +109,7 @@ def open_pdf(file_name: str, parent: QWidget) -> Tuple[Optional[Doc], bool]:
106109 return doc , True
107110
108111
109- def render_pdf_page (page_data : Doc . load_page ) -> QtGui .QPixmap :
112+ def render_pdf_page (page_data : Page ) -> QtGui .QPixmap :
110113 """
111114 render PDF page
112115
@@ -131,7 +134,7 @@ def render_pdf_page(page_data: Doc.load_page) -> QtGui.QPixmap:
131134 return pixmap
132135
133136
134- def pdf_split (doc : Doc ) -> List :
137+ def pdf_split (doc : Doc ) -> List [ int ] :
135138 """
136139 split the selected PDF file into pages;
137140
@@ -190,7 +193,7 @@ def add_watermark(
190193 return doc
191194
192195
193- def setting_warning (set_file_name : str , parent : QWidget ) -> dict :
196+ def setting_warning (set_file_name : str , parent : QWidget ) -> Dict [ str , Union [ str , bool ]] :
194197 """
195198 import settings from the JSON file
196199
@@ -327,7 +330,7 @@ def set_icon(
327330 TOOLS .store_shrink (100 ) # delete MuPDF cache
328331
329332
330- def add (main : QWidget , _format : str ) -> Tuple [str ]:
333+ def add (main : QWidget , _format : str ) -> Tuple [str , str ]:
331334 """
332335 add a file
333336
@@ -336,14 +339,15 @@ def add(main: QWidget, _format: str) -> Tuple[str]:
336339 :return: [f_name, state]
337340 """
338341 f_name , state = QFileDialog .getOpenFileName (main , "Open files" , main .s_dir , _format )
339- if state and not f_name .endswith (SUPPORT_FORMAT ):
342+ _support_format = SUPPORT_FORMAT + tuple (i .upper () for i in SUPPORT_FORMAT )
343+ if state and not f_name .endswith (_support_format ):
340344 return "" , ""
341345 if state and main .dir_store_state :
342346 main .s_dir = os .path .dirname (f_name )
343347 return f_name , state
344348
345349
346- def save (main : QWidget , _format : str ) -> Tuple [str ]:
350+ def save (main : QWidget , _format : str ) -> Tuple [str , str ]:
347351 """
348352 save a file
349353
@@ -645,7 +649,7 @@ def choose(widget: QtWidgets.QLineEdit, c_dir: str) -> None:
645649 widget .setText (root )
646650
647651
648- def remove_invalid_xref_key (metadata : dict ) -> dict :
652+ def remove_invalid_xref_key (metadata : Dict [ str , str ] ) -> Dict [ str , str ] :
649653 """
650654 remove invalid xref key(s)
651655 """
@@ -697,8 +701,8 @@ def set_metadata0(doc: Doc, author: Optional[str]) -> None:
697701
698702
699703def set_metadata1 (
700- metadata : dict , title : str , author : str , subject : str , keywords : str
701- ) -> dict :
704+ metadata : Dict [ str , str ] , title : str , author : str , subject : str , keywords : str
705+ ) -> Dict [ str , str ] :
702706 """
703707 set metadata to pdf document
704708
@@ -731,7 +735,7 @@ def set_metadata1(
731735 return metadata
732736
733737
734- def toc2plaintext (toc : List ) -> str :
738+ def toc2plaintext (toc : List [ List [ Union [ str , int ]]] ) -> str :
735739 """
736740 :param toc: table of content <- DOCUMENT.get_toc()
737741 :return: plaintext
@@ -744,7 +748,7 @@ def toc2plaintext(toc: List) -> str:
744748 return plaintext
745749
746750
747- def plaintext2toc (plaintext : str ) -> List [List ]:
751+ def plaintext2toc (plaintext : str ) -> List [List [ Union [ str , int ]] ]:
748752 """
749753 :param plaintext: plaintext
750754 :return: table of content -> DOCUMENT.get_toc()
@@ -759,7 +763,7 @@ def plaintext2toc(plaintext: str) -> List[List]:
759763 return toc
760764
761765
762- def find_font (font_dirs : List ) -> Tuple [dict ]:
766+ def find_font (font_dirs : List [ str ] ) -> Tuple [Dict [ str , str ], Dict [ str , str ] ]:
763767 """
764768 find all TrueType font files (.ttf): all their font name and file addresses
765769 then write their directories to a json file
@@ -785,7 +789,7 @@ def find_font(font_dirs: List) -> Tuple[dict]:
785789 return name_dict , dir_dict
786790
787791
788- def store_font_path (name_dict : dict , cache_file_name : str ) -> None :
792+ def store_font_path (name_dict : Dict [ str , str ] , cache_file_name : str ) -> None :
789793 """
790794 store the font file dict
791795
@@ -796,7 +800,7 @@ def store_font_path(name_dict: dict, cache_file_name: str) -> None:
796800 json .dump (name_dict , f , sort_keys = True , indent = 4 , separators = ("," , ": " ))
797801
798802
799- def read_from_font_cache (cache_file_name : str ) -> Tuple [dict ]:
803+ def read_from_font_cache (cache_file_name : str ) -> Tuple [Dict [ str , str ], Dict [ str , str ] ]:
800804 """
801805 read font directories from json file
802806
0 commit comments