From 18948c7f6b28c1a96502934740c98cec11c39a5d Mon Sep 17 00:00:00 2001 From: vistaminc Date: Fri, 2 May 2025 11:56:06 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=96=B0=E5=A2=9EPDF=E6=8B=86=E5=88=86?= =?UTF-8?q?=E3=80=81=E5=8A=A0=E5=AF=86=E5=92=8C=E8=A7=A3=E5=AF=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E6=9B=B4=E6=94=B9=E6=96=87=E4=BB=B6=E5=91=BD?= =?UTF-8?q?=E5=90=8D=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __pycache__/resource_rc.cpython-313.pyc | Bin 0 -> 162374 bytes app/__pycache__/__init__.cpython-313.pyc | Bin 0 -> 370 bytes app/__pycache__/config.cpython-313.pyc | Bin 0 -> 818 bytes app/log/__pycache__/__init__.cpython-313.pyc | Bin 0 -> 244 bytes .../exception_handling.cpython-313.pyc | Bin 0 -> 1990 bytes app/log/__pycache__/logger.cpython-313.pyc | Bin 0 -> 2339 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 559 bytes .../__pycache__/doc_cov_model.cpython-313.pyc | Bin 0 -> 2459 bytes .../__pycache__/file_model.cpython-313.pyc | Bin 0 -> 8148 bytes app/ui/__pycache__/Icon.cpython-313.pyc | Bin 0 -> 1672 bytes app/ui/__pycache__/__init__.cpython-313.pyc | Bin 0 -> 160 bytes .../__pycache__/global_signal.cpython-313.pyc | Bin 0 -> 619 bytes app/ui/__pycache__/mainview.cpython-313.pyc | Bin 0 -> 8304 bytes app/ui/__pycache__/mainwindow.cpython-313.pyc | Bin 0 -> 4177 bytes .../__pycache__/QCursorGif.cpython-313.pyc | Bin 0 -> 3849 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 393 bytes .../__pycache__/flowlayout.cpython-313.pyc | Bin 0 -> 7454 bytes .../__pycache__/router.cpython-313.pyc | Bin 0 -> 3347 bytes .../__pycache__/scroll_bar.cpython-313.pyc | Bin 0 -> 2287 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 26818 bytes .../__pycache__/file_item_ui.cpython-313.pyc | Bin 0 -> 17837 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 392 bytes .../__pycache__/sidebar.cpython-313.pyc | Bin 0 -> 12200 bytes .../__pycache__/sidebar_ui.cpython-313.pyc | Bin 0 -> 9580 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 386 bytes .../__pycache__/doc_convert.cpython-313.pyc | Bin 0 -> 9458 bytes .../doc_convert_ui.cpython-313.pyc | Bin 0 -> 20915 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 395 bytes .../__pycache__/pdf2image.cpython-313.pyc | Bin 0 -> 20437 bytes .../__pycache__/pdf2image_ui.cpython-313.pyc | Bin 0 -> 22643 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 397 bytes .../__pycache__/pdf2word.cpython-313.pyc | Bin 0 -> 19633 bytes .../__pycache__/pdf2word_ui.cpython-313.pyc | Bin 0 -> 22624 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 394 bytes .../__pycache__/web2pdf.cpython-313.pyc | Bin 0 -> 21559 bytes .../__pycache__/web2pdf_ui.cpython-313.pyc | Bin 0 -> 19145 bytes .../__pycache__/image_tool.cpython-313.pyc | Bin 0 -> 5916 bytes .../__pycache__/image_tool_ui.cpython-313.pyc | Bin 0 -> 10645 bytes .../__pycache__/modify_date.cpython-313.pyc | Bin 0 -> 30472 bytes .../modify_date_ui.cpython-313.pyc | Bin 0 -> 21968 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 392 bytes .../__pycache__/enhance.cpython-313.pyc | Bin 0 -> 7119 bytes .../__pycache__/enhance_ui.cpython-313.pyc | Bin 0 -> 16538 bytes .../toc/__pycache__/__init__.cpython-313.pyc | Bin 0 -> 396 bytes .../toc/__pycache__/toc.cpython-313.pyc | Bin 0 -> 17966 bytes .../toc/__pycache__/toc_ui.cpython-313.pyc | Bin 0 -> 19568 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 170 bytes .../__pycache__/pdf_tool.cpython-313.pyc | Bin 0 -> 10260 bytes .../__pycache__/pdf_tool_ui.cpython-313.pyc | Bin 0 -> 20066 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 440 bytes .../encrypt_dialog.cpython-313.pyc | Bin 0 -> 4102 bytes .../encrypt_dialog_ui.cpython-313.pyc | Bin 0 -> 14893 bytes .../merge/__pycache__/merge.cpython-313.pyc | Bin 0 -> 22261 bytes .../__pycache__/merge_ui.cpython-313.pyc | Bin 0 -> 25346 bytes app/ui/pdf_tools/merge/merge.py | 9 + app/ui/pdf_tools/pdf_tool.py | 51 +- app/ui/pdf_tools/security/__init__.py | 4 + .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 235 bytes .../__pycache__/decrypt.cpython-313.pyc | Bin 0 -> 51661 bytes .../__pycache__/decrypt_ui.cpython-313.pyc | Bin 0 -> 11782 bytes .../__pycache__/encrypt.cpython-313.pyc | Bin 0 -> 27298 bytes .../__pycache__/encrypt_ui.cpython-313.pyc | Bin 0 -> 18257 bytes app/ui/pdf_tools/security/decrypt.py | 1028 +++++++++++++++++ app/ui/pdf_tools/security/decrypt_ui.py | 160 +++ app/ui/pdf_tools/security/encrypt.py | 455 ++++++++ app/ui/pdf_tools/security/encrypt_ui.py | 244 ++++ app/ui/pdf_tools/split/__init__.py | 4 + .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 217 bytes .../split/__pycache__/split.cpython-313.pyc | Bin 0 -> 22345 bytes .../__pycache__/split_ui.cpython-313.pyc | Bin 0 -> 16061 bytes app/ui/pdf_tools/split/split.py | 358 ++++++ app/ui/pdf_tools/split/split_ui.py | 215 ++++ .../__pycache__/about_dialog.cpython-313.pyc | Bin 0 -> 12280 bytes .../__pycache__/seetingUi.cpython-313.pyc | Bin 0 -> 3709 bytes .../__pycache__/setting.cpython-313.pyc | Bin 0 -> 5166 bytes .../__pycache__/video_tool.cpython-313.pyc | Bin 0 -> 4529 bytes .../__pycache__/video_tool_ui.cpython-313.pyc | Bin 0 -> 10993 bytes app/util/__pycache__/__init__.cpython-313.pyc | Bin 0 -> 413 bytes app/util/__pycache__/common.cpython-313.pyc | Bin 0 -> 8803 bytes pdf2docx/__pycache__/__init__.cpython-313.pyc | Bin 0 -> 247 bytes .../__pycache__/converter.cpython-313.pyc | Bin 0 -> 21921 bytes .../common/__pycache__/Block.cpython-313.pyc | Bin 0 -> 7244 bytes .../__pycache__/Collection.cpython-313.pyc | Bin 0 -> 18794 bytes .../__pycache__/Element.cpython-313.pyc | Bin 0 -> 12815 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 169 bytes .../__pycache__/algorithm.cpython-313.pyc | Bin 0 -> 16564 bytes .../__pycache__/constants.cpython-313.pyc | Bin 0 -> 1935 bytes .../common/__pycache__/docx.cpython-313.pyc | Bin 0 -> 20851 bytes .../common/__pycache__/share.cpython-313.pyc | Bin 0 -> 11221 bytes .../font/__pycache__/Fonts.cpython-313.pyc | Bin 0 -> 9662 bytes .../font/__pycache__/__init__.cpython-313.pyc | Bin 0 -> 167 bytes .../image/__pycache__/Image.cpython-313.pyc | Bin 0 -> 4092 bytes .../__pycache__/ImageBlock.cpython-313.pyc | Bin 0 -> 3075 bytes .../__pycache__/ImageSpan.cpython-313.pyc | Bin 0 -> 1137 bytes .../ImagesExtractor.cpython-313.pyc | Bin 0 -> 13230 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 168 bytes .../layout/__pycache__/Blocks.cpython-313.pyc | Bin 0 -> 28571 bytes .../layout/__pycache__/Column.cpython-313.pyc | Bin 0 -> 2178 bytes .../layout/__pycache__/Layout.cpython-313.pyc | Bin 0 -> 8182 bytes .../__pycache__/Section.cpython-313.pyc | Bin 0 -> 3872 bytes .../__pycache__/Sections.cpython-313.pyc | Bin 0 -> 3823 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 169 bytes .../page/__pycache__/BasePage.cpython-313.pyc | Bin 0 -> 1626 bytes .../page/__pycache__/Page.cpython-313.pyc | Bin 0 -> 8360 bytes .../page/__pycache__/Pages.cpython-313.pyc | Bin 0 -> 3011 bytes .../page/__pycache__/RawPage.cpython-313.pyc | Bin 0 -> 11191 bytes .../RawPageFactory.cpython-313.pyc | Bin 0 -> 1202 bytes .../__pycache__/RawPageFitz.cpython-313.pyc | Bin 0 -> 6699 bytes .../page/__pycache__/__init__.cpython-313.pyc | Bin 0 -> 167 bytes .../shape/__pycache__/Path.cpython-313.pyc | Bin 0 -> 17433 bytes .../shape/__pycache__/Paths.cpython-313.pyc | Bin 0 -> 6348 bytes .../shape/__pycache__/Shape.cpython-313.pyc | Bin 0 -> 18098 bytes .../shape/__pycache__/Shapes.cpython-313.pyc | Bin 0 -> 11913 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 168 bytes .../table/__pycache__/Cell.cpython-313.pyc | Bin 0 -> 5871 bytes .../table/__pycache__/Cells.cpython-313.pyc | Bin 0 -> 1378 bytes .../table/__pycache__/Row.cpython-313.pyc | Bin 0 -> 3391 bytes .../table/__pycache__/Rows.cpython-313.pyc | Bin 0 -> 985 bytes .../__pycache__/TableBlock.cpython-313.pyc | Bin 0 -> 7446 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 168 bytes .../text/__pycache__/Char.cpython-313.pyc | Bin 0 -> 2703 bytes .../text/__pycache__/Line.cpython-313.pyc | Bin 0 -> 7404 bytes .../text/__pycache__/Lines.cpython-313.pyc | Bin 0 -> 12467 bytes .../text/__pycache__/Spans.cpython-313.pyc | Bin 0 -> 2960 bytes .../__pycache__/TextBlock.cpython-313.pyc | Bin 0 -> 20418 bytes .../text/__pycache__/TextSpan.cpython-313.pyc | Bin 0 -> 18837 bytes .../text/__pycache__/__init__.cpython-313.pyc | Bin 0 -> 167 bytes readme.md | 22 +- requirements.txt | 4 +- 129 files changed, 2548 insertions(+), 6 deletions(-) create mode 100644 __pycache__/resource_rc.cpython-313.pyc create mode 100644 app/__pycache__/__init__.cpython-313.pyc create mode 100644 app/__pycache__/config.cpython-313.pyc create mode 100644 app/log/__pycache__/__init__.cpython-313.pyc create mode 100644 app/log/__pycache__/exception_handling.cpython-313.pyc create mode 100644 app/log/__pycache__/logger.cpython-313.pyc create mode 100644 app/model/__pycache__/__init__.cpython-313.pyc create mode 100644 app/model/__pycache__/doc_cov_model.cpython-313.pyc create mode 100644 app/model/__pycache__/file_model.cpython-313.pyc create mode 100644 app/ui/__pycache__/Icon.cpython-313.pyc create mode 100644 app/ui/__pycache__/__init__.cpython-313.pyc create mode 100644 app/ui/__pycache__/global_signal.cpython-313.pyc create mode 100644 app/ui/__pycache__/mainview.cpython-313.pyc create mode 100644 app/ui/__pycache__/mainwindow.cpython-313.pyc create mode 100644 app/ui/components/__pycache__/QCursorGif.cpython-313.pyc create mode 100644 app/ui/components/__pycache__/__init__.cpython-313.pyc create mode 100644 app/ui/components/__pycache__/flowlayout.cpython-313.pyc create mode 100644 app/ui/components/__pycache__/router.cpython-313.pyc create mode 100644 app/ui/components/__pycache__/scroll_bar.cpython-313.pyc create mode 100644 app/ui/components/file_list/__pycache__/__init__.cpython-313.pyc create mode 100644 app/ui/components/file_list/__pycache__/file_item_ui.cpython-313.pyc create mode 100644 app/ui/components/sidebar/__pycache__/__init__.cpython-313.pyc create mode 100644 app/ui/components/sidebar/__pycache__/sidebar.cpython-313.pyc create mode 100644 app/ui/components/sidebar/__pycache__/sidebar_ui.cpython-313.pyc create mode 100644 app/ui/doc_convert/__pycache__/__init__.cpython-313.pyc create mode 100644 app/ui/doc_convert/__pycache__/doc_convert.cpython-313.pyc create mode 100644 app/ui/doc_convert/__pycache__/doc_convert_ui.cpython-313.pyc create mode 100644 app/ui/doc_convert/pdf2image/__pycache__/__init__.cpython-313.pyc create mode 100644 app/ui/doc_convert/pdf2image/__pycache__/pdf2image.cpython-313.pyc create mode 100644 app/ui/doc_convert/pdf2image/__pycache__/pdf2image_ui.cpython-313.pyc create mode 100644 app/ui/doc_convert/pdf2wordui/__pycache__/__init__.cpython-313.pyc create mode 100644 app/ui/doc_convert/pdf2wordui/__pycache__/pdf2word.cpython-313.pyc create mode 100644 app/ui/doc_convert/pdf2wordui/__pycache__/pdf2word_ui.cpython-313.pyc create mode 100644 app/ui/doc_convert/web2pdf/__pycache__/__init__.cpython-313.pyc create mode 100644 app/ui/doc_convert/web2pdf/__pycache__/web2pdf.cpython-313.pyc create mode 100644 app/ui/doc_convert/web2pdf/__pycache__/web2pdf_ui.cpython-313.pyc create mode 100644 app/ui/image_tools/__pycache__/image_tool.cpython-313.pyc create mode 100644 app/ui/image_tools/__pycache__/image_tool_ui.cpython-313.pyc create mode 100644 app/ui/image_tools/modify_date/__pycache__/modify_date.cpython-313.pyc create mode 100644 app/ui/image_tools/modify_date/__pycache__/modify_date_ui.cpython-313.pyc create mode 100644 app/ui/memotrace_enhance/__pycache__/__init__.cpython-313.pyc create mode 100644 app/ui/memotrace_enhance/__pycache__/enhance.cpython-313.pyc create mode 100644 app/ui/memotrace_enhance/__pycache__/enhance_ui.cpython-313.pyc create mode 100644 app/ui/memotrace_enhance/toc/__pycache__/__init__.cpython-313.pyc create mode 100644 app/ui/memotrace_enhance/toc/__pycache__/toc.cpython-313.pyc create mode 100644 app/ui/memotrace_enhance/toc/__pycache__/toc_ui.cpython-313.pyc create mode 100644 app/ui/pdf_tools/__pycache__/__init__.cpython-313.pyc create mode 100644 app/ui/pdf_tools/__pycache__/pdf_tool.cpython-313.pyc create mode 100644 app/ui/pdf_tools/__pycache__/pdf_tool_ui.cpython-313.pyc create mode 100644 app/ui/pdf_tools/merge/__pycache__/__init__.cpython-313.pyc create mode 100644 app/ui/pdf_tools/merge/__pycache__/encrypt_dialog.cpython-313.pyc create mode 100644 app/ui/pdf_tools/merge/__pycache__/encrypt_dialog_ui.cpython-313.pyc create mode 100644 app/ui/pdf_tools/merge/__pycache__/merge.cpython-313.pyc create mode 100644 app/ui/pdf_tools/merge/__pycache__/merge_ui.cpython-313.pyc create mode 100644 app/ui/pdf_tools/security/__init__.py create mode 100644 app/ui/pdf_tools/security/__pycache__/__init__.cpython-313.pyc create mode 100644 app/ui/pdf_tools/security/__pycache__/decrypt.cpython-313.pyc create mode 100644 app/ui/pdf_tools/security/__pycache__/decrypt_ui.cpython-313.pyc create mode 100644 app/ui/pdf_tools/security/__pycache__/encrypt.cpython-313.pyc create mode 100644 app/ui/pdf_tools/security/__pycache__/encrypt_ui.cpython-313.pyc create mode 100644 app/ui/pdf_tools/security/decrypt.py create mode 100644 app/ui/pdf_tools/security/decrypt_ui.py create mode 100644 app/ui/pdf_tools/security/encrypt.py create mode 100644 app/ui/pdf_tools/security/encrypt_ui.py create mode 100644 app/ui/pdf_tools/split/__init__.py create mode 100644 app/ui/pdf_tools/split/__pycache__/__init__.cpython-313.pyc create mode 100644 app/ui/pdf_tools/split/__pycache__/split.cpython-313.pyc create mode 100644 app/ui/pdf_tools/split/__pycache__/split_ui.cpython-313.pyc create mode 100644 app/ui/pdf_tools/split/split.py create mode 100644 app/ui/pdf_tools/split/split_ui.py create mode 100644 app/ui/setting/__pycache__/about_dialog.cpython-313.pyc create mode 100644 app/ui/setting/__pycache__/seetingUi.cpython-313.pyc create mode 100644 app/ui/setting/__pycache__/setting.cpython-313.pyc create mode 100644 app/ui/video_tools/__pycache__/video_tool.cpython-313.pyc create mode 100644 app/ui/video_tools/__pycache__/video_tool_ui.cpython-313.pyc create mode 100644 app/util/__pycache__/__init__.cpython-313.pyc create mode 100644 app/util/__pycache__/common.cpython-313.pyc create mode 100644 pdf2docx/__pycache__/__init__.cpython-313.pyc create mode 100644 pdf2docx/__pycache__/converter.cpython-313.pyc create mode 100644 pdf2docx/common/__pycache__/Block.cpython-313.pyc create mode 100644 pdf2docx/common/__pycache__/Collection.cpython-313.pyc create mode 100644 pdf2docx/common/__pycache__/Element.cpython-313.pyc create mode 100644 pdf2docx/common/__pycache__/__init__.cpython-313.pyc create mode 100644 pdf2docx/common/__pycache__/algorithm.cpython-313.pyc create mode 100644 pdf2docx/common/__pycache__/constants.cpython-313.pyc create mode 100644 pdf2docx/common/__pycache__/docx.cpython-313.pyc create mode 100644 pdf2docx/common/__pycache__/share.cpython-313.pyc create mode 100644 pdf2docx/font/__pycache__/Fonts.cpython-313.pyc create mode 100644 pdf2docx/font/__pycache__/__init__.cpython-313.pyc create mode 100644 pdf2docx/image/__pycache__/Image.cpython-313.pyc create mode 100644 pdf2docx/image/__pycache__/ImageBlock.cpython-313.pyc create mode 100644 pdf2docx/image/__pycache__/ImageSpan.cpython-313.pyc create mode 100644 pdf2docx/image/__pycache__/ImagesExtractor.cpython-313.pyc create mode 100644 pdf2docx/image/__pycache__/__init__.cpython-313.pyc create mode 100644 pdf2docx/layout/__pycache__/Blocks.cpython-313.pyc create mode 100644 pdf2docx/layout/__pycache__/Column.cpython-313.pyc create mode 100644 pdf2docx/layout/__pycache__/Layout.cpython-313.pyc create mode 100644 pdf2docx/layout/__pycache__/Section.cpython-313.pyc create mode 100644 pdf2docx/layout/__pycache__/Sections.cpython-313.pyc create mode 100644 pdf2docx/layout/__pycache__/__init__.cpython-313.pyc create mode 100644 pdf2docx/page/__pycache__/BasePage.cpython-313.pyc create mode 100644 pdf2docx/page/__pycache__/Page.cpython-313.pyc create mode 100644 pdf2docx/page/__pycache__/Pages.cpython-313.pyc create mode 100644 pdf2docx/page/__pycache__/RawPage.cpython-313.pyc create mode 100644 pdf2docx/page/__pycache__/RawPageFactory.cpython-313.pyc create mode 100644 pdf2docx/page/__pycache__/RawPageFitz.cpython-313.pyc create mode 100644 pdf2docx/page/__pycache__/__init__.cpython-313.pyc create mode 100644 pdf2docx/shape/__pycache__/Path.cpython-313.pyc create mode 100644 pdf2docx/shape/__pycache__/Paths.cpython-313.pyc create mode 100644 pdf2docx/shape/__pycache__/Shape.cpython-313.pyc create mode 100644 pdf2docx/shape/__pycache__/Shapes.cpython-313.pyc create mode 100644 pdf2docx/shape/__pycache__/__init__.cpython-313.pyc create mode 100644 pdf2docx/table/__pycache__/Cell.cpython-313.pyc create mode 100644 pdf2docx/table/__pycache__/Cells.cpython-313.pyc create mode 100644 pdf2docx/table/__pycache__/Row.cpython-313.pyc create mode 100644 pdf2docx/table/__pycache__/Rows.cpython-313.pyc create mode 100644 pdf2docx/table/__pycache__/TableBlock.cpython-313.pyc create mode 100644 pdf2docx/table/__pycache__/__init__.cpython-313.pyc create mode 100644 pdf2docx/text/__pycache__/Char.cpython-313.pyc create mode 100644 pdf2docx/text/__pycache__/Line.cpython-313.pyc create mode 100644 pdf2docx/text/__pycache__/Lines.cpython-313.pyc create mode 100644 pdf2docx/text/__pycache__/Spans.cpython-313.pyc create mode 100644 pdf2docx/text/__pycache__/TextBlock.cpython-313.pyc create mode 100644 pdf2docx/text/__pycache__/TextSpan.cpython-313.pyc create mode 100644 pdf2docx/text/__pycache__/__init__.cpython-313.pyc diff --git a/__pycache__/resource_rc.cpython-313.pyc b/__pycache__/resource_rc.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..579063b40166c039d7831b04fcd1fee43f39e59f GIT binary patch literal 162374 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∈CMfFTg{<*u&SRTS! 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 literal 0 HcmV?d00001 diff --git a/app/__pycache__/config.cpython-313.pyc b/app/__pycache__/config.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1150462bb1911ca817097c9d247b2fe7e1a416cc GIT binary patch literal 818 zcmZ8fO-~b16n!)On088AVS-hwSXWJBXc1JPViOUK3DJNPOi0GXbUJNE%S@dQv0aq~ z2`mhdC^U+uCM1e6NJ0!j5fXoahK0?nOk`SiHnMW(oho3w$vf}7d(S=ZChzUK-6Vqe zddQvL#1Q&!9`>T?FWD^td5mZzBN~%2SU8Q#7TO|Pf!iWTw$oMyc@S-5a6o$<3C2?A zCOT;BrgzWwU}x+Ux`h-x0*gY|90-YU!w_l($pC&GCUct4QJtKq%)j}u{zSVCsh+qTtEUGCx8E;R-i=i^7NR?ESB>$N%E~Ka zV`+Qyg)#nSdwtHBS~Z?NHx?d3>(1Dt>dJ@8?3%GYweMieFB{JaQ0-v@X_-%64Ce7* zOgm}b5@BNpx}{?EcoR zD}p5I1Sg3q%c;6OC8%jFt`nntToF`WcXE48I*}1LUQ~G9mEaXl7P6|@YP}-~qHbg3 zlBR|*9TODuJ=*kWUz8bAz@Hh^R8~x~Vv6aLM#YT8CKTohtK@p62dx7+T1fEc88(|` zV1}fS3TJb=qh~})Xc;~xn?J+!Q)U5b77WA6WMhFSlMMh)SHWH;gTNY26`b{44adEB z!Bw+kZco|MJTY8DxX<^^cVaqSjF%3V95sZ6d}UwDv`~~w!O~GUpQg%G^IYdl=VJes zzw32>>0Yt7)Hr{2vHy#|Ym4gs+!O`X1#j7VWa2KcV_3~iIIUy0Uq4B7yj!usXiMHp Gu9n|6|Nnjf literal 0 HcmV?d00001 diff --git a/app/log/__pycache__/__init__.cpython-313.pyc b/app/log/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..38aa4414c47ee00bd6fb812801cfd6f4b6849675 GIT binary patch literal 244 zcmey&%ge<81lI+4Gi-tMV-N=hn4pZ$GC;;uhG2$ZMsEf$#v(>9h9U+9hG3>(W__k2 zrgRof)|ZSxC7MjPm~-;eZ?OT1^wgpv7NA%WGm!ApWJYjqvB$?J=H$f3uVnZPlw-K% z;9?aMTAW%`91~btl9-p4n3o>ol3$*elb@JU9OIf;TtbgvBkZNg+#6p89u@TObE4}2oT=%YL_jZr> z_ORuHoJgQiw2)8*LZoUde?Hh4qY_JykA6I8NSjsT2f4QQ38WamI&b&xz!E3fnR)x( z%)I%{yjk-5B?L5E>mRrxAoM3&lnK@jEp>tzLtzx=b|K&C2$bR)GoLzNLBQ#|iarcbNxzb{36DVUShFA!2&k;|U z2Nwc!4DJNxE-aF&q*tl3YrBTxTE+rruc=0V%19QyU>+~uo%yVS&ja7md%(s}v{nb{ zQdHKRC`NqQ%Z!zd-E3h1zTPvUN z&o#B2sF`cp2(0<33wzJ*o#>qnY`YcMcEgvC;F-YNGtKIVaND>^Ba68Y zVe>ZmDc6Oi(eIveYZF@S^Vsq;+JQn z`Kyo(m(+~z0;e04A5)%!TI1`hoP zKh}E=ejT8|8|L~zx&)~4fM=;+%YT_{D=li!7Qx^m93boIIpixn+76qO6rM0U(g+N6 zmYD4Y+|o2jS;^#5hE*6-i$JrieJs7w4g-Qd4UFZs{`}4}TgN-ct&4}hI6SktJ-=yd zes#x)cWza~h~G(05gafdc05@DwmpiEHKw7aHHal)oHqNjI@4ETd?2gprJYq6CsKr3 z(9D`)Vod75*hzw{2hDC^mr|`%9IKW^Qv0)(MlrsOoX}3q2m{n%Y|PMlV8_sXUJ&G3<$Kirv~ymS5MWe?-f!%-~138Sq;K2#@F$}YdfW*q#Jq<+m( zQ#u8mmn21WA#H}RwwNI)!?HbenA$bCH1`Hfa}Z<2`$)}e;jq&Ow#OQR^Q`Sys%+Yo zTTg;l1yhq*69x8ItI}RzIrKn64T16K)n{kcbmd;3lU~hjpIf=%Omwz6c(XZ}-w?`& zI&W;f@!T(c`QAi6n#?B$^SYTI%;cp5x$VCR)gv2^c0ceU(KjnJ-Vz#54qfWLExhD5 zXcY-S5Surt)0(yf^E4PYjYKNxz8R;3*o{aFW9-Sgt#NvOMF9X;xb=6=k^D*o1Wx+Kj-_s-#OoR zi#D4X=*l{KS~bsw)%4-*o^tAOHb03Alt2MjEffIt_D}qgXeoKX1SWH;6jF zwc=(McR+xn68r8+h3a4yH2%L=2b?G$oj@hx1kHsl%!}aPSEBbq8be>v#b(j$ckY#z zXlmJ9dm1pjfN196ch$`nxx7VHp>MC}gvM@}uruH4Rx-?2vTg#;L zsXDyK+aX{&##KCHK@^_xot2<_9F@OQ@E_iDSSCe##itg(w^n2KMzB+KJ|pT=s=LRp z^M50o{m<7%7KJ@Np045C)d*NzfDc4bJN!o_&9#+mgQ>e`xHgC&uk}}!#MC{c8kVuN zNLKl-*ZaB>eO+NyugFC4QbAmPOOCIOcX=cdQep|&OWb|#E>9#Dmy;4>XXCM?JlN%7 zD4Ftx=QO!yR#F(G>Is<;DN40h?fplj#l<7>RFrM9TK`Y}$SU7Q&->|KveD!o-TdU2 zZ*D&N=<3g3ebE;xw}@6cjzYGJM=7{K+jq7qorX%8X5csqAQxQZD{YoUGpG~1x~Y)n zr3~1NXrsIMH3dWH2DHL7*8wwd6lTx}8lWcaFk4mzr~_#XAgP-z_bPzjP!(2*0Gj6f z#wuGS=-bx4hK}nf=4ScIv0s~06|RJL-=ZCkRr}LTQw`AQ!@6i0M^FUHcdDOKk$KhO zjuE$vaSHb?N?1ye!BwGmUdFOpqB|@rQY=me&0eEw8eIv=i%Kk&RE@OgQ5mZS%}})l zgO`@1IJ?APP&Fx73dwIup#{|(N#TT~1m%^GSFh?N93`r8VOhgSR`rpkWQed?=XSf( z>d?rbI74Ji#8;OTDH)NHQE?=-oQ$WWFcC*3a`|j(rSFx?fmm1`5b4_xX&P+PRQeY$ zt9nWXRR@Lrr{k%R6emOMbp%^z0J1>A<23B(^`>R?gWz0m%m|)4`?G>4WA!|KSl?U( z9hE$^?pyO+^A+|rUZ2i4b!VHpGmSl&o>Lp08?BjB>o+V1DoTmDxXZ2E#Hca$t1qXylF+tPSbOBGm$~ORb}}(O5F7 z>QaPuCG9}WelMztRar@;;smo&t2|L~go#y?Rwa$(D{ZQpqO#)CYKko-b;`5WRt+Pg zXJ^i-rZMeO6?*@s()}`0zbGm5s!?8v5rwFR#6mcRRm&J{{&6W8j#CXQ3lW?zbNY#? zv6odVk(FI{wt#|VDN!-7(?ls-H8D%!a9O6+=pJA;T}zeYPbX60rMNtVS(md0CofXC z!y$yW!M+WqZLn-Z!;jEXu+*=edH>A1>(2Du3m;#&Kl0_oXA_@K=DJ?WS%%Ym!PJm9 zxi(F%^?{tJBW)~z@oN1$_1B{}6CWnh^;zgFScSax(5CfJrgc7NjipWWKF}m8SZr%2 zubo^Qx;B(?J(sr}&RPx^c=HKZ23t-K|fh-(Y_ioXsj^@0hd(+XKb9mDB0@(B5%z|^h?zZig zZ40`!la?&BtWRj1F%OO`IIj0@K^y&sGS|Na?L{Mx8XoT)KrHEMPKWNV+`ssM&-6^> ag!AwEo)9)wzpESOM-RgH2b)I+xW55>fbuy2 literal 0 HcmV?d00001 diff --git a/app/model/__pycache__/__init__.cpython-313.pyc b/app/model/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f3cd27b7b8d08ced1c456cace5bd58e579bbf018 GIT binary patch literal 559 zcmYjNJ#W-N5M6(r9ft!_LbVOW6(o0uMPZ@K5nYhtND$;8fn;e}*?X6j>|JN=gE+r{ zmVzI_?@0mL1|%xFpetyZO)e;-)o9+EH($Hz_d^8s?SB8{y@k*(18&S-2dfDLUr>q^ zO0CpBv=Up{iKCpvRc_)b4;$V&>?OYPlRyO+WgDp*zeR{b&xN<}2EFso;q;hS46iN5 z2@wF5WL{! zt;YMb>GtH=V?wy#Eg{==2M=U3*5r!UEtdkvIQ$LEp@FLdQ+^=kQu{~6+<4?8FFCjJCGk=5wGf2ZyGd{`I!L$A+V(&Uir1xfV_NHN~$zCs8D&|xyvYGrSN=b_*yE*x& zOL@VbX0)!etEt(oPtd_L;Fcwus4Zw|u5TWJyL2qe`V;gl_wQX~?OveC4;1}$Hb0$T RI1j$N!KH)Thw2_E{{fg!n85%5 literal 0 HcmV?d00001 diff --git a/app/model/__pycache__/doc_cov_model.cpython-313.pyc b/app/model/__pycache__/doc_cov_model.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..60e03124437a33ad60012880c55b1e418bb2b7bd GIT binary patch literal 2459 zcmai0O>7%Q6rTODy|MF0)0q5}X4|Gx7qw0rk{qJ86q@p*N~Ux%1l4HR`Y&7AyYB3o zHZ6x9piNM!fJC6cC4~!>5JKX_p>X9`6roxp4oHZ!xg}UtuDmz4w@xI)ll*q(&6_tf z-}l~(YaJa?0`j1{W45dk@)vfR0(~L1cj2>4Ou~pMnerKlNv1MDnA}J96H^@^W@tjL zyD~-C!eEO8HdWX(u(buYP&#Zzr)CJTBti;uK{jHQA0bBc|#sY z)0Q{)qI=~?*3Hn2`yMU1*<3MEo&(3}oR?vC*|%LspVHTsmLC1`!`f#z*Y14t=-zj0 zx4wS(vw*NuH(^@88}BEA!sS^tBrwLCg+2Ja}AsV12h0bKs7}s za0bXQF_h%h?(^yN$kemX?>~0p{j`@(yu&4G$XsSQu6UIThQzfzoXD|CIS-fC`ODK& z>6DjaUi$TlZ#j9(DWs>}%TCd?vR=A*;Inh4oy|?At#Uan4xQc!0q@SctYrBV<5OIK zwZQ_N@bluJu9H7v9ZQoRP2S&iaK-!fmDSk9eRZM+BP4^WDNR6X17KMuX#!~jNn=V( zF=a>})l^uhpc)|_JDbgqO}m*Zua*7vUErN*g$dgN%x)29rn?B=x)g{ZCGSc+DhbGYvjmqtte6pHjZNWywU-+5?bUBZ8P*2t z0+qZQ#>ofN?!n%Hi!grd8Cn*T*;Pg4;RB~ z7rZu5ZarkcX&*RxL!gk;p~YymcMquefq8W?R_)&dpU!G;UxVw${@5`1vwf)cqdEX8 z3E8ETox=LBXz4{Yh)Sf0pzs;&qC$Kd6mH3(P=DPAN48Pe#I80DBReS6OgXKN%XrOR zRDsHnsfvCG`z&mRS)>p#+IaM>+=VeXH`1y@7_L-UG1H6;22nZKuU!GPOj@~3N#|NU z(Hq2+CK`;lvJH6<_zLEc03j)I4yoQDsUV6@L_TnJ*7wVt7-5zGUmk^uV7_L5GH!KjqSwuJOLq~9m(@XKmqMN@kOl~@BiHS#94WB zHGWu7FLEK?C)!&3QpZBa$C=-?0l^hlv7EPELbxjaYM+9F8$BqBCkJ(;{{!?8%tf)F z$bpEUlmNm2&bkNcVUm(e=?Ju1iTE#HLrz{*6Xk3k5X0-5YdI$?;1!4(avjG>7;3!| z873cZMX-rHZq_>m3hw)^p%rzt>)^avjdd*@UpRg{{vf9R7SpQ(dl%1aXrz1h(zS(a z_qBnI5E&d=iGOiqetPlDpIto-vp^M!`Z);qgk?c$5?(SXVQ37W7KWw6uw+?3D0u07 zCW>2Zli@?Mv+53`4V4Z*4?S*>O{luT+ov8A_-u4Wplxmu_|yv#o$)eLe6|I6_3Ky^w1_YEw!PfBcC7veoM0zl8s>vH4QfM?BxzF%OKPo?NYQ`7k~F!c q$cmwJ}W8_W7%;N`F<=HWZ@Plki_El>ig~ literal 0 HcmV?d00001 diff --git a/app/model/__pycache__/file_model.cpython-313.pyc b/app/model/__pycache__/file_model.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1a22ecf00c2fbdc66a2e4fafd5601234ad64d091 GIT binary patch literal 8148 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 Sd1;Ohnfv>~N)Y>C{ z0E_}LI0!_3Ux3Y^kQ&H@RtaP{FEp1g82W6XbyctlYp<|a1`)<#U2^+-HGux6et+ z37>l?3qJRXNt9B1GQA#8UdL(#=XG^tVwZ-&+=Ud=sG@>mHo0u5##lvHH*w&_?H%Xk z!i6#Ol3M)~KdRk>>MMWLzg>B8{{eAc{j8l$M##9lv#gXX>ihh|KBTGh%(%Us(Nru; z(^a~^9WDFY_&OTb|5{zT*;x6z{@t%1k<9J-gXQ`^_U6u;f3`SBTQ;!qBm})A(_z@!Rh&AKq)+xV5>NW&OjA{~!KL%^%v~%RARrZ+%Z}cfo8X z?L{Ee!ft{s%Od#& zwYlVU?kH2qoKb*hkgS^}1+k%MR<;WBO?^%)DhAVO2u(}2v;veZ3u))8mSRGPI&cm8*g(AFZel-{1H;ZI$K8Rv!>4P>KBs@mO=j&GDi6BJL*LAxq4oV{!d|?Y)7YGK ztg5kdjjfj{L>P{wB#AY&>+I)f&o-%5reCLr%KNa~ioi&ac$acWU< zOkinAVqRKeUV4m6etBL_equ^-jB8?XrBi-|Za`&lW=g7AOkzPnOlf9Je0*kJW=VX! jUP0w84x8Nkl+v73yCPPgc_90WL5z>gjEsy$%s>_ZG7=|X literal 0 HcmV?d00001 diff --git a/app/ui/__pycache__/global_signal.cpython-313.pyc b/app/ui/__pycache__/global_signal.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..71cd536856fdbc5dddb6cc9cad18537342dde0f6 GIT binary patch literal 619 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 A*Z=?k literal 0 HcmV?d00001 diff --git a/app/ui/__pycache__/mainwindow.cpython-313.pyc b/app/ui/__pycache__/mainwindow.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..96f5e868462a8538ae231559ab9d52b91bd59aef GIT binary patch literal 4177 zcma)9U2GKB6`uXSws*a@!C)H<>-7(8F@}Ims7s;#sS^e;-W@MUv6E%IJ6LcoK9HA`$4F_TRI1cGw2}uVU3A4mq_k4~QlYwt*Pe5C$FojN zl97GS&pqedbN|kFcRLnqmhh{##ctn6?kf`9FH~o?KSkyPNs$!a6-oAiPxgaf4nRN- zLQoDtNDf0-jzC0az~m-qlAEDfZh;m#3eg1l`LD#}R%n&u5SQDaO>T#FxdS@neXvj7 z5Bud#=#&q@0r?;tl)Ioy?uKr;2YTc~a7aE3hvi=A6>$Prj>t#hsGNX=+y{Mf5|VO1 z^ozdWl>r#&l9G}V>XDT2;^0`ImOl&?gQ>_C38^S=OHY}gO{}gOdR{H-W{HQ=(`s4c zO@hqpD;kfaubO$)(0EJwnpRe?FTJhh%c!k0;q;uTm&)jvA$=&V=yx?F!Z(=Cg2Dai za;lAo)00rKZX=yC4HLxJB^=gx4b+0JVTee2ssa{vh0-%7$}vGOA9YE!D5o9EQ2KHn zlMSaYuc$?hN7Gldbw#^V(MoxZ$J1B!lBU9rHA~N_n4$)pI72Jr1S9D={oNIH6|FNk zd_xw^>3L8~*0KpJsSt*4T%DHm>yzfYSJid1Ql|C5us8Km!CXUu<~?WPLat-*n|h(B zm1py{MX$BKy0D!<<^yR_0-qv*U-3ae@%Km&R07zBlputQp;Va1vU<)NVe0^T<^A;- zM8fz_ySn`>Nb$11j5`AL*1xejJzl4Uc8M(Or@^%%s`$q0{t2>h&wGQ3;#UG=^$Zfy zLd5NI$0+%;{!Ejr^{5g&)fn5KY4Q48P6;)P?$5+ry+@UBgM}{>_j+6|>)&O8GyVFf zL_CXyeQxhg{()>D)9GqGs<4HFuH@P-bhw&Km&?n<-L;_m-0uhbr1-*a`DVVCo0 zX2j!NZsD6fPP=v)_8Fei@y5~)ZdQo5E^=)VCRd9Y0c$ZURu0NiPy}kCj->u*3^+R_Ak1BB`M*q9c;w7)&<-U2I zBF_oe)}!7|VLh32^_gjx^Jo%ll9zu`O0~`MX0JNxf5W<@)8VW{(dnO`e)O+D{(kHJ z&$mAL%@!$U=I_C1G)GoTMJ{cfLDMa|&peh#L;}@V6NMb8 z>hZSQCg^t&nN*_&0b5k;QvJNy6reb(B3#BStz3gfA%<}@1O}jD!&|U#MqSYjU9)%; z1p%D`Fe4~Unnr;WBhar6nQLan(h!dF@93o>5CZUsS}4ruh6YqbdGMN9(0F(j!AdoF zNGTI|2d*zKi#%%BB%rbrqfJ!GCb}Av7_SIsrBo1BN_pMTl-rtykcL)dE>dbmVcN{U zbA6Rw1{P2S;?16hw@ny^xi+sZEolW(TRb*V(pNBrng~>p;3PE(YUtAQW{j$=s(G9c z??8SE*Ati8x~4)=FIk+XJyl!#8i?{3Xt)z4%fP@{9SC-K2PRp<_l9DaWovSsmO2&W zK}$21fuN2Dm+1u&6gy63G=U$Vm>yruS{hi3=}K8GEvu#C;$X|-*h_YVy3DJYP*-wv(6tdZH@dvgKP$O>L&G$jO!%j5l$aQo0lEZ$~pge7}(+}GpPCUHxai7C3h_q{~RvkEJ573H#Nnyph zj^jf7gYB!bp+{_JEaU;v?OMPb-!}l{4 zky;s=*UMP7XsvkD&VAfohEgO@&we*X668*e=x%sK4Vv#`{J2ZGL)Gkl>sJo9LH=Chw{X5ZSpRd_tCeZiJt z4u`=^McJc@H=BxZmdll}MCEe4IhR{83l)R-XfAiBq8jy{crLfBgH<;0$4kk~QR+-kLx2QH zY6xg}iwo>I$n$UwlEsohj%;XO#9DE7p|%AVK|>uDYssQx^eo`>`Cc6G`wqX5+-6&F l;ec=Sg|w^L79#WcV$UUPzLGlr8yxZ#eecgamxzkt{s&FNr literal 0 HcmV?d00001 diff --git a/app/ui/components/__pycache__/QCursorGif.cpython-313.pyc b/app/ui/components/__pycache__/QCursorGif.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8884f42ddf30963eb9b249f284e6a5bde7c74a8e GIT binary patch literal 3849 zcmbVOZ%iD=6`#GmKg->o?*QYNf5(Ce?HT(ZV1q-Q6by-D9Am?kwh}1Y_1$u8b$5Hr z?m5s85uYkrC8?{%jjKkgzeI}F4{fAKZPX9_+DetG!#In!v_)zf$=_nIWc6F$o4wsT z5NWE+hc|EDym|BH&F{UL{b)2ypjq+ga$5r-|H6UW{8eUu8JIgHO(;ooY2Q_D+DCoU zJmn=E^H=@T0UDSN(jXiAuZE@tDlk59wShJ)Hq0G&P1brEIZ1j*I@m_iq4PdRPQ_dx zDU{!bQFxN7im7HLy(kS04h{bMSlBwy%F)92A-A?-K;Ow`wf=X@Q ztO=t~bpbFpwAF%AN^-V1J5eg-wTyx*XEM%l9a=p**&m1T9kNI$2a)!rIm)NQX}*no zpQHY?zm3p9Isi0?F{7b$2&e!W0@G+nH_&j-myFoqn!k?{U~(qII~y@70LAhCZ4P%^ z@TTTmKRgK`^Ca&{=gC~CZmP=8`_6+MY!aF0n#s3$!#6+-Uo&~-8A6Ku0$|E%3lW!_ z=iN1Kf5UgJm5>P7FnmQGb`83^X%0r-z6*`69J~=-zSg_;(!R5RYFO#*o<^$->8QN` zzB#StKg@d;!TL#8qt?&0)p(bi>vXwV534cmhnnjf<^}8(cc*i3X6M{XB-l5C`yg?40uQvG!Yh;~@k^Vupd8mf8S9nk>jQVgCQl`{;rR|-l_HEhux7PIQA z&F9skCz{mDMbkc3RX`x?Ws@RCJQWAsA=8<&Lm9nTR5PX>lC%1yvax3K#d0C(xBZ5i zUxI12vtb8I3RS^&uqwclNYLz8r^XiN4V4;;vt?5$E-A&_;*|b+F|R9GWAP=$Si7XJ zo~<$npRtky0v{ ziFTnFY7McQ>X1@}@c`<*24tOVM`Bi_qY~-3Yg%1{m9D`Dk-=@Ldt+)#?A#HKTSDKa z(6=qdEiq9M6RuK4eC`R)H4N`EWNiYnW-CJCq0kBt_=)gi;r7IjqHhcPumd@8zj(Lo ze%}V>i|%(0H4e4&)$!M>eYOwF-cj+N^P*WZ0h&kLe(f%EBnRP}N&4vtSY!*DF_AH~ zTdEx}Oof`X1*EhWNL_I41~$j4!tuHgd(u(V9|5vXc4N&}Osd2rE0(Opl2)w066^^R70M<0q8KIcjN422VZLGU(V=BorxB43scZkR#Sdr=^GM}XH2 z9=w0>f)u&`-|{s8E53j%QN7Co==&V#1M1l=_zhDpIk0b`Dh#N45c+n2LOoR(_>(>c zew)(_tPPTr0JeZO*cCM&xFSb*5j2gLfIu3!CDIZSfaEPfV&Ff$DV*LC&V1T<;Q7gH-nB8YBc8Ox)TWsFL>zp~lcw%nr?5E}R$rNrXK2Sa@DBNIyjBx(gd&ua9K%-C zdy2310srHW?@pdqpDVk){v3xU@hAqCGdNG;*@r^=|8VIwC=*}yE9xONJj`=$>M7rY ze+6vfw4+LKZQTprs_cu-&*`Z2ba$!K{u*j8cu9Lyk*?E*_#V(c0?^s1#ILh7X-w(6i+{@}exSl$CsSCML^E8a2$k20tHNmZ^kR@ByR! zNQRIgP@D*~$TAdKQ_IMTX;STG*;EZ#zE7BQ&f|v#j3U8U8{I&DNS^qkftI~QFmPfo z&Ig{~3kPA?#0C1E2Km4Q=d8vx$te8!;I+(vqsOZMv(&6P2}Owg7@f~*v^I0Otkr!= z8*3Ba(Xu(!G#nU2ppfZhno(t%vEwVI?2R!DHh)W@%w;+bKGe=)3m2WRy-4wjA$5s? xZ}{gt$8nE^5a)l|OSry&lGA@Dr~gKpc7u&pu%{C2S?8Yy&vFyo9zn_s{ukna=|TVi literal 0 HcmV?d00001 diff --git a/app/ui/components/__pycache__/__init__.cpython-313.pyc b/app/ui/components/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..61fb385a0b5d672fe80cb63bc6ecc22e3410577c GIT binary patch literal 393 zcmYLF!AiqG5Zz7ECI*7~2W@XTn4^e@hgua95lis45Y{%Wfpj;_Ce(b0AK}685f-Wk zPrV8K0cUHAb9nP+_RX7NH$mVNjE|$>`5p7ODfVIQ$mR^mD@jR86B1LPJ;SZUiY>5^ z+o_Y-u>(%rfzI}=lXPPj+#Z>CLw8MaJf!*{oq#OMAqOn{@l^v#!fi2In>C@O-L#nI zPaJfxBg3Yyr7+@~QZDa!E1UX0^t7+GMj2|s##wL>be~sM)D+P~E-EQ`-6B7-k7`XmDgu=@*{EN$oj literal 0 HcmV?d00001 diff --git a/app/ui/components/__pycache__/flowlayout.cpython-313.pyc b/app/ui/components/__pycache__/flowlayout.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9da849bef2da4891cdc5ccb4f6a5ab58e3c73066 GIT binary patch literal 7454 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 literal 0 HcmV?d00001 diff --git a/app/ui/components/sidebar/__pycache__/sidebar_ui.cpython-313.pyc b/app/ui/components/sidebar/__pycache__/sidebar_ui.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e9ba14b2aa197bebbeba77e2d931419bbc67a9d9 GIT binary patch literal 9580 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 E0SmerWB>pF literal 0 HcmV?d00001 diff --git a/app/ui/doc_convert/__pycache__/__init__.cpython-313.pyc b/app/ui/doc_convert/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bd77b108cc0eca4ad382249eb1f21a14cc6d4ab5 GIT binary patch literal 386 zcmYjN&r8EF6i$CIOL4H1pm@l22e-8p!6Gtc^CE~+1%*HeZQKHFQj=Eg{sONa{3HB( zJSe?-^)T5#V2YdUBfPx#@x3p3Z_#eMK;xs+o__25t0`76m&syFC$As^5+EZo!W#gH z0l>tZm|bi3;tsD^M&S}6^ap;>_q@J$0DV6UJm?OO%VH|zpCW`2yDbUV^f)6d{qIw( z()1t*hWGcqSY%po%F;FCF;Uftc-q65aaLg5%PW1fY(!NoSza)~VF=yY!B{(UjL*Af zy@7EeVvHM>lZ;~g1{Td^_1P#y*NRGoF3W=OJHjVuBp!JxNTSf{wTmiZ3Ef8|&r!)x z;}r}3KxKi}K2ke}nMlf%9!W=g>-7M&tHazf4CBXX8TPyb?9J!dyS4pkJ97)zJF=w( Ezssg+fdBvi literal 0 HcmV?d00001 diff --git a/app/ui/doc_convert/__pycache__/doc_convert.cpython-313.pyc b/app/ui/doc_convert/__pycache__/doc_convert.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c191ca57d2e742bfc5773d52d8c42cc82a80ca27 GIT binary patch literal 9458 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 literal 0 HcmV?d00001 diff --git a/app/ui/doc_convert/__pycache__/doc_convert_ui.cpython-313.pyc b/app/ui/doc_convert/__pycache__/doc_convert_ui.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f0cbe0b8d7393ecb21bfd942d65b134db042916f GIT binary patch literal 20915 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 MbL_V!1~9$<2Pz*BHvj+t literal 0 HcmV?d00001 diff --git a/app/ui/doc_convert/pdf2image/__pycache__/__init__.cpython-313.pyc b/app/ui/doc_convert/pdf2image/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bbbf37579606e21e5feb33d746b012a9abb6026c GIT binary patch literal 395 zcmYjN%SyvQ6rDV%Az0{2P+Vl&g?+@(MG&ddx)dcA6b6PNnWh8DOgfWP(=Tx8#*grO zTqxPPbW`aMIKftWxXitCIQQH;vu-wRpzzUZ&c0RtsxMpUn__*SidPT-0iYIW{yhL# z10dF8y=^RC?BN|viL-(4xINeF_WNCT;Pia&)Uk&bMLy%=PvAQNeJC(f^f<*d`EQf7 zRCLethVywRjOGY+vQmYTjfe~d&2q|_<2!a`A*7rcLf37* z+CwPfAwo6Fa7qw*1MB)>)nw$ui6lb8+akwoidhUt{E;ObM-pzQ-IM{1$N=Ijg9U}P zSIF6dh#Y3o)TJqo3EWw!vd&T-6$v>PmYSme3CLr0tPD-leyoOOu3Es{e_p;Dho7dk LGJts`8cOgB5z1{K literal 0 HcmV?d00001 diff --git a/app/ui/doc_convert/pdf2image/__pycache__/pdf2image.cpython-313.pyc b/app/ui/doc_convert/pdf2image/__pycache__/pdf2image.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4e9c50c97c5d76cbc53ab2ea64ab5732cecb81fc GIT binary patch literal 20437 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 MYheI$Pd1d`7wp7s@&Et; literal 0 HcmV?d00001 diff --git a/app/ui/doc_convert/pdf2wordui/__pycache__/pdf2word.cpython-313.pyc b/app/ui/doc_convert/pdf2wordui/__pycache__/pdf2word.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..32c6a1385d7aacd1ae66b2d700060ec1a19fabde GIT binary patch literal 19633 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 literal 0 HcmV?d00001 diff --git a/app/ui/doc_convert/pdf2wordui/__pycache__/pdf2word_ui.cpython-313.pyc b/app/ui/doc_convert/pdf2wordui/__pycache__/pdf2word_ui.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a21e11f546db9ef786e53d162ccb20546fbd3a76 GIT binary patch literal 22624 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 literal 0 HcmV?d00001 diff --git a/app/ui/doc_convert/web2pdf/__pycache__/__init__.cpython-313.pyc b/app/ui/doc_convert/web2pdf/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..00d737d3184e79c3d20b320fc5f795461c6e6548 GIT binary patch literal 394 zcmYjN&r8EF6i(VQOL4H1pm@l22lvamLlK#>c@(7z3V{&YYzwqWZCYpd7kKsHAK~BQ zLFv`2hspi{Q`}@9kGz+U?|ttj%X-}b8Xt}N^jqhz>avEhDwaFCcm+O40fs*GZULYW zfQd0Nn&$k)8C>(2p%pyT>-5}qx7$AKpl;uDkB~Ds&9kXY{}dkb`CU$hrbjX5(SM)f zg{C{MJ9v0#1v1uxa~^FNkEklns0s literal 0 HcmV?d00001 diff --git a/app/ui/doc_convert/web2pdf/__pycache__/web2pdf.cpython-313.pyc b/app/ui/doc_convert/web2pdf/__pycache__/web2pdf.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2ad5b147f578d5940cae574bfef1af959c6e72da GIT binary patch literal 21559 zcmdUXX>c6Zd0@|p2Ij;?;^yEWfe|hOBy{kSMS>6s@SFie*?=?|VurwogBkesfQKAO zR1OP}=n#w~6STBT&{iTakwtnFTUI1l8z+^xHnp{E4&a8`kWFtyim0vK&?K|=x@x!f z`(F3!9t>I(wdEh#SHOF(-+g}fo7*l|9tTeHx`y9a&vE~ZAI#;bk=s5q$Gyr0xuB_s zBPJS}iJ68LVu8@yW9_yPTeqFqyK_iRH&6KPT$0QyOqs4qJ9<`kuOVw_+}Ts#-9Q>3?keMm zzl5vdg6=Xd=owf!P&eS~uqm@A_t6|La_+f15i z>!zL-(gNv4FymIzx@4Bcuv)M}K5n47h8t)J{GPhb89|3h?Wb*^6~?t9xUvKG03B%` zXbTJ}@l1c9oz;PM?}Iuf_D$9gtPdQ{EUUyj)Fde15{NI)hq1K`<_V*5xXgDHU_xF*wY~G)eZTq`o@u-};f9KxL=#ki9RCes| zjUGz{Q&4b3w(swajYNsxE_?TPMuo$vhQ@YlmI(jE3}f5?nveG6ED(urDR7;rg8{ zCE#W;J*?sMw%FLNwh1KN;tlB3ZCoE(C4 zm0gEOa%5L>FdWBS@|%bcQUzQE#EEP^13MYmJI+I5e@nkq63~Ubz z$6vPn}U`y?kWB$>r*C@7qkL+a|CVRJA-!cUBMji-9a9FPcRpJ zZ!i!1{GbE;0$SgR^+{pSMT+{k%_dS@$N4?7TfGF^;3AS_e6b9MDcgy1lvT(`r+|lw z9_1gvl(v{M4|A`zk9z_(w9m|j4)D^{$HlcnPQSF)THy%A*}`yZ@k=}UL6~gZPJ0CJ zac^8Z%za!SpQY;|gIwD6fC=2aWS~H=&0>2^L37a344=?@E=#2&)2>Jm^Y9Q;7lb*- zwTl8hma`l^)Gvw;$5g53uvkA_X2k`yV^GLFW)aM-oM0~GcED9lSc3LGOEav=KJ#uE zjf3++Ucv&ctLsZ!uVyXjVNg3tv_y@b!(xFt7SqE(y&h*V7(H8HmIR@`+mL@>Mur*< z;DTnkpmj;DmaJ^}{JdKIYgwH@JB#UIfE@@uiR-_geFPq4F+Hr|Sd}2pRy6Yr!rV6K zrCBVniN*BrGgfYkUV_Dztbx(W-TS_LiM6SROIqKmr?Xg~lg0G#GsfPfmtZlyb$XAr zkI0Sb^xi5z} zf9@WFS4QT>ToAN=`oZbN^WVSm!CU(}ySf(Ps&P+OY-o)E0ufYSp+AJy)sdFb#L!{{ ziu~5YaL*WtBPHN(lx@P;Xq3o&C=^S?QlXISP9;;}cqkPX4u=wBBeLfZWC+80LS8H} zI+hAS6M!!PQwee&fLu%hbV(X-iBJmSY~iInG~WSeVB3{H1=3bh#dqp?~R8KM&lW|1VI}`=(6>x zWGq1tK*}qCLJJAUg;aDT6j7)_oUvR8WYobVVDyX@AO^QbVz6Quw!(N0(S0HaQe;z1&JBeI<6%Jvg#^TAK5!=p-UotUN?y4X(YCO& zQU#g9KLE}1n-kmu@0!RF`I4y>v%GJc`JD`%pSBiY))Zi>%gH5<6+!9|U@>LSQM&#E_r`~+}{L{01J1tow@--6Q zEb`4W(OG`|JgY774IH4nAJHDJQ`wCqG ztm6}TpTyrM^7l!6yU4d+S}(2JDX!Z&%XiZ@m424ycZut|X8A`U|CDROCGpiFUoG)| zk@wHkU2MJ3I?HdEFRxTqi-pSaoOCa&@Vy+T3x~azz%EHV_A$Nw&5h?b&hf4P>sB?a zih#7skJ~&uSMbK1z*c}juOc~sWNwyYppe1A$d7^6*T|-RD=Qw*2qc!GBjbdrUn5}p zG=?z&WK}>TUi4a-BpZ}Ku$bk7S{negJuEY*k$OOgSd0j>evQlu6tP-*n320ePi3)Y zAo>^xXKN7#gxg=rO7vM+e!|*kH6p&)S|)5TF9Xu6Pb0X1II;vZLX7nQBT%E1c=GA# zEEcF`F+F5;fOG@2p0M}p2+`iZhLvMv2Af+1&ctpcT{n8GT8n@DgaWfyS8$q*ns zid=}7rU95c5KBaoN0I535y~o`y|Gk0N{}3vt;k0aM3^!k0BOM9MEtmHMW&zN*^_fn zMDR#FF1w(15c>}fM}alB4aNb5kUmTx711+{3L6cjrJknm=PRY0gW7K#;KPpoWB7q1=fS||h{{qpAV&UvR-a#o4Xs;Shh zvyOhP5}m82-LuZth02=CwcFB_o#T7vJ(ZHDM)cIY@sL#8A=Y-hpZlTvUAI`ZJYO2N!~iqTQ}=nbG5is zDqbxXua=5i#Nw8p!kD%%cuJ>MzfmrEn$w=fjP;;ESc{mmENg z4z%uCGHBlL3dcQa3Wot4XaKEW16yxPxaixIi*CGXFv4HJ2yHqzWHl3Z03imPXuk#k`;p$D zF5pum89|^X<3o+IbzvcZLwi62YkK*h29jYn@vu<`Ghk4TB|#WK3OCEKIk0{bIej@s zykMU#V-5!VBXF4NnN9F8QdsS5*T=Iy=v?lRi|n(35C%jpPiZF|Y8#)n2eNyF9k=U! z?*1hM;{eF*dzM^Eyd-$UZX?eM0(ukRbFDQasbLKWNf3y$RU{H1%OY z!1ZLnQ+6Sk2g*D|^W?QzU{oi!TQc@+1nvO(7Z~h^I&| z%^ysTLB2f(Ow}V0DohI*!UDxu067|U3Dc~S?gcA{! zWAs3+-Qi=gk+Bhwtfz(v(i`MatZO|42v*LE#zFQPL9{RDZO3>ZHZ%-uBvhodz*ejP zkPJo;jzkpkyg!%Xb7gu*umC7rIPynW%7Q$ajWUw56T1kFsHy>n(p3mgsDPLPPNU)! zgpMKrx%4yl0keheKyWKK9q_s2sTMueX;1CA^_Dd!xAa#9TzSKcHC@(>3mxHR~F`-hv~-8_H)L%`0h+BoUB z3XQu?yQU69ee4M0k{4T?_cx`B0(UIt`~nzKe(@Q{X@`{AWgb}wV!T*1wB>I4spt`pt;B{<|IwM9Wpiv5}6x0B@sNw>eOqQi^pao>O1=to9 zhyaz6Nt+<)o8LyIAzc{T4xYTU@Zi`8v`h={#3Cp~_M3I2k%@%K zF0Aj%g8R!vg@{Up9SrRdd~Ua zyeoh5$+WBXciGY>h6 zQa;0|mH`iGJS(;qDntO`5lZJ4PfT2Y>B5a4y?pJ3zfo@ZBH~fMlOQOPi{KJ(KNb^^ zF6@jE5WgqMaYApfMhcP%C`n#K503zO2`k!w0tI^UB*sxk(3?!gdt;-1t18Mll#E9} z^FE0cPJ<`lJ|H=#5Oa9r<;rE3I#byHb*%L|cpx*+uaNTFuH?5}s=NH)u5|wHar@65 z`SVqEC-*Lt*Uwm`hRtHbW~pJT*swL-(3vjZKECT}*&3;=O)P^t@3ele_3zvNar579 zo^QWjYJXI0e^hGUEw=AYx9`0i=oQ<0fo>{)%rxF}6(v2&_4kWT|4ieo^ZsQw=wj$X zXwJF$riXJDEWagqnkk(Wff>UsfxDtO*fs6Uvou{gqEbd6vb#HFgr*s&$7ZJucl$HW znmlC&!Y~*GE4_x*GLqKlwAS6^HdGMb%-YdI)(Z&Yt$|iO zoyD|#doVAN6Lci_yKDHt4$j%nDshh=K=>MTv6W?C5_pKsMGx5keca<~jqC@Y7AQ2bT|Fdxu`?Tn*|QTH2H5hbX*bA=knW?j zpI6a%Q^IcXm9sZ4UZjx!`s;sjY!71O!x^K@eG@CiYO0j8Hp2N>h?ou>eIb0gOF@r4V^+PlQ3g904H) z>ZrGl3CGDgEP(A2WPxPMXmV68*wMRtS8ozVxlOVELbbS}byrLmRY3%mrG%1+D1l22 z8W8v%36tZ&K@vsr%1|_kGKb>?k&A2}j#7z+9hB#h8f_rv1*#_1$X{r-I>QmSebtJ*GAr>oXqioBEjUNT+SHQu>UxOzHr zxxG&;d`#8HREo|@$+=o|LdKhk^NCq!2Vm+`dnWeGIx9XYu9J$}uN1eZi`PrVo5kYI z>EegSyXMQQ&uu!p>9sB6yXGru&h0+C`?bB}yKmaLidC4hYJ4{cDod))Jo~55P7l7d zZszyJ*6yEdOE>OIuiQVrV_{__%{lm1?aYYS(({u*`aUHGR_4^siJg@h&o#K2t7W@y#Y9>LO@D zye63Ac-^VX5R!66k{5cjb93v= zL92>E?~yKnkrc7M^pMRMpgebXjZMEMqX>W^H``@kP)!q~mtnYqVo+qKvz(TX7!=`h zmeca>K^tIDJ7CZnR>X)d01TR=YiLvqs@c9V%mx_r^IFNxXhp%Gd8{@IDF*ek(dc0o z25r=HSd7hzVo;Wt5dsEn%J@{Hh(RgUn|W8%JlMmQ24)Jm2D&1B6p)XIC(8vL z`Wc}Z*SUv$8_H1K#Te=pmLt(?6Bj=D;Or;wy?5=!^W-~N_|MS$bMz21 zz5X(aUlf#g0+Vr66#0?wVvM5Aw=s4Ry=~|LC(V(!&_hH=zK7m_Ko2n+`78AP8olqM z_XG6aLGOp?y^9`BR^|n;*GHr)J1O=6bvqiesVGh<_#T#iAH5II`w@B{qW2%s`&;yW zjNadYXN;|Ita3>fw$d;)j!QT|F&08`1g3{BJ1eP`PsJ6!V%h|_W{$5|CaJ$Cys-U@#zw)AB^qM&g;68AA#NxDv23zW$AGUmu^m_To83%s%n*wf9df(f#8YD}?{sh^6Qg3$=B?0frz!$^&Ga=3MF*g~HXWmUh;p-3Q`BdmWw|-)Hf2I~U1`r$)>om5PypUecY1|e)799*xmXZ7=mi|xZ z{S$f{!SmY`ek?~AgZhFX+ema24Av}Q)ht`WqcH(5@$Vu3q%cqa2%mEKT^4B`3J4;2 zuq4RefH5g3jlJblooR3NxNV+yVbUvyr4`NMiso6q1yUrwLgXu^z|6Kr&7bnj^8R^u zAu5`uhTn2X4O_&9Eot||$VNF%IVKzuUoP_Hcg$v&`;Nt$n|IU6<+{;AcZz?bQL1@R zta)&je+ZjfmIlopo;du{$hbwb$ffYGZkDglhLP2?d>yq4{)S^YsKi5w|F^#aUe>!G zFe;_*elkIpp;SG9+)9?q1axp+%zJu4K#UX^m~5k&;PxYE!pA2Mt4|ND(UDjRj5H2l z5p#Gg`7%UQ(-ie|{}Qv7nE_~x{dcTT10HOfYHD3J)ebs-bq^)JOytX^*3a=ix(8@UkQId;FDv)#~C;=jy&_l9GA=mKiDJXCSJ`KP}aPTxBFBBR{M#jK; zF(f-fp|6gG<7$p41k@D~QfSAXNQOcLmtD3V1nD{XuNbv}m7|SDAeG8#uy%MLKmtSEY(vWff)>ewGW9Mgx8B;ye_*`JNCh7JRS;N zFe&SdkmyUw^+0N#pog$k7y$1#U*|sZ6i-H8`u!6-J}Rl25?*s$wif@&y2`e8>d3D- z2yUWxYpcm)tGiWGZEL>OWy-hJ+**@s+j46~o$bC`yG#|fhFhCVHvcVqp{@Ma_nB?g zw>j|WPSEZKp(o8TynFiyBxS#=3z~^_zy@#YG@~n$18?ap1ANd5@9E&_mTJny-qYb5 zItP72=cI4wT=Wf{o4%p*&^L76AiST0_jE3NO$V>%3i0(EL7IE<7I+le$(H13io5}z zgSd6f;ZW%f;vtrGgTOc$ZxBOSh(?y!Pih=B@bCs2AdQDdf`+<&t%gx~Xqzn@SB0+ z``&!xGMO*bbeVrYUNY*8hy#X*6PEsJR!-O70bkD2 z*lJi8cFi*S??*sR9poFe`XI~KL$(SmL|!N3Jl``x{YCrJRuZrhj27`rmdkkQh{!0* zedevY$2mfu4`($ApI?04aJ~FFikzeu-q7<=)G~*XhclE8pT2Sqh-FRbaO1?}wGaRB z)9+4P`_UgSUIuC+b_Xz$-$w}s<$)E-(UX9(ls9n{G*kJ6Y>q`_o<7Ax@T{4u$adN- zkb_D31dSgF!`nANz=V>dNVn5h5(F_E!A&Kg59DMgzCiDyVh}LH+=fZ+WMWrFBEEo! zS967+4%mmLo1i~u4fK*8tn^hp}Nujq;$i$->+ss{M(Q{TsvKf%VW*dIaQKrJhG zq()h%B`?s*m#av$S7`qeDhOv`Nq?h}MkVkdY`&5{ z5-VHa%iy)t6%gs~hX-AAeDy*>om9{$7BqsnWX?^qE!PROX=%kt7ke!K?8LJmvmZG- zqR8wePrK-8UvRol^}N_KWj*IQ>ykN5anB_Ntg5%WYiOrH@75wP~vCcVHYXh0K!1Io) zSp`q^O!T~No$5XJ#MvjL$`-M*C0)`w=Un@V`ilV>i_j`owMw3~qGv5KP`RgbU$2wO zny!>J&GcS;;=&VB^A@prOSVmBS9&yVV9~Z+WqDIDkS4bPT#F9^Md^Ug1lp>ZYxduTAu|&GGHZB0wq4X^U_L zl0I({jDKOnNJ?W&JQkR??+K}6r`WMGUD!R&Bd@96GkpI!bxf1KW$qas+KhvXZyaEq zGD|=KblN&$=`6Q&oq&BDI|D7`QK+YSN5aIX9K=q*FZjO9x7pXecJ0Pxr2t67Z_?5%57vnt@-;N56=U$knkZ1; z*SNH`FZ+F4Hv8bmOsFkn%fV#ixZ00W-e@@3{9rs9CfexPqzuME3&S&akfgN08^DJ8 zAib|Xc3O8Y#1)gd0wXI$2-{|wTw)(Dp``=%Car*ju-@5kV%=I%rSUmIB`1h?> zv>E^|=mB-XL-p?PkuY=@gJ0cIfe6Fgu#}LRc~GfxoFa9q6qkJlM^@PY(3j(z#X3B* zh~iIhH_f@F&T-exA}-g(4kZo$o=O5Wlyf{+<&Yd!CiiLk2!T?EHBx;IrPl03f8apoBwjo5k4G!V&=YEqlnnLRQQR z3iT=9m8*fqHs`+&#?{yU=GDbNoYCq&lX2TFFk@$GEs}j5-0+SjG&lxI zxslKyNHUEUdufr4xY)ULv2R*!15Kf_xy= zvt8!VQ{-b-MQ{1fP?G!_y$E_GICQ*XOfJhof?R5Fz7(*94}64LD6eXP6iSfdq13sf zXOAk9&r^95dEam@KP%V~F2rpl_o>bcn#*=<=thg71v22}CzY6n z+e8o$6BM|T|AF4WfJcAWOO+wMjfv?0dxkxJeTo9bMW>Ne#8!c01N3c%Id-DAP+@fNL>5T+c!SAxcJ&1FTQu0 zd<#8gEg4IPD0ErlWDitS%pO$6_t;%PgZ{FPBIO%8#Q|EK6_MuRIxqAIl?1 zy~_@@2x@zjUm94greyp;Tgy@9m-JW|f_bAvS>|ckR4lH%B`I0npYn@1qym>^4SFC@ zRF0E!m>b~mfwcU%K>Qf9hRM(o)bxx}b9Kr_)9rpAtNjo>*$T1%FxEpw5$i|ikO6<3@K4~~w3tk$pKT*a~;3ncBQ#p z*SMCCxrUFqbsuvTA9Ig<%$0x4HQusYO%L30_gPHUlLw}fGf&?EBT`fKol*PaCR5#1 z)g2DQn@7x?)j9rj+EV%p>jOWtx_@C^CtBBiY_0xf-ik@#%(2tQ(s{lU+dgu5C#$9l zzcQ+Cf3RabcoEL$2Ud2C{mO_kc3F_{ggye5+zYD=wSjNZ6~A+fy9x73L0eqmvr2_B`SaI&M#WcoLJVNX^Zxc~0}{J`Wk zxy>g{4l^-3GDwCalVmz9#Nx;zS&nRy?Z_cH4uJ@cT$1a^BYBQ|lJ6)W1y-cXI9cc@ zB1Mj3QtT)pC60AuouibLI@Xi*jtyjkV@++~(L$wmYoE>Zl@B4jZvKs!6q@hSWG}Nv*?9?2a8|hog?vIqFHhV<*|^ zXdn%aM$+hLB2A8F((GsFI!f%p38Cf@+qt-y0FtT$&B~r$jZ!c`7vK4Tx&K^RyW8J~nzz9E(6{9LRPK zg#5t>5W28D%jxz%CqhPPEzThlP&1s7`VuwUd5A>AlaL<{1ww?%4uaUgG2-?4MPQNR zJRBuqsLFC44Z(XM%|IXTs5gu{B`~v`C&ob8Z0Ct7?}VrpI8Ta~+~WDD7#tJTV&^G; zQ1p@nw%{D_f{G$h5ekSAXkdnJ zp+ljIAp0osf_d^mE5GlQ_fjYtftTY@7k|lip7M^00ni)uIpXtU{V9Jq@`T?vAx5a4 z?Bzs6oB~+`Bs4+9aQKjy0PX;o>rgZjftKbw-D4ya2plA$7hk}}10m?NOZYPF9TN%V z0J?ien?CFXFb@AM{ z&V-n84`o=GyUks3dMjeEF{?vyXSg%F;u=t#99?A`bXz!=;apZfl;AyN3M4oWnOrnx zFf1*16(+yqn>&khO+#hWqHInzT+Fy8>4G+-4{$AEFwYI`l%wOip5YFcGRU=oK|FVD z;xL0AoPyatm@$;$LU%}clB|^Bsz|AZ*A$G(U<(+*{D zs^MBz&!h!2hcaC|SSiol0;d9udS1gIcdib@xVIY^F3*QDSEXv=*bEwOW{|6uK|FW0 zbC^L%QjA6gGXNui+}Ng^)9@~aoaFOc6Qw5CZU*z*(C70wSCDE%wU={X&~P_{T)hn9 zxoba%8MLaDgA9}B!-pB{7QhSQ@o7~~M;H~)-TA9h9pl&xS_9PyhRgFcP@Ux14AN5# zpJt`ZH6XSoMh5iK8CK78!@e!xt=2_sLwbe@lGucTUO2!dFvw6+A)~jNhTRNPr~OV= z20RBD%yUDYMLM2OFkE-ByX3*+>napaGVVO@vS={aBM}AC=>8O^Vh~_{mBBpMwa3Fs z0n?y2874?iL>a(5%cyv6Xt{Na9(rS~^Vlfo$)HuNW-#-yF&eZCSyr9LEUV6A7MJln zc9v<#bJwGo$Bg(I&11TiP?}y5xn>N~MYAk-F|!o!sWhA>7(LH*oJ!rLYv$zV92n$Y zpCsRCWU@ibNFX=Xlye&XGDmAdU(nL1J;tN;oUVCskhcdo8O6b=Ea*Ox(t zdhbZm+lXp4z0=qmbTFFF5-T636n!vsl*-2u?_ z`&y{;n*^!FYnCzhN-X4J9>jNon+BM&pcdhB4sJISs$TkO6aLolog7 zuP~VBhB`NLNe`s60skaUYxg*VHt9VMw94acV35n$k_J+_R>MDG)Jc1M36BR!KV=v^ zH?&$4=bDD=&$#brFo)#10m4{ySFBbHj6twj_Ows4_VR2D#f;r7~(o>#|ndWE_)xWhhZ< za{ZFQJa-v<3xhB7v!eg2R7RHWNNSf+|1byO2Eu4(U^nohPW>>VLV1_0miPPFW$Ur8vw+DKrhqoA7G{alMAeZqTlYwlm+XL;s zjWS6*Uu8!j(FdG@MN^2JUty(b+G7xL0P|Ojis!oa@Kun0Y$f*Bf&N`i#~?#r*vq-5 zp<3A&deiLN8p$`>6WEs|e}?JG^EB%O1O7>zj8+`Ro?{?0iPLYnE)3!`3SH$JtXW*| zF*8N_oN+)3a%OqlBTpHU0+_appvi0A$bka%ZdZc5w(v3@Pj3eTu_ z?3oD?iUxf>)(GA?nf4O62eVhJ3=yA5n(%H+G~8otYn{HRuYi*2i`FpQ0r6SM#Asc6 z`>sZ7d;4xo+Uxb0P2tF;fY@V&`zc|OF;7Tt8pF#tJsOWr#?>rS}$qY#dc^3 zyg>$q;Yes20My1?*WLjo?HygHQ#b0=RnIWm;uxLnh|z%<2muB({p)#o2}}1(hMpD4 zGJ7Yrx&s^B2}(fIDLKKYsg?j?1n(zl*Lgf0YEA&}^LTbIl|cQVnhW=mv|BYt)l7iZ zqGSrSWHLnj&%sS5#$yQ&D3>-McLA+}cY^$%fBw12|FiF!O=@14-|;EquqNX$@B!xt z`~MTP^IwN#nTDNe{snrq$P*=j@RASYc)x>w$1f6nnU0q`?WLa7)0J@LHM^mHsC+37 z#ZCB7E~OSsCoXe&+LyMWAK;n6(spzPePzcI&JRgNolAd6E$T`_==M9Ho0E!msU|fG zoYK?2%uU+WJg$tI7vMM2@~3t8&q`Ch*VDO_iznCx=oy;~g~Fn~&VqIEA+<*>(Z-gJ_J=5oj>KGK5RQ0BWT_VlqZo5_ zKAm=SS9f&o+3g$MYlR?o@0H6--+%k#@4RyFNAG-m`ByAZ#iQSaNq__3rcEs{5E3l01?MULPVds0kDrJ0-!rW#K_pB zS_-9)#{(-XTZfn;&L2lZ1fpGJ5=8MEj_W49;go8sVgiHUO#!t4xX`Pp^a5%Qyd4S! zd@2IkZBhjA%BFkLJ1vqbq{*VNnsX+kUFOV%2&IKv(u8fpC4*W7gmA5LAQXmZjdwBi zFIi_o1oX`Z9K4c>vPnKt6+=mXXe>GfLHl&b2iH?^Xqj#j)A*}sByCP4JCXkZ%~CWfZKlP(cl?vaC-9Kxg?6WmxQxU)$dnBd+TIgJVK7pb`kzG^ne z1sjn8taM`H!o-dV?t2iNUCAIMssL1vdjnCC;6?&fj?JH^y=1~43=f3auq92F6Jz$_OHsWgKrh=Yz@O7kbHw_!8XrZ5p`b2Jh(}@lH>VMExVa(3l4l!IjBKd}+#ZPt@N$ zeTfc`=rlBAbIR@BW-uaFl!FT4UxQPB)AUhsg;H#nitS2qom5=+Q9+qfV3!K)GcU*m zyFL;&C_;rKR9rbcvtAZz>AOu5Y@e74YcfAI73Nw#-D;|8oIMq@?s>@~3zZ)U1&UB9 z36+XaCkb`4>tvxpSJog24GWD2WTEfQ=E^I9*ye_pEUy#*!m907NN)XsQi zp^m=QNJ7ob;Ej>1BT8+rRNEV?-LKRRNVNm8T9+)i4Wt%tc=^Ih7OL+SN!W75rnLx_ zdu>n_$`d48C1L9oD6u6Rqz1`(L>&sG62{3T_t2Lf7J!>X}oq zEp5>BBBU?6T%-t8*%4W2Pn2L|uAfuvy^_6Gu^*D`hh*V!qL#|*nk}7mUE3!MZHaQb zB-m%7ve2|bNtGm2&D2se#ii4}+9(Sxch;A`4n6sbfaJnuK@qk|!nP~V%7XpQw))wc zcj|7|#kO@|UsnK%<{gSqFA4PvJNL>$?;UHywZc?a&~>}5X?AqZ_UJV||K!pJa#D?q4jcnyI-_ceO57h7MGS$`)QO zRD^0tsGd0~3$1rHRb6jTY@L#=Q?c!rZ2SK?U+Hs6eJ-VMMCu!fZF=gZ{Evk7NnQ$X z)OzP-p`O-hQg2LMol@-kCHwxEy-%^bB)cnShrS_vpvTz_lKs~<;1nU|dcbdYRg|g7SXlENr zlq_^6N_I-Z&e={hb6v}uxhNAt12_Y6RD=#m=ve4{Ocn-og>911_HOOGdA@Ca>{dst z{g^Bq2Va@(R~k=9jVEGO#|lnUVVmhxs{5qszF5UU#4Dqm%Os&J-e=zc6FtH{SM1%A zy<4##l`%zTlc|!wCJP<9GVHXsvSz(=>)*s~)77AFLENlM#LddO zS&LG)TdLa~+e)M77K)9LCmz^}A&ThA(7e}0bc4CW^QAF+uPp4lvvtRp$>s1|>70As z7Nf)Rp>_FR%SAVmw9%;bmn`go8f|pYU|OTt4oEhf*C>U4eBB6L4S^#dJ`MCZIbQMo zZ1P8wvl%cs-r2bI^{>EigXyf`)x67jieQxl>r5F;X>@qJ3Y&B9#Sv|Lir%_3RYwOFxZwjfr~m3HXrh6%N2 zl`PaOW0tV}qOIv#6Y|9$M4c138Cgr?|kVzO!<9x%4>fD zggPV9xZ4i18=8NmXxBb_e$F;G3O#?Px^Z?SR^5XNSg9=RvG`0tZkj!3KI%ygewwlA*BedlF+))c0v{$%Q*B( zw%&Q~t#!8!-h%1w#Nvvpu@veXjaM7z%+#!~yxY5Iwa+{svv#6%{rZnj`cx%tQP?O6 zjc*OjbtS4EzzU@0W{WKJfDb&_LPF!gM)3iu z4oBEDD%WxRqmZ6o;ihrQ^N_a4)=9uET6m}gqZV$_>h$( zE9G$uYp{3j7nG5=1{wKZP)5NTWE6fu8AWT5QJh8wZo;KJ59ymFIthB;#Lc~w=OHDm zOCtd{GgF?2lu(*R0`Ahy^#bsf!=V2?k%bo*h!y?;w<*35B_@T>aRck;H`oF zqtBI0Mk3QaEiI#7zc1PhCpHx2-sP9?esA{UKfHeTFMpxt@godcdH0?7q4?epUtIkC zZ|K2j6zBJQS6^BB+nien7me6sYc9y{45e!6~>YipNGD zzxd0$Z~u7ly~|n!<@Zm&#lL7FR)Zcd{!Xjwp_MwkyYGMV?v0o0H`7h*C;UNQ=)#~s z0(;HK9ZqD~t}H#8pj(@R;>F0yd(7G{KkmlE?lPjQIlx%F_}I9%{Z4n8>83M1nWJ0% zu(?hdC+`^3-QoHS@;WF(`yq@m%W5TWV8LssVrA+kYtmNoe*sFk0@?ywt+<3cFq3zZ+v)R;mMI$4XlNqhE=k*3yPbIa%GcJx$Ac2uKA*c<7XE}$77WfvM@3{lm|I-VesZUI%Y4gbp$WCWCGhk_a#O%uW)MUzaXP`mpXA`c-WoxTq?YV93ncx56 zzJ;$o9kY65;Vh!i#kPU0^7qPPwto5Oz)zf6r`+17v^s9LIzHULFnn$yFdb`!4=u7X-m?oApO3YET^7FaXz-o~RbMb4 zMpfJTsisFV;QNAoAL2Hi+^|<^IC8t;$gSYQ(*Nh)j><@L*6oi0VOzo<`vrDL>pgQ=g*>9#0UCeLQgN>hVm4e9-{H1s>1&s5cO= zDfW2A{UjX0`yj!P$3w0lo7W&wH+t~Y8}6WZypag;k47V6*yFirq889%N*f|$g3Gip zM%V9}{v*Sanbq~@{+tb2qh<{kG3qDd(#5W+7i z?ZgfbGzm^71Oqg|PZzb2^Ewvw6BJEKFjC_B^K`I#vxxldmOi@ESKQ&RG0e7&D%GOz#Cav{?^YJP3}&n5~` G4gMQ%HbRU5 literal 0 HcmV?d00001 diff --git a/app/ui/image_tools/__pycache__/image_tool.cpython-313.pyc b/app/ui/image_tools/__pycache__/image_tool.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dec89382a3b3666d47f0223022802ebe9172c418 GIT binary patch literal 5916 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 A1ONa4 literal 0 HcmV?d00001 diff --git a/app/ui/image_tools/modify_date/__pycache__/modify_date.cpython-313.pyc b/app/ui/image_tools/modify_date/__pycache__/modify_date.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0834b3a9a6238d66755534d38cff3b1994b7aed4 GIT binary patch literal 30472 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 literal 0 HcmV?d00001 diff --git a/app/ui/image_tools/modify_date/__pycache__/modify_date_ui.cpython-313.pyc b/app/ui/image_tools/modify_date/__pycache__/modify_date_ui.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..119b9c6cfa447199fd547cfe5e3662be4914d8b1 GIT binary patch literal 21968 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 literal 0 HcmV?d00001 diff --git a/app/ui/memotrace_enhance/__pycache__/__init__.cpython-313.pyc b/app/ui/memotrace_enhance/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..63624d9ff3c1642fc796addc4b222fc9ad7c8de0 GIT binary patch literal 392 zcmYjN%}T>S5Z?SyL$J`3pm^A854K4t9)d`f)}vUWps+A3$=WVtcVm9g^a;Fr@F9F2 z4@$0HJyiMvZn2eq3^TJI-~8+>+ie$Ve018gZymo@j}6RqvfR_jD~eE#h!Gj#Eke{l zXlhQ)t~Gyghu2&%yhexvFBtTFzaMxw@I%kX?(nQCXDa_wggD}N6_uJE3(C{~x`Nl5 z_6CFD!$U7tLJKZEij`C_fH$;U{j8acLUL2EydaaRr1GB1DH*9pnJStTWHarmj(Eb33C%K6aUz&d zWlm!TOwOo`8QEH=aZZFvs+67Pj-H^8go;D$7M5WcKTgZA7ae5pKF{B+{ZHFjSjaxe HTUzi7eW`2G literal 0 HcmV?d00001 diff --git a/app/ui/memotrace_enhance/__pycache__/enhance.cpython-313.pyc b/app/ui/memotrace_enhance/__pycache__/enhance.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2a2ba3f65f9aa350d58fb98ec88f242a218629ba GIT binary patch literal 7119 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 M>bn;~lm);44<-zIasU7T literal 0 HcmV?d00001 diff --git a/app/ui/memotrace_enhance/__pycache__/enhance_ui.cpython-313.pyc b/app/ui/memotrace_enhance/__pycache__/enhance_ui.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..83f92e6ea3ce9634109ff3624c91b61c2957e51d GIT binary patch literal 16538 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 KLiS$X(1Krd7Hx?D literal 0 HcmV?d00001 diff --git a/app/ui/memotrace_enhance/toc/__pycache__/toc.cpython-313.pyc b/app/ui/memotrace_enhance/toc/__pycache__/toc.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..16ec5b9a9f6be58daf8599e64e86714a68bf8f9e GIT binary patch literal 17966 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 UUrBrNvW{lGX8*H=W+>nP17I4ElmGw# literal 0 HcmV?d00001 diff --git a/app/ui/pdf_tools/__pycache__/__init__.cpython-313.pyc b/app/ui/pdf_tools/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..617ffb2e29360fa04dc0330aa4c7fe341b930818 GIT binary patch literal 170 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 b4u1dOoN(#n{K+4G>kixSppjvl=ra628Jau_ literal 0 HcmV?d00001 diff --git a/app/ui/pdf_tools/__pycache__/pdf_tool_ui.cpython-313.pyc b/app/ui/pdf_tools/__pycache__/pdf_tool_ui.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c3f08b14f975c574d3602948a20bdd60fa8ccfa0 GIT binary patch literal 20066 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 E4J-vYn*aa+ literal 0 HcmV?d00001 diff --git a/app/ui/pdf_tools/merge/__pycache__/__init__.cpython-313.pyc b/app/ui/pdf_tools/merge/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f0a21ec4d0e1609ce952b81af848c8c5167135ad GIT binary patch literal 440 zcmYk2PfNov7{-&eo3(D@RZr2|4sPq5f<!iA3d4PYZiEDS~jZJ>W!*pRjnGbw(YH5WHt|yxG&@%VIzm# zC6udiJD|+}*F|io#3xv3$Lr9trGDd1jkrA8*9w9Gal6^yZ z(X#PPJ9yYIIKWnH*hlwJpcydqH-xhbsTbV`u((OyQlv%uxN}KLv1QH3 zdLbR0d(X!`_ulixC&6Fl(H>M#CxPN=Z^- zd2&fo3N<-hS%Kx)@bK8po6)Sc1Pteu!XCwwlD_ha_IkgpX7NhV5Oa!D(DKpZ3UE%y zdKN21L($amXgKhQ8XRGWH>KoNsSt4!-~1&dmzNDdCM-F^&tH^vUCPU#6IeY`F1%oniY>#xnx9LI?I*b6;)FrMzi03~$ke zZg4jk?6+oaI>Uh!+l4Tn@?as2US@FcB#QV*Xwp99xTYFdD?B<1YO^j&yA7y0^#A17 z0M0URqpS8hzy((teaC}PnyDHPMro9UmHLrJ`#5~{bOcVbkApkNk>n4qrCd*?@+jg? zl&Jl?cmA+@>leFkZtcE%>(T1^qdR{k-fJ4p$vEOA9=%kQG2ui}Q58cJiBFe}QZcQN z5FnQnHK#2vC`Lgh{%a+}&{TLe5(LuhwHtEQNJvXEyfUlHg+<~mN?2A6;upniLDF?m z)ag})!>c4cF`7y1GS)NmB|}mdB{iR!(3aJLCgt=@)x+jiQc6yKF(Va=nUazLzYq;g zE9jXe8RzB90SClQpq{kvf3s-yD93=PzYO5ZRrE0zT=$t=$L6seE?nV+p9<^3#=;KQ z1$de3Ho5M5&&77QK}rg(hsxYZlRLR}`9m)H1QejG<6#s>^g%5bxC^V)1>lh_!hVpX zJauElnX3%QIMKbAA{It%4X%F5%J!O_)diZp!*f8={{jHQtkT+1Zar%+}a;YkbY$Xzia( z9q;%*7TU`~&)2v9{P~$z~K7-BeKUJP9U{IeA}Zg9q%m&4o9OjU-dUD z+H3Jy)d{}epfuEEpqMm@j5UhO!}eiQE*0XVVQkX$S~sfpRdbKj0-4Bj^+=U1 zNh?m>=m!t9_Mo0vHTE zLN~=GhNt6%wq` z$7koRkmi~;NmVsNGGx+R<2aW{%r2Z;m?X_u$|>3_RvRQ*_K{GHYc4sJSlAYFSo<1Z;hW0*ag#q@=1-aYsWKli`A9`* z|J6vjJ7&U9h^@^W#uPQXqoxpbn0igVx6Ge5`O{^--{kupO>wh3ZVK_knFh@6f%l#- z$EQsAbx)bX)cQ;%*jx^tGJ~he!9g=PSPl-E!68Q}FBMr_f)#S{;A({B=8t{`~jqz1;*ypt6(}x< z;?0s&a41cpxTs*=pw(N|L=n?AjIh_Bw}nu6&Hh*-Zr#At6O}?Psg(>F+v}KSNUH$j zQ7YC3Z8dnPk`*PxzzTHbGIZJ`=rr9~xlj5*PrhsN>{Tl$jyoEk$ zYTL;D=zFUdKI%BJssEC{$F_aJvYvs@g^;K7i*Tn0P7J_0u_a8;3!jgwC?+C7;uFQ3 zmWACzPU{|>H^wzA+XrlZx@dm{>X@ZQ&~oH7HpLa|^Un_27ohKtmXv6%?~hu2e{_G} zFP0QcTU^T=O#6HM5(TuHJ5lkH{SIgGMOdR(pi_>=ZiZn#<-830c?dCm|3YU>bmkwZ na~GZc%sa#cHZE-{pCLdV7Z}6}Yj143J1Z>r*p1jOOZ$HTdO(LL literal 0 HcmV?d00001 diff --git a/app/ui/pdf_tools/merge/__pycache__/encrypt_dialog_ui.cpython-313.pyc b/app/ui/pdf_tools/merge/__pycache__/encrypt_dialog_ui.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b50d3f6c6f0e56a5bb24f4a09c85235a2a967197 GIT binary patch literal 14893 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 literal 0 HcmV?d00001 diff --git a/app/ui/pdf_tools/merge/__pycache__/merge.cpython-313.pyc b/app/ui/pdf_tools/merge/__pycache__/merge.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..41b928faa73c3c181e4d0f0416ce784800396e9c GIT binary patch literal 22261 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 b`SqQXj#E#ceEOS13+j?v<&3(N&ddJ+P6Hg` literal 0 HcmV?d00001 diff --git a/app/ui/pdf_tools/merge/__pycache__/merge_ui.cpython-313.pyc b/app/ui/pdf_tools/merge/__pycache__/merge_ui.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dbcfa10d8f7b39ea2a7aa8b33885548f68d75e81 GIT binary patch literal 25346 zcmeG_TXa*`mGb-gfzA72V~}NASjINC@l(bGY;ZsjK$1-!cB0CbY%9o;Ig$e;DU)fZ z2{g1#n@LNWt`-_rF@1pBl_pM`WU*$=M?Q6tx^9*hAG2m`z&|srAzl6K?0v3|&Xs%= z8-+Bha zbe0T~VaX(!mMoHG$tKyB9Fk+nCApS7l4p^KWXUJ_mI6{>DI|rKB2uKse3^$2jh0PhlckiDTFOY7Wi#1q zDJSKWPS&92*g7txvdv&ZEQ6yGMeM8Uu2z$NU~&5Hi{@J;!SIyy%9A z=FPSa5N|Zo8Z@np=30BmRA3z9Ucc8*C~qII^*&CVE{_{X@`vpSo?|77Z~-E2~#nU)@mo;+B@zZInm=k4bt@bCx-n9 z=34uR6Esx_0(xABooD=0L3lX;-(oMh*2B(Ww-+*@X!~8BAP_!A{A0u&2=q7!U>^hB z^h^bVP^?0#!()D^lr#7;=^SyBgF*KMyd395^Q=#LTx0Iwh+4C1m=Swq{ko zMI%e&@sbox9G5}%BA!drK7^WKn9ye876m$l)}H(m**X}+W1E@740`w+tS9zm4P@E6866%c^qE<<$M_cpC1LDk={yFF ziS*FRF&M;Z*|wjh@R)t$no2biH-X%o5^s4-HmLn7#v7zNz+fIP z!#YK|MAo@VBgrAgVM*(Z_dtMonC0TJ&^lLhPGBYC8Wz!d6g4cOyL1hUbSSQ20exQD z!R7098`B}^^$3G`EY#~7&MBo{MYJA;UPW{trCtT}HKi5z+*YnH28mk{r!;71nD({y zbxZVr{S24KOXLvrvCKO`Ti?#;fRv&>twlsv)LJz2mK3$(U^?XS zpp(J&4d6{Dc$^@c$nwQ~tw4*Ml4fqT z)Hs&8TO3p+yM`1l8x=UM+C|7#cBcha^^@u2aRn{Zm z&Fl0btS3G@1MBf|t6`APdNy-TDXm9D>rq&bi0;zXBg&PY^@u2?XFVcHUzPO;cx&oZ zyuu+K%?i9Fr=(diTgnH|2)1Rn2gD{19tiBI!kI zUR#%xqk{8ikVX!|(s*nOa+pC0TxwY=k8R?yji3|>lnOWn2Bn}RSl#5522Ziv32Umm z;;A~@X$JFHXbpN!6|6y&OJofdJQrV`6X$1`FjtAMECJ?=TrLJJV^u_yD~sjlvE9J9 z(v?S1uK2u3ldBTe9pT63b}&2A&in_)$oKocaHmAU#!SBQ&K0|ty zrSaHyj>8OM{8&uu{uTC>$F|ow%plEt>;g;UaRNn=&5Nz+6;6RcoYFtkn&Kmrhq9*c zvr_O_Q=a8pQ+)LhxWB<^F-T}l+c>8bGK=d#KtF-f^8Lma^it5Dy~(6c@EewRs?PSW z4Cb-0q%{fhiE{mfQ(#cSE`fN*R;(WZea@eIAhsj`{qbSO6YAk2gLy10lZn$zkxS$? zaJQ<`Ua9dK?=U_Zd5*9&p!_oi^H}KnY7^uU+EVbnF71x{Q6@8# z*zQY)p_-l7-&bY;coPXf*F-Rz9 zSDJDP=&QA!pwB-t-U;n!FrKQjz0Y7C+v4TmY1(seP`XE#OEh}em8MPvQc+KxXk%jE zGQ`RXrJH3ikA-#Dou-@u`XJ}lq_!Y#v(GY_K+Zogn8!jncc&?*fIi5HV;@Z)2y%$V zw(&6qmklrlej-6O(HuieNx(CK(#M=HgLoT&5!)v$)pnCXJT}0IQBG}4XL{^Nv^eqn zswV)uqn=R+qHypPvPM_F;3h#lX{?^cb?l7hdGR=|qhnzueD9Cuj^g>tGh2H%p-7++)Y$GN-O}!(alXQ3{};_uovo9D-x^5CaA4gIi>Ln0kGz;e+{^P%Vc&f#7jCNe`_KH5qGoi)_xUkGBJs z!)*4zG5=V;2`3rz_+mW^>u#9Jc&`$ptKq9siMM>(@Z#3Mxk7E-`{i#IUO7KE`@1_o zdH?QD|K;AdFWh89 z^iVOg!7jC}xlXVCSnsx2&IMr~-n@Wk{-dkM{lxPkbQ+q@ea%Shj)p^(&f)ZWqs56n zAi82W=yTAn)Zy`sXkT6Kz(NhsURa9^a;T?RXa?Bx_rL#L$6QDAf(t*#97)`xv_x~U zl{-3KtcdA?RoLS8vVf};(Y#ai5=Yb2k8*Xo%Ge9K4~-^N@6!oh0KGvY=!z*d!TZD$ z)fSql>gJYK=n+<8=q3g_sh6i`hcPyrSJPsPr{M{ws%bvSFbWVTB3P?jyIYKp0bYSA0zHjHzA-G)K{!XsCrU}-)W-r zG?tUr2iDGBobFG6u1GPW6w>!zI{PQRkV5uj(1!t@6o}@im6CG+wNC0V{U8Pw3~)bK zAZIhdjoD~Euv2fQlhycMsJ^HKS5q^Aavp%<#_q3UO{&V+=OHjZ!i)8Vhhc)+@3-OD zT)=84If{a8!vMRjs01{QJH1nGg3D~A5(7I1{TLj_0Cx$vxO^dFs zH-OIY(?;MP_;0X_S9G71lq)4Qa!HL+QY)9#epXbf6xGN@H6fEZQq=XCv|f?QWvTq) z$fcbTX&Zg7lBKFk_K0MQ{GjMOWHiW<;gUHbHQX*)`}(PK*)-=SS=w~bpwdRPH~J$| zX*|njS=xLNQVjpWId7AtZPVE|imnw!q}I9hn=d{WUS9`{3NcsV`9ejikfn-CrifIR zkaAzwU77v4t~)>H{>vG<{1qJcit%dg<=Ti;AIC>gue4q5zT6#=n&PQ?S<+vEGFPHf z_T4yi?NC_X@olMA}Mmw#w30MXHsh+UX`$ zGDT9;>Sd`u)X*D|_T8?mo9@3ccx^CT*@-#zG$%@_NDZ>o5ZbXnBK6%~r@vCBRP2;1 zb}AKJaz)oigG%>Nx%;Tn{iNLeWO&_E=L$ZPRx1)!Y(_+?rEk@;RDH=Ak!t80wTFJC zx?8U9R;mxk)d#}W7NvSft{w_kKNpc4Nvx+|j7Vl$X{yjBSu#ymDYZRvZBIn%o!er1 zX97hoqxs5YsZ5cKvShq;5^PSBhWSFZU8tY(n(4JS%C41#%Udxg8i^v6%2KInj3HAe zuuKrPU9N6ds(a+>o^bU(rTVyBeLP(KR783@DeH7;L~5bJs)Ep>yA)%GZ0v|gopb*% z&i8Y{PFcM(6?V(DV3oV)4E58)Glut0C~XJiwgXC=O>VPA`W;IDsN6rQ^!wy~U)bQM z7Nw~Owe=`9kI6OIQ0LZ_UEKGJLvJ4nud9JJ1cp%bgM#w~ibQRFBN)T&^%YmPD~1-? z(4rW2%ZA2o2t>P&tHCCF?PwuuCTFN zF&>qTN5e*IM6xAvEsM28DhIaZE7jAP(|g~oi%2`-nDO)jVMA*~YKwnBd%Kc(wfJ%| zplb@Qs_#baHE8IqbI?DzesSXM6X6ZD;y#KNDJHh}vR5&7%f{}o@iE0{m5tW05&Fh{ zl0k*`48vDSyKG1fU|^L7J%r~em&Zx4poo0j2wLWaJG^f*>Fbx=#VmpC3Z3ggwf z%XMl41k0tSp%v*y;k82Oz68R?zRYdda`9|C@*Sui^_5aKFOi%*WZ8ghM^Gq{1Im0Y?lRdYAX7I+#*Io`+?n>>m7Bv9wIiTAc znQ4CSC8hnK+GG5M6zp8(4W7z`hzXM-vY%H6yPzrmiD-hrT}HeOTnuz zUw%1U)`Df-NCnv_OB-Wd?^);*1wxqRS{Q+KiL50ypeoxoT^ufJPf1k62+i{nj9sc0 z8KqLwA=gmfDH_%A5ey}!ju5DwG|f0?SI>fC_uMY6eg}t-C4lmSlJh08;bU_|GR9MA z_dEf{A5WpowcgCQ*>n@k^#Jy`sRy!2xv`() zgRr5PJE1A4fh+Fmo|%kyy%A|=0_J^Pu`%m&U2%T)eLW6$sS?#r+0@d%&77$ROMS_X^SG&$x>aYelK9eDKM3H$c7Fz|4oo)|CdtRM(pc0 zVqdocm9gSH44=^FUOE(!8k0C*t-oBa8Gz3jaHg}kr{mU|lwUD)%7)I_rdj9BRX3qz zeRE&l++alioS?mrh%XqOG`v#V4o zVE!T)-rm@8Z3hhF1^rXp^~S#8$p7MQ7@*GK;L~^u<_>57BDFn$X>a0RZj&GZ7wR5V z!ER})zuY#68?5xP;o@D=1Ajs=1O6VHj{N~ae)C!AiP6`gVK$Y~Q$ssod2Rz1<^rXolF9io&_)2=x^w#xzJ!x_%Ou?Zvi9Ecf$)P9(hs}?S!-^CfwmdQp#VI)G9~p;| z6dZ8XKj}%c9#*E{fJ^^LPnsN7rQm>T#7R$@99E~`fSUwKPnsOoq~L&?4M|U$9M-1b zfLjGgPnsOorQpzzL>^vkxVoP7*w-(^k8aTLi1~GThjh6-HZFt5rW8EzkW|u>rlv|Y z9ANtvA6g3Bpi6qv8iKhJ;n(w!f_HuvZEDe}GRpWOZUI{h~P&L?-z zzc&B#*HM%eaVDxjW=+c7cdpNW{FYhG^wBHxS6^2PLQ&?gpP&EEv`W_eVs-=Ux6rcQ zd+pcr*MB8>3M333GDB_Gdusr1(grM8$gL9)DKkt zfBOLcsVbminab#%-jg05?1}b!f?hX4T}JccJ5Y2lmhScR!{J_a<1@b7NOujBclmG+ zkM7s0J86P#GT~Mj?t;PIl{<*rk(5__OU#r>-bA9<7V%Iy>}Zi6W5N$1h;CiH{gkkS z_AVH1;9V#dY(n8S6V6v7#x}*c=az9#Xs+QT?sqid(Q=@TihSIXOO zmA8jF4umY@q33b+&^4ejd>9e0PuPJ~S`5uTuE>fQiO zYa*39mCEj0mEED;M?%M*4h=fOmEVX+&gG-2i{eNzQnp`8l)WXS7;8fUjIwGB+#Z%X>7AxKtnhb`GQxWL} zil#0dp=Ki$O|VaNtD-Bk>+q-kkYglV;fhFZilr`};8J>|)~wX-yH&d{w0|JOA;qd#L}Z@Rp||(lfMp>Pi%Dkwj`bl$xGfH9etTduZT= z(CL@MHQ$U#XDM1LEs#*~bh!3RM0$~;sb-1`AJf)I;~u5aa;wo2Iy4x1_NDte-Pw$u zOqi@T^=5vq)8+5WTq4U^$g($cKh4rdvpk*&^J{fkOx-AqZ0}OG@4vNuf2i+x=&6a2 zKM>v?j7U?Iaw;PPMSa3Dc2*Z{u(I>=Xb z|C@OrH>drt$BQ=QoXAjd5#xwyN3=M$v)^Eavn@pJ=1DeuBzQ!CpfjaM4G1n(5S-Z) zobuCi9|WB!K_{o4@mRrWJwD|j$eZBIm#o47XQ=e>4q1!PIt*~eM^I3LGc&RY1Drt- zyxL1}rbEgxz!^z&6(T2Z(dw}c9PHA=IrIdK zdd{d0(xSQQ86~PU@+-tbbEE2vO1sor+D(1~Y2Y$+0j&M|Ss57_e_NlKvH5R07CfL( lZdOLi-*gGV1NtguWt8FvP4IbvJ2&G*#>L#f>L@_@{vTP&r3L^1 literal 0 HcmV?d00001 diff --git a/app/ui/pdf_tools/merge/merge.py b/app/ui/pdf_tools/merge/merge.py index b2d525f..ceab111 100644 --- a/app/ui/pdf_tools/merge/merge.py +++ b/app/ui/pdf_tools/merge/merge.py @@ -144,6 +144,15 @@ def open_file_dialog(self): elided_text = font_metrics.elidedText(self.output_dir, Qt.ElideRight, self.label_output_dir.width() - 10) self.label_output_dir.setText(elided_text) self.label_output_dir.setToolTip(self.output_dir) + + # 输出文件名格式:使用第一个文件的名称作为基础 + if files: + first_file = files[0] + filename = os.path.basename(first_file) + filename_without_ext = os.path.splitext(filename)[0] + new_filename = f"{filename_without_ext}_合并文件" + self.output_filename = new_filename + self.lineEdit_filename.setText(new_filename) def merge(self): input_files = self.list_view.get_data() diff --git a/app/ui/pdf_tools/pdf_tool.py b/app/ui/pdf_tools/pdf_tool.py index acacc42..f073aa9 100644 --- a/app/ui/pdf_tools/pdf_tool.py +++ b/app/ui/pdf_tools/pdf_tool.py @@ -31,9 +31,9 @@ def __init__(self, router: Router, parent=None): self.setCursorTimeout(100) self.commandLinkButton_merge_pdf.clicked.connect(self.merge_pdf) - self.commandLinkButton_split_pdf.clicked.connect(globalSignals.not_support) - self.commandLinkButton_encrypt.clicked.connect(globalSignals.not_support) - self.commandLinkButton_decrypt.clicked.connect(globalSignals.not_support) + self.commandLinkButton_split_pdf.clicked.connect(self.split_pdf) + self.commandLinkButton_encrypt.clicked.connect(self.encrypt_pdf) + self.commandLinkButton_decrypt.clicked.connect(self.decrypt_pdf) self.commandLinkButton_delete_blank_pages.clicked.connect(globalSignals.not_support) self.commandLinkButton_add_watermark.clicked.connect(globalSignals.not_support) @@ -62,6 +62,51 @@ def merge_pdf(self): else: self.router.navigate(self.merge_view.router_path) + def split_pdf(self): + from app.ui.pdf_tools.split.split import SplitControl + if not hasattr(self, 'split_view') or not self.split_view: + self.split_view = SplitControl(router=self.router, parent=self if self.parent() else None) + self.split_view.okSignal.connect(self.split_finish) + self.router.add_route(self.split_view.router_path, self.split_view) + self.child_routes[self.split_view.router_path] = 0 + self.childRouterSignal.emit(self.split_view.router_path) + self.router.navigate(self.split_view.router_path) + else: + self.router.navigate(self.split_view.router_path) + + def encrypt_pdf(self): + from app.ui.pdf_tools.security.encrypt import EncryptControl + if not hasattr(self, 'encrypt_view') or not self.encrypt_view: + self.encrypt_view = EncryptControl(router=self.router, parent=self if self.parent() else None) + self.encrypt_view.okSignal.connect(self.encrypt_finish) + self.router.add_route(self.encrypt_view.router_path, self.encrypt_view) + self.child_routes[self.encrypt_view.router_path] = 0 + self.childRouterSignal.emit(self.encrypt_view.router_path) + self.router.navigate(self.encrypt_view.router_path) + else: + self.router.navigate(self.encrypt_view.router_path) + + def decrypt_pdf(self): + from app.ui.pdf_tools.security.decrypt import DecryptControl + if not hasattr(self, 'decrypt_view') or not self.decrypt_view: + self.decrypt_view = DecryptControl(router=self.router, parent=self if self.parent() else None) + self.decrypt_view.okSignal.connect(self.decrypt_finish) + self.router.add_route(self.decrypt_view.router_path, self.decrypt_view) + self.child_routes[self.decrypt_view.router_path] = 0 + self.childRouterSignal.emit(self.decrypt_view.router_path) + self.router.navigate(self.decrypt_view.router_path) + else: + self.router.navigate(self.decrypt_view.router_path) + + def encrypt_finish(self): + self.encrypt_view = None + + def decrypt_finish(self): + self.decrypt_view = None + + def split_finish(self): + self.split_view = None + def merge_finish(self): self.merge_view = None diff --git a/app/ui/pdf_tools/security/__init__.py b/app/ui/pdf_tools/security/__init__.py new file mode 100644 index 0000000..cca4f20 --- /dev/null +++ b/app/ui/pdf_tools/security/__init__.py @@ -0,0 +1,4 @@ +# PDF加密解密功能模块 +""" +包含PDF加密和解密相关功能 +""" \ No newline at end of file diff --git a/app/ui/pdf_tools/security/__pycache__/__init__.cpython-313.pyc b/app/ui/pdf_tools/security/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f48ae8aa62acfcc4b9d093d84f834326b8b0d0ef GIT binary patch literal 235 zcmey&%ge<81pBl_GW>w_V-N=h7@>^M96-iYhG2#whIB?vrcyN^m+NUy>(dFV16$kW-*Bc1u>smY~9nI)Am@$s2?nI-Y@dIgoYIBatBQ%ZAE?TXldW`kT^4D!?mW=2NFPb^G~ JEJZ9pE&%vTO|Jj| literal 0 HcmV?d00001 diff --git a/app/ui/pdf_tools/security/__pycache__/decrypt.cpython-313.pyc b/app/ui/pdf_tools/security/__pycache__/decrypt.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..715e03e26b043fcea6a76b35f41021c92df90d12 GIT binary patch literal 51661 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 Py2>K)L7ag_3LF{$#~XeH literal 0 HcmV?d00001 diff --git a/app/ui/pdf_tools/security/__pycache__/decrypt_ui.cpython-313.pyc b/app/ui/pdf_tools/security/__pycache__/decrypt_ui.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c174c212ff543c3e28cbfff2d217b5807c110cf0 GIT binary patch literal 11782 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 E7sej)s{jB1 literal 0 HcmV?d00001 diff --git a/app/ui/pdf_tools/security/__pycache__/encrypt.cpython-313.pyc b/app/ui/pdf_tools/security/__pycache__/encrypt.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8f9c16d5365e8ad38950bc218558e2620579eb68 GIT binary patch literal 27298 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安装John the Ripper的步骤" + "

1. Windows系统:

" + "" + "

2. Linux系统:

" + "
    " + "
  • Ubuntu/Debian: sudo apt-get install john
  • " + "
  • Fedora: sudo dnf install john
  • " + "
  • Arch Linux: sudo pacman -S john
  • " + "
" + "

3. macOS系统:

" + "
    " + "
  • 使用Homebrew: brew install john
  • " + "
" + "

验证安装:

" + "
    " + "
  • 打开命令行或终端
  • " + "
  • 输入john --version命令
  • " + "
  • 如果显示版本信息,则安装成功
  • " + "
" + "

注意事项:

" + "
    " + "
  • 命令安装:pip install pdf2john" + "
" + ) + + layout.addWidget(info_label) + + # 检查安装状态按钮 + check_btn = QPushButton("检查安装状态") + check_btn.clicked.connect(self.verify_installation) + layout.addWidget(check_btn) + + # 关闭按钮 + close_btn = QPushButton("关闭") + close_btn.clicked.connect(dialog.accept) + layout.addWidget(close_btn) + + dialog.setLayout(layout) + dialog.exec_() + + def verify_installation(self): + """验证工具安装状态""" + # 检查John the Ripper + john_installed = False + pdf2john_installed = False + + try: + john_process = subprocess.Popen( + ["john", "--version"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE + ) + stdout, _ = john_process.communicate() + john_installed = john_process.returncode == 0 + john_version = stdout.decode('utf-8', errors='ignore').strip() if john_installed else "未安装" + except: + john_version = "未安装" + + try: + pdf2john_process = subprocess.Popen( + ["where", "pdf2john"] if os.name == "nt" else ["which", "pdf2john"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE + ) + pdf2john_process.communicate() + pdf2john_installed = pdf2john_process.returncode == 0 + except: + pass + + if not pdf2john_installed: + try: + pdf2john_process = subprocess.Popen( + ["where", "pdf2john.py"] if os.name == "nt" else ["which", "pdf2john.py"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE + ) + pdf2john_process.communicate() + pdf2john_installed = pdf2john_process.returncode == 0 + except: + pass + + # 显示安装状态 + status_message = f"John the Ripper: {'已安装 - ' + john_version if john_installed else '未安装'}\n" + status_message += f"pdf2john: {'已安装' if pdf2john_installed else '未安装'}\n\n" + + if john_installed and pdf2john_installed: + status_message += "所有必要工具已安装,可以使用密码破解功能。" + else: + status_message += "部分工具未安装,密码破解功能可能无法正常工作。请按照安装指南进行安装。" + + QMessageBox.information(self, "安装状态", status_message) + + +class DecryptThread(QThread): + okSignal = Signal(tuple) # (success, message) + progressSignal = Signal(int) + + def __init__(self, input_file, output_path, owner_password="", user_password="", + use_force_decrypt=False, use_crack_decrypt=False, crack_settings=None): + super().__init__() + self.input_file = input_file + self.output_path = output_path + self.owner_password = owner_password + self.user_password = user_password + self.use_force_decrypt = use_force_decrypt + self.use_crack_decrypt = use_crack_decrypt + self.crack_settings = crack_settings or {} + + def run(self): + if self.use_crack_decrypt: + # 使用密码破解工具尝试破解密码 + return self.run_crack_decrypt() + elif self.use_force_decrypt: + # 使用PyPDF2尝试无密码解密 + return self.run_force_decrypt() + else: + # 使用PyMuPDF带密码解密 + return self.run_normal_decrypt() + + def run_crack_decrypt(self): + """使用密码破解工具尝试破解PDF密码""" + try: + self.progressSignal.emit(10) + logger.info("开始尝试破解PDF密码") + + # 确认PDF是否加密 + try: + with fitz.open(self.input_file.file_path) as pdf: + if not pdf.is_encrypted: + self.okSignal.emit((False, "PDF文件未加密,无需解密")) + return + except Exception as e: + logger.error(f"检查PDF加密状态失败: {str(e)}") + + # 准备临时文件 + temp_dir = tempfile.mkdtemp() + hash_file = os.path.join(temp_dir, "pdf_hash.txt") + + # 第1步:提取PDF密码哈希 + self.progressSignal.emit(20) + try: + # 检查是否安装了pdf2john工具 + pdf2john_installed = self.check_tool_installed("pdf2john") + if not pdf2john_installed: + pdf2john_installed = self.check_tool_installed("pdf2john.py") + + if not pdf2john_installed: + logger.error("未找到pdf2john工具,无法提取密码哈希") + self.okSignal.emit((False, "未找到pdf2john工具,请安装John the Ripper")) + return + + # 使用pdf2john提取哈希 + extract_cmd = ["pdf2john", self.input_file.file_path] + if not self.check_tool_installed("pdf2john"): + extract_cmd = ["python", "pdf2john.py", self.input_file.file_path] + + process = subprocess.Popen(extract_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + stdout, stderr = process.communicate() + + if process.returncode != 0: + logger.error(f"提取PDF哈希失败: {stderr.decode('utf-8', errors='ignore')}") + self.okSignal.emit((False, "提取PDF哈希失败,无法进行破解")) + return + + # 保存哈希到文件 + with open(hash_file, 'wb') as f: + f.write(stdout) + + logger.info("成功提取PDF密码哈希") + except Exception as e: + logger.error(f"提取PDF哈希过程中发生错误: {str(e)}") + + # 尝试模拟pdf2john的输出 + try: + pdf_name = os.path.basename(self.input_file.file_path) + hash_output = f"{pdf_name}:$pdf$X*X*XX*X*X*X*X*X*X*X*X*X*X*X*X*X*X" + with open(hash_file, 'w') as f: + f.write(hash_output) + logger.info("使用模拟哈希代替") + except: + self.okSignal.emit((False, f"提取PDF哈希失败: {str(e)}")) + return + + # 第2步:使用John the Ripper破解密码 + self.progressSignal.emit(30) + password = None + + try: + # 检查是否安装了John the Ripper + if not self.check_tool_installed("john"): + logger.error("未找到John the Ripper工具") + self.okSignal.emit((False, "未找到John the Ripper工具,请先安装")) + return + + # 根据破解模式生成命令 + crack_cmd = ["john"] + + if self.crack_settings.get("mode") == "dictionary": + # 字典模式 + dict_path = self.crack_settings.get("dict_path", "") + if os.path.exists(dict_path): + crack_cmd.extend(["--wordlist", dict_path]) + else: + # 使用默认字典 + crack_cmd.append("--wordlist=password.lst") + else: + # 暴力破解模式 + min_len = self.crack_settings.get("min_length", 4) + max_len = self.crack_settings.get("max_length", 8) + charset = self.crack_settings.get("charset", "digits") + + # 根据字符集构建参数 + charset_arg = "" + if charset == "digits": + charset_arg = "0123456789" + elif charset == "lowercase": + charset_arg = "abcdefghijklmnopqrstuvwxyz" + elif charset == "uppercase": + charset_arg = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + else: # all + charset_arg = "?a" # John的所有字符集 + + crack_cmd.extend([ + "--incremental", + f"--min-length={min_len}", + f"--max-length={max_len}" + ]) + + if charset != "all": + crack_cmd.append(f"--mask=?{charset_arg}") + + # 设置破解超时时间 + timeout = self.crack_settings.get("timeout", 60) + crack_cmd.extend(["--max-run-time", str(timeout)]) + + # 添加哈希文件路径 + crack_cmd.append(hash_file) + + # 执行破解命令 + logger.info(f"开始执行破解命令: {' '.join(crack_cmd)}") + process = subprocess.Popen(crack_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + + # 等待破解完成 + for i in range(40, 80): + if process.poll() is not None: + break + self.progressSignal.emit(i) + self.msleep(1000) # 每秒更新一次进度 + + # 确保进程结束 + try: + process.terminate() + except: + pass + + # 获取破解结果 + show_cmd = ["john", "--show", hash_file] + show_process = subprocess.Popen(show_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + stdout, stderr = show_process.communicate() + + # 解析输出获取密码 + output = stdout.decode('utf-8', errors='ignore') + for line in output.splitlines(): + if ":" in line: + parts = line.split(":") + if len(parts) >= 2: + password = parts[1].strip() + break + + if password: + logger.info(f"成功破解PDF密码: {password}") + else: + logger.info("在指定时间内未能破解出密码") + except Exception as e: + logger.error(f"密码破解过程中发生错误: {str(e)}") + + # 第3步:使用破解的密码或尝试其他方法解密PDF + self.progressSignal.emit(85) + + if password: + # 使用破解的密码进行解密 + try: + with fitz.open(self.input_file.file_path) as pdf: + if pdf.authenticate(password): + pdf.save(self.output_path) + self.progressSignal.emit(100) + self.okSignal.emit((True, f"{os.path.dirname(self.output_path)}\n成功破解密码: {password}")) + return + else: + logger.error("破解的密码验证失败") + except Exception as e: + logger.error(f"使用破解密码解密失败: {str(e)}") + + # 如果破解失败或解密失败,尝试无密码解密方法 + logger.info("破解未成功,尝试备用解密方法") + return self.run_force_decrypt() + + except Exception as e: + logger.error(f"PDF破解错误: {str(e)}") + self.okSignal.emit((False, f"PDF破解失败: {str(e)}")) + + def check_tool_installed(self, tool_name): + """检查是否安装了指定工具""" + try: + if tool_name in ["pdf2john.py", "pdf2john"]: + # 特殊处理pdf2john + process = subprocess.Popen( + ["where", tool_name] if os.name == "nt" else ["which", tool_name], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE + ) + process.communicate() + return process.returncode == 0 + else: + # 一般工具检查 + subprocess.run( + [tool_name, "--version"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + check=False + ) + return True + except: + return False + + def run_normal_decrypt(self): + try: + # 打开输入PDF + pdf_document = fitz.open(self.input_file.file_path) + + # 如果PDF不是加密的,直接返回错误 + if not pdf_document.is_encrypted: + pdf_document.close() + self.okSignal.emit((False, "PDF文件未加密,无需解密")) + return + + # 设置进度信号 + self.progressSignal.emit(30) + + # 尝试使用所有者密码解密 + auth_success = False + error_message = "解密失败: 密码错误或权限不足" + + if self.owner_password: + try: + auth_success = pdf_document.authenticate(self.owner_password) + except Exception as e: + logger.error(f"使用所有者密码解密失败: {str(e)}") + + # 如果所有者密码解密失败,尝试使用用户密码 + if not auth_success and self.user_password: + try: + auth_success = pdf_document.authenticate(self.user_password) + except Exception as e: + logger.error(f"使用用户密码解密失败: {str(e)}") + + if not auth_success: + pdf_document.close() + self.okSignal.emit((False, error_message)) + return + + # 确认是否已获取足够权限 + if not pdf_document.metadata: + pdf_document.close() + self.okSignal.emit((False, "密码正确,但权限不足,无法解密")) + return + + # 设置进度信号 + self.progressSignal.emit(60) + + # 保存为无加密的副本 + pdf_document.save(self.output_path) + + self.progressSignal.emit(100) + pdf_document.close() + + # 记录成功使用的密码 + password_used = self.owner_password if auth_success else self.user_password + success_message = os.path.dirname(self.output_path) + if password_used: + success_message += f"\n使用密码: {password_used} 成功解密" + + self.okSignal.emit((True, success_message)) + + except Exception as e: + logger.error(f"PDF解密错误: {str(e)}") + self.okSignal.emit((False, str(e))) + + def run_force_decrypt(self): + try: + self.progressSignal.emit(20) + + # 打开加密的PDF文件 + with open(self.input_file.file_path, "rb") as infile: + # 使用strict=False参数提高兼容性 + reader = PdfReader(infile, strict=False) + + # 检查文件是否加密 + if not reader.is_encrypted: + self.okSignal.emit((False, "PDF文件未加密,无需解密")) + return + + self.progressSignal.emit(40) + + # 尝试方法1: 使用空密码解密 + decrypt_success = False + try: + # 尝试解密 + decrypt_result = reader.decrypt("") + if decrypt_result > 0: + decrypt_success = True + logger.info("使用空密码成功解密PDF") + except Exception as e: + logger.error(f"使用空密码解密失败: {str(e)}") + + # 创建一个新的PDF写入器 + writer = PdfWriter() + + # 尝试方法2: 如果标准方法失败,尝试其他方式 + if not decrypt_success: + try: + # 尝试直接修改加密标志 + reader._decrypt = lambda *args: 1 # 覆盖解密方法 + reader.is_encrypted = False # 强制设置为未加密 + decrypt_success = True + logger.info("使用标志修改方法解密PDF") + except Exception as e: + logger.error(f"使用标志修改解密失败: {str(e)}") + + self.progressSignal.emit(60) + + # 方法3: 使用append_pages_from_reader方法添加所有页面 + pages_added = 0 + try: + # 尝试批量添加所有页面 + writer.append_pages_from_reader(reader) + # 计算成功添加的页数 + pages_added = len(writer.pages) + logger.info(f"成功批量添加{pages_added}页") + except Exception as e: + logger.error(f"批量添加页面失败: {str(e)}") + + # 方法4: 如果批量添加失败,尝试逐页添加 + if pages_added == 0: + try: + total_pages = len(reader.pages) + for page_num in range(total_pages): + try: + page = reader.pages[page_num] + writer.add_page(page) + pages_added += 1 + except Exception as page_e: + logger.error(f"处理第{page_num+1}页时出错: {str(page_e)}") + continue + except Exception as pages_e: + logger.error(f"逐页添加失败: {str(pages_e)}") + + self.progressSignal.emit(80) + + # 检查是否成功添加了页面 + if pages_added == 0: + # 最后尝试方法5: 使用另一种打开方式 + try: + infile.seek(0) # 重置文件指针位置 + reader = PdfReader(infile, strict=False) + writer = PdfWriter() + # 不考虑加密状态,直接批量添加 + writer.append_pages_from_reader(reader) + pages_added = len(writer.pages) + except: + pass + + if pages_added == 0: + self.okSignal.emit((False, "无密码解密失败,未能提取任何页面")) + return + + # 保存解密后的PDF + with open(self.output_path, "wb") as outfile: + writer.write(outfile) + + self.progressSignal.emit(100) + + # 检查是否解密结果完整 + try: + total_pages = len(reader.pages) + if pages_added < total_pages: + self.okSignal.emit((True, f"{os.path.dirname(self.output_path)} (部分页面解密可能不完整)")) + else: + self.okSignal.emit((True, os.path.dirname(self.output_path))) + except: + # 无法确定原始页数,只返回成功信息 + self.okSignal.emit((True, os.path.dirname(self.output_path))) + + except Exception as e: + logger.error(f"无密码解密错误: {str(e)}") + + # 尝试备用方法 - 使用参考代码的逻辑 + try: + self.progressSignal.emit(25) + logger.info("尝试使用备用解密方法...") + + # 重新打开文件 + with open(self.input_file.file_path, "rb") as input_file: + # 使用strict=False参数 + reader = PdfReader(input_file, strict=False) + + # 尝试解密 + if reader.is_encrypted: + reader.decrypt("") + + # 创建写入器并添加所有页面 + writer = PdfWriter() + writer.append_pages_from_reader(reader) + + # 保存文件 + with open(self.output_path, "wb") as output_file: + writer.write(output_file) + + self.progressSignal.emit(100) + self.okSignal.emit((True, os.path.dirname(self.output_path))) + return + except Exception as backup_e: + logger.error(f"备用解密方法失败: {str(backup_e)}") + + # 如果所有方法都失败,返回原始错误 + self.okSignal.emit((False, f"无密码解密失败: {str(e)}")) + + +if __name__ == '__main__': + from PySide6.QtWidgets import QApplication + import sys + from PySide6.QtGui import QFont + + app = QApplication(sys.argv) + font = QFont('微软雅黑', 10) + app.setFont(font) + router = Router(None) + view = DecryptControl(router) + view.show() + sys.exit(app.exec()) \ No newline at end of file diff --git a/app/ui/pdf_tools/security/decrypt_ui.py b/app/ui/pdf_tools/security/decrypt_ui.py new file mode 100644 index 0000000..930adb0 --- /dev/null +++ b/app/ui/pdf_tools/security/decrypt_ui.py @@ -0,0 +1,160 @@ +from PySide6.QtCore import QCoreApplication, QMetaObject, QSize +from PySide6.QtGui import QIcon +from PySide6.QtWidgets import (QLabel, QLineEdit, QProgressBar, QPushButton, + QSizePolicy, QSpacerItem, QVBoxLayout, QHBoxLayout, QWidget, + QGroupBox, QComboBox) + + +class Ui_decrypt_pdf_view(object): + def setupUi(self, decrypt_pdf_view): + if not decrypt_pdf_view.objectName(): + decrypt_pdf_view.setObjectName(u"decrypt_pdf_view") + decrypt_pdf_view.resize(800, 600) + self.verticalLayout = QVBoxLayout(decrypt_pdf_view) + self.verticalLayout.setObjectName(u"verticalLayout") + + # 文件选择区域 + self.horizontalLayout = QHBoxLayout() + self.horizontalLayout.setObjectName(u"horizontalLayout") + self.label = QLabel(decrypt_pdf_view) + self.label.setObjectName(u"label") + self.horizontalLayout.addWidget(self.label) + + self.lineEdit_pdf_path = QLineEdit(decrypt_pdf_view) + self.lineEdit_pdf_path.setObjectName(u"lineEdit_pdf_path") + self.lineEdit_pdf_path.setReadOnly(True) + self.horizontalLayout.addWidget(self.lineEdit_pdf_path) + + self.btn_choose_file = QPushButton(decrypt_pdf_view) + self.btn_choose_file.setObjectName(u"btn_choose_file") + self.horizontalLayout.addWidget(self.btn_choose_file) + + self.verticalLayout.addLayout(self.horizontalLayout) + + # 解密设置区域 + self.groupBox_decrypt_options = QGroupBox(decrypt_pdf_view) + self.groupBox_decrypt_options.setObjectName(u"groupBox_decrypt_options") + self.verticalLayout_options = QVBoxLayout(self.groupBox_decrypt_options) + self.verticalLayout_options.setObjectName(u"verticalLayout_options") + + # 所有者密码 + self.horizontalLayout_owner_pwd = QHBoxLayout() + self.horizontalLayout_owner_pwd.setObjectName(u"horizontalLayout_owner_pwd") + self.label_owner_pwd = QLabel(self.groupBox_decrypt_options) + self.label_owner_pwd.setObjectName(u"label_owner_pwd") + self.horizontalLayout_owner_pwd.addWidget(self.label_owner_pwd) + + self.lineEdit_owner_pwd = QLineEdit(self.groupBox_decrypt_options) + self.lineEdit_owner_pwd.setObjectName(u"lineEdit_owner_pwd") + self.lineEdit_owner_pwd.setEchoMode(QLineEdit.Password) + self.horizontalLayout_owner_pwd.addWidget(self.lineEdit_owner_pwd) + + self.verticalLayout_options.addLayout(self.horizontalLayout_owner_pwd) + + # 用户密码 + self.horizontalLayout_user_pwd = QHBoxLayout() + self.horizontalLayout_user_pwd.setObjectName(u"horizontalLayout_user_pwd") + self.label_user_pwd = QLabel(self.groupBox_decrypt_options) + self.label_user_pwd.setObjectName(u"label_user_pwd") + self.horizontalLayout_user_pwd.addWidget(self.label_user_pwd) + + self.lineEdit_user_pwd = QLineEdit(self.groupBox_decrypt_options) + self.lineEdit_user_pwd.setObjectName(u"lineEdit_user_pwd") + self.lineEdit_user_pwd.setEchoMode(QLineEdit.Password) + self.horizontalLayout_user_pwd.addWidget(self.lineEdit_user_pwd) + + self.verticalLayout_options.addLayout(self.horizontalLayout_user_pwd) + + # 密码说明 + self.label_pwd_info = QLabel(self.groupBox_decrypt_options) + self.label_pwd_info.setObjectName(u"label_pwd_info") + self.verticalLayout_options.addWidget(self.label_pwd_info) + + self.verticalLayout.addWidget(self.groupBox_decrypt_options) + + # 输出选项区域 + self.groupBox_output = QGroupBox(decrypt_pdf_view) + self.groupBox_output.setObjectName(u"groupBox_output") + self.verticalLayout_output = QVBoxLayout(self.groupBox_output) + self.verticalLayout_output.setObjectName(u"verticalLayout_output") + + # 输出目录选择 + self.horizontalLayout_output_dir = QHBoxLayout() + self.horizontalLayout_output_dir.setObjectName(u"horizontalLayout_output_dir") + self.label_output = QLabel(self.groupBox_output) + self.label_output.setObjectName(u"label_output") + self.horizontalLayout_output_dir.addWidget(self.label_output) + + self.comboBox_output_dir = QComboBox(self.groupBox_output) + self.comboBox_output_dir.addItem("PDF相同目录") + self.comboBox_output_dir.addItem("自定义目录") + self.comboBox_output_dir.setObjectName(u"comboBox_output_dir") + self.horizontalLayout_output_dir.addWidget(self.comboBox_output_dir) + + self.label_output_dir = QLabel(self.groupBox_output) + self.label_output_dir.setObjectName(u"label_output_dir") + self.horizontalLayout_output_dir.addWidget(self.label_output_dir) + + self.btn_choose_output_dir = QPushButton(self.groupBox_output) + self.btn_choose_output_dir.setObjectName(u"btn_choose_output_dir") + self.horizontalLayout_output_dir.addWidget(self.btn_choose_output_dir) + + self.verticalLayout_output.addLayout(self.horizontalLayout_output_dir) + + # 文件名 + self.horizontalLayout_filename = QHBoxLayout() + self.horizontalLayout_filename.setObjectName(u"horizontalLayout_filename") + self.label_filename = QLabel(self.groupBox_output) + self.label_filename.setObjectName(u"label_filename") + self.horizontalLayout_filename.addWidget(self.label_filename) + + self.lineEdit_filename = QLineEdit(self.groupBox_output) + self.lineEdit_filename.setObjectName(u"lineEdit_filename") + self.horizontalLayout_filename.addWidget(self.lineEdit_filename) + + self.verticalLayout_output.addLayout(self.horizontalLayout_filename) + + self.verticalLayout.addWidget(self.groupBox_output) + + # 进度条 + self.progressBar = QProgressBar(decrypt_pdf_view) + self.progressBar.setObjectName(u"progressBar") + self.progressBar.setValue(0) + self.verticalLayout.addWidget(self.progressBar) + + # 解密按钮 + self.horizontalLayout_decrypt = QHBoxLayout() + self.horizontalLayout_decrypt.setObjectName(u"horizontalLayout_decrypt") + self.horizontalLayout_decrypt.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)) + + self.btn_decrypt = QPushButton(decrypt_pdf_view) + self.btn_decrypt.setObjectName(u"btn_decrypt") + self.btn_decrypt.setMinimumSize(QSize(120, 40)) + self.horizontalLayout_decrypt.addWidget(self.btn_decrypt) + + self.horizontalLayout_decrypt.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)) + self.verticalLayout.addLayout(self.horizontalLayout_decrypt) + + self.retranslateUi(decrypt_pdf_view) + + QMetaObject.connectSlotsByName(decrypt_pdf_view) + + def retranslateUi(self, decrypt_pdf_view): + decrypt_pdf_view.setWindowTitle(QCoreApplication.translate("decrypt_pdf_view", u"PDF解密", None)) + self.label.setText(QCoreApplication.translate("decrypt_pdf_view", u"选择PDF文件:", None)) + self.btn_choose_file.setText(QCoreApplication.translate("decrypt_pdf_view", u"选择文件", None)) + + self.groupBox_decrypt_options.setTitle(QCoreApplication.translate("decrypt_pdf_view", u"解密设置", None)) + self.label_owner_pwd.setText(QCoreApplication.translate("decrypt_pdf_view", u"所有者密码:", None)) + self.label_user_pwd.setText(QCoreApplication.translate("decrypt_pdf_view", u"用户密码:", None)) + self.label_pwd_info.setText(QCoreApplication.translate("decrypt_pdf_view", u"注:解密PDF文件需要所有者密码,如果没有所有者密码可以尝试使用用户密码", None)) + + self.groupBox_output.setTitle(QCoreApplication.translate("decrypt_pdf_view", u"输出选项", None)) + self.label_output.setText(QCoreApplication.translate("decrypt_pdf_view", u"输出目录:", None)) + self.label_output_dir.setText(QCoreApplication.translate("decrypt_pdf_view", u"", None)) + self.btn_choose_output_dir.setText(QCoreApplication.translate("decrypt_pdf_view", u"选择目录", None)) + + self.label_filename.setText(QCoreApplication.translate("decrypt_pdf_view", u"文件名:", None)) + self.lineEdit_filename.setText(QCoreApplication.translate("decrypt_pdf_view", u"解密文件", None)) + + self.btn_decrypt.setText(QCoreApplication.translate("decrypt_pdf_view", u"解密PDF", None)) \ No newline at end of file diff --git a/app/ui/pdf_tools/security/encrypt.py b/app/ui/pdf_tools/security/encrypt.py new file mode 100644 index 0000000..43c9cb4 --- /dev/null +++ b/app/ui/pdf_tools/security/encrypt.py @@ -0,0 +1,455 @@ +import os.path +from typing import List + +import fitz +from PySide6.QtCore import Signal, QThread, QUrl, Qt, QFile, QIODevice, QTextStream +from PySide6.QtGui import QDesktopServices, QPixmap, QIcon, QFont, QFontMetrics +from PySide6.QtWidgets import (QWidget, QMessageBox, QFileDialog, QDialog, QPushButton, + QVBoxLayout, QLabel, QDialogButtonBox, QListWidget, + QListWidgetItem, QHBoxLayout, QFrame) + +from app.model import PdfFile +from app.ui.components.QCursorGif import QCursorGif +from app.ui.Icon import Icon +from app.util import common +from app.ui.pdf_tools.security.encrypt_ui import Ui_encrypt_pdf_view +from app.ui.components.router import Router +from app.log import logger + + +def open_file_explorer(path): + # 使用QDesktopServices打开文件管理器 + if os.path.isfile(path): + path = os.path.dirname(path) + QDesktopServices.openUrl(QUrl.fromLocalFile(path)) + + +class EncryptControl(QWidget, Ui_encrypt_pdf_view, QCursorGif): + okSignal = Signal(bool) + childRouterSignal = Signal(str) + + def __init__(self, router: Router, parent=None): + super().__init__(parent) + self.input_file_paths = [] # 改为存储多个文件路径 + self.output_dir = "" + self.router = router + self.router_path = (self.parent().router_path if self.parent() else '') + '/加密PDF' + self.child_routes = {} + self.worker = None + self.setupUi(self) + # 设置忙碌光标图片数组 + self.initCursor([':/icons/icons/Cursors/%d.png' % + i for i in range(8)], self) + self.setCursorTimeout(100) + self.init_ui() + + # 创建文件列表组件 + self.list_frame = QFrame(self) + self.list_frame.setFrameShape(QFrame.StyledPanel) + self.list_frame.setFrameShadow(QFrame.Raised) + self.list_frame.setObjectName("list_frame") + + self.list_layout = QVBoxLayout(self.list_frame) + self.list_layout.setContentsMargins(0, 0, 0, 0) + + self.list_label = QLabel("已选择的PDF文件:", self.list_frame) + self.list_layout.addWidget(self.list_label) + + self.file_list = QListWidget(self.list_frame) + self.file_list.setAlternatingRowColors(True) + self.file_list.setSelectionMode(QListWidget.ExtendedSelection) + self.list_layout.addWidget(self.file_list) + + # 文件列表操作按钮 + self.list_buttons_layout = QHBoxLayout() + self.btn_remove_selected = QPushButton("移除选中", self.list_frame) + self.btn_remove_all = QPushButton("清空列表", self.list_frame) + self.btn_remove_selected.clicked.connect(self.remove_selected_files) + self.btn_remove_all.clicked.connect(self.clear_file_list) + + self.list_buttons_layout.addWidget(self.btn_remove_selected) + self.list_buttons_layout.addWidget(self.btn_remove_all) + self.list_layout.addLayout(self.list_buttons_layout) + + # 添加文件列表到主布局 + self.verticalLayout.insertWidget(1, self.list_frame) + + # 按钮连接 + self.btn_choose_file.setText("选择文件") + self.btn_choose_file.clicked.connect(self.open_file_dialog) + self.btn_choose_file.setIcon(Icon.Add_Icon) + self.btn_encrypt.clicked.connect(self.encrypt_pdf) + + # 将说明标签替换为按钮 + self.label_pwd_info.hide() # 隐藏原始标签 + self.btn_help = QPushButton("点击查看说明", self) + self.btn_help.setStyleSheet("text-align: left; border: none; color: blue; text-decoration: underline;") + self.btn_help.setCursor(Qt.PointingHandCursor) + self.btn_help.clicked.connect(self.show_help_dialog) + # 将按钮添加到原标签的位置 + self.verticalLayout.insertWidget(self.verticalLayout.indexOf(self.label_pwd_info), self.btn_help) + + # 帮助文本 + self.base_help_text = "说明:\n1. 用户密码:打开文档时需要输入的密码\n2. 所有者密码:修改文档权限或解密时需要的密码\n\n" + self.config_help_text = "建议:可以只设置一种密码,也可以两种同时设置。如只需限制查看,仅设置用户密码即可;如只需限制编辑,仅设置所有者密码即可。" + + # 密码输入监听 + self.lineEdit_user_pwd.textChanged.connect(self.update_password_status) + self.lineEdit_owner_pwd.textChanged.connect(self.update_password_status) + + # 输出选项连接 + self.comboBox_output_dir.activated.connect(self.select_output_dir) + self.btn_choose_output_dir.clicked.connect(self.set_output_dir) + + # 初始界面设置 + self.label_output_dir.setVisible(False) + self.btn_choose_output_dir.setVisible(False) + self.btn_encrypt.setEnabled(False) + + # 隐藏单文件模式下的文件名设置 + self.label_filename.setVisible(False) + self.lineEdit_filename.setVisible(False) + + def init_ui(self): + self.btn_encrypt.setObjectName('border') + if not self.parent(): + pixmap = QPixmap(Icon.logo_ico_path) + icon = QIcon(pixmap) + self.setWindowIcon(icon) + self.setWindowTitle('PDF加密') + style_qss_file = QFile(":/data/resources/QSS/style.qss") + if style_qss_file.open(QIODevice.ReadOnly | QIODevice.Text): + stream = QTextStream(style_qss_file) + style_content = stream.readAll() + self.setStyleSheet(style_content) + style_qss_file.close() + + def show_help_dialog(self): + """显示密码设置说明对话框""" + dialog = QDialog(self) + dialog.setWindowTitle("PDF加密设置说明") + dialog.setMinimumWidth(400) + + layout = QVBoxLayout() + + # 添加基本说明 + help_text = self.base_help_text + self.config_help_text + help_label = QLabel(help_text) + help_label.setWordWrap(True) + layout.addWidget(help_label) + + # 添加确定按钮 + buttons = QDialogButtonBox(QDialogButtonBox.Ok) + buttons.accepted.connect(dialog.accept) + layout.addWidget(buttons) + + dialog.setLayout(layout) + dialog.exec_() + + def select_output_dir(self): + text = self.comboBox_output_dir.currentText() + if text == 'PDF相同目录': + self.label_output_dir.setVisible(False) + self.btn_choose_output_dir.setVisible(False) + elif text == '自定义目录': + self.label_output_dir.setVisible(True) + self.btn_choose_output_dir.setVisible(True) + + def set_output_dir(self): + folder = QFileDialog.getExistingDirectory(self, "选择输出目录") + if folder: + self.output_dir = folder + font_metrics = QFontMetrics(self.label_output_dir.font()) + # 使用 elidedText 根据按钮宽度生成省略文字 + elided_text = font_metrics.elidedText(self.output_dir, Qt.ElideRight, self.label_output_dir.width() - 10) + self.label_output_dir.setText(elided_text) + self.label_output_dir.setToolTip(self.output_dir) + + def remove_selected_files(self): + """移除选中的文件""" + for item in self.file_list.selectedItems(): + file_path = item.data(Qt.UserRole) + self.file_list.takeItem(self.file_list.row(item)) + self.input_file_paths.remove(file_path) + + # 更新按钮状态 + self.btn_encrypt.setEnabled(len(self.input_file_paths) > 0) + + def clear_file_list(self): + """清空文件列表""" + self.file_list.clear() + self.input_file_paths.clear() + self.btn_encrypt.setEnabled(False) + + def open_file_dialog(self): + # 打开文件对话框,选择多个PDF文件 + files, _ = QFileDialog.getOpenFileNames(self, "选择PDF文件", "", "PDF Files (*.pdf);;All Files (*)") + if not files: + return + + # 遍历所有选择的文件 + for file_path in files: + # 检查文件是否已在列表中 + if file_path in self.input_file_paths: + continue + + # 获取PDF信息 + try: + with fitz.open(file_path) as pdf: + # 如果PDF已加密,提示用户但仍然添加 + if pdf.is_encrypted: + QMessageBox.warning(self, "警告", f"文件 {os.path.basename(file_path)} 已加密,重新加密可能会导致无法打开。") + except Exception as e: + logger.error(f"读取PDF文件错误: {str(e)}") + QMessageBox.warning(self, "警告", f"无法读取文件 {os.path.basename(file_path)}: {str(e)}") + continue + + # 添加到文件列表 + self.input_file_paths.append(file_path) + item = QListWidgetItem(os.path.basename(file_path)) + item.setData(Qt.UserRole, file_path) + self.file_list.addItem(item) + + # 如果添加了文件,启用加密按钮 + if self.input_file_paths: + self.btn_encrypt.setEnabled(True) + + # 如果未设置输出目录,默认使用与第一个PDF相同的目录 + if not self.output_dir and self.input_file_paths: + self.output_dir = os.path.dirname(self.input_file_paths[0]) + font_metrics = QFontMetrics(self.label_output_dir.font()) + elided_text = font_metrics.elidedText(self.output_dir, Qt.ElideRight, self.label_output_dir.width() - 10) + self.label_output_dir.setText(elided_text) + self.label_output_dir.setToolTip(self.output_dir) + + def encrypt_pdf(self): + if not self.input_file_paths: + QMessageBox.critical(self, "错误", "请先选择PDF文件") + return + + # 验证密码 + user_password = self.lineEdit_user_pwd.text() + confirm_user_password = self.lineEdit_confirm_user_pwd.text() + owner_password = self.lineEdit_owner_pwd.text() + confirm_owner_password = self.lineEdit_confirm_owner_pwd.text() + + if user_password and user_password != confirm_user_password: + QMessageBox.warning(self, "警告", "用户密码与确认密码不一致") + return + + if owner_password and owner_password != confirm_owner_password: + QMessageBox.warning(self, "警告", "所有者密码与确认密码不一致") + return + + if not user_password and not owner_password: + reply = QMessageBox.question(self, "提示", + "您没有设置任何密码,是否继续?\n\n" + + "- 如需限制查看文档,请设置用户密码\n" + + "- 如需限制编辑文档,请设置所有者密码", + QMessageBox.Yes | QMessageBox.No, QMessageBox.No) + if reply == QMessageBox.No: + return + + # 获取权限设置 + permissions = 0 + if self.checkBox_print.isChecked(): + permissions |= fitz.PDF_PERM_PRINT + if self.checkBox_copy.isChecked(): + permissions |= fitz.PDF_PERM_COPY + if self.checkBox_modify.isChecked(): + permissions |= fitz.PDF_PERM_MODIFY + if self.checkBox_annotate.isChecked(): + permissions |= fitz.PDF_PERM_ANNOTATE + + # 确定加密方法 + encrypt_method = fitz.PDF_ENCRYPT_AES_128 + encrypt_method_text = self.comboBox_enc_level.currentText() + if "128位RC4" in encrypt_method_text: + encrypt_method = fitz.PDF_ENCRYPT_RC4_128 + elif "40位RC4" in encrypt_method_text: + encrypt_method = fitz.PDF_ENCRYPT_RC4_40 + + # 获取输出目录 + if self.comboBox_output_dir.currentText() == '自定义目录' and self.output_dir: + output_directory = self.output_dir + else: + # 使用第一个文件的目录作为默认输出目录 + output_directory = os.path.dirname(self.input_file_paths[0]) + + # 如果输出目录不存在,创建它 + if not os.path.exists(output_directory): + try: + os.makedirs(output_directory) + except Exception as e: + QMessageBox.critical(self, "错误", f"无法创建输出目录: {str(e)}") + return + + # 禁用按钮,开始任务 + self.btn_encrypt.setEnabled(False) + self.startBusy() + + # 创建批量处理线程 + self.worker = BatchEncryptThread( + input_files=self.input_file_paths, + output_dir=output_directory, + user_password=user_password, + owner_password=owner_password, + permissions=permissions, + encrypt_method=encrypt_method + ) + self.worker.progressSignal.connect(self.update_progress) + self.worker.okSignal.connect(self.encrypt_finish) + self.worker.start() + + def update_progress(self, value): + self.progressBar.setValue(value) + + def encrypt_finish(self, result_data): + self.stopBusy() + success_count, failed_count, output_dir = result_data + + if success_count > 0: + user_pwd = self.lineEdit_user_pwd.text() + owner_pwd = self.lineEdit_owner_pwd.text() + + # 根据密码设置情况提供不同的提示 + success_text = f"成功加密 {success_count} 个文件" + if failed_count > 0: + success_text += f",失败 {failed_count} 个" + + if user_pwd and owner_pwd: + if user_pwd == owner_pwd: + success_text += f"\n\n密码: {user_pwd}\n(用户密码和所有者密码相同)" + else: + success_text += f"\n\n用户密码: {user_pwd} (用于打开文档)\n所有者密码: {owner_pwd} (用于解除保护)" + elif user_pwd: + success_text += f"\n\n用户密码: {user_pwd} (用于打开文档)" + elif owner_pwd: + success_text += f"\n\n所有者密码: {owner_pwd} (用于解除保护和编辑)" + else: + success_text += "\n\n已设置权限控制,但未使用密码保护" + + reply = QMessageBox(self) + reply.setIcon(QMessageBox.Information) + reply.setWindowTitle('完成') + reply.setText(success_text) + btn = reply.addButton('打开文件夹', QMessageBox.ActionRole) + btn.clicked.connect(lambda: open_file_explorer(output_dir)) + reply.addButton("确认", QMessageBox.AcceptRole) + reply.exec_() + else: + QMessageBox.critical(self, "错误", f"PDF加密失败,所有文件均未能成功加密") + + # 恢复UI状态 + self.btn_encrypt.setEnabled(True) + self.progressBar.setValue(0) + self.worker = None + + def closeEvent(self, event): + super().closeEvent(event) + self.okSignal.emit(True) + + def update_password_status(self): + """更新密码设置状态提示""" + user_pwd = self.lineEdit_user_pwd.text() + owner_pwd = self.lineEdit_owner_pwd.text() + + # 根据密码设置情况更新帮助文本 + if user_pwd and owner_pwd: + if user_pwd == owner_pwd: + self.config_help_text = "当前设置:两种密码相同,文档将受到完全保护,但管理不便。\n建议使用不同的密码以便分别控制查看和编辑权限。" + else: + self.config_help_text = "当前设置:两种密码都已设置,文档将受到完全保护。输入用户密码可阅读,输入所有者密码可编辑。" + elif user_pwd: + self.config_help_text = "当前设置:仅设置用户密码,他人需要密码才能打开文档,但有所有者权限的用户可以编辑。" + elif owner_pwd: + self.config_help_text = "当前设置:仅设置所有者密码,任何人都能查看,但需要密码才能编辑文档。" + else: + self.config_help_text = "建议:可以只设置一种密码,也可以两种同时设置。如只需限制查看,仅设置用户密码即可;如只需限制编辑,仅设置所有者密码即可。" + + +class BatchEncryptThread(QThread): + okSignal = Signal(tuple) # (success_count, failed_count, output_dir) + progressSignal = Signal(int) + + def __init__(self, input_files: List[str], output_dir: str, user_password="", owner_password="", + permissions=0, encrypt_method=fitz.PDF_ENCRYPT_AES_128): + super().__init__() + self.input_files = input_files + self.output_dir = output_dir + self.user_password = user_password + self.owner_password = owner_password + self.permissions = permissions + self.encrypt_method = encrypt_method + + def run(self): + success_count = 0 + failed_count = 0 + total_files = len(self.input_files) + + for index, file_path in enumerate(self.input_files): + try: + # 打开输入PDF + pdf_document = fitz.open(file_path) + + # 如果PDF已加密,先尝试解密 + if pdf_document.is_encrypted: + try: + # 尝试用空密码解密,如果之前是无密码文档 + pdf_document.authenticate("") + except: + pass + + # 生成输出文件名:原文件名+加密+文件.pdf + filename = os.path.basename(file_path) + filename_without_ext = os.path.splitext(filename)[0] + output_filename = f"{filename_without_ext}_加密文件.pdf" + output_path = os.path.join(self.output_dir, output_filename) + output_path = common.usable_filepath(output_path) + + # 确保至少有一个密码 + if not self.owner_password and not self.user_password: + # 如果用户确认不使用密码,只使用权限控制 + owner_pw = "" + user_pw = "" + else: + # 将所有者密码设置为用户密码(如果未提供) + owner_pw = self.owner_password if self.owner_password else self.user_password + # 将用户密码设置为所有者密码(如果未提供) + user_pw = self.user_password if self.user_password else "" + + # 设置文档权限并保存 + pdf_document.save( + output_path, + encryption=self.encrypt_method, + owner_pw=owner_pw, + user_pw=user_pw, + permissions=self.permissions + ) + + pdf_document.close() + success_count += 1 + + except Exception as e: + logger.error(f"PDF加密错误 {file_path}: {str(e)}") + failed_count += 1 + + # 更新进度 + progress = int((index + 1) / total_files * 100) + self.progressSignal.emit(progress) + + self.okSignal.emit((success_count, failed_count, self.output_dir)) + + +if __name__ == '__main__': + from PySide6.QtWidgets import QApplication + import sys + from PySide6.QtGui import QFont + + app = QApplication(sys.argv) + font = QFont('微软雅黑', 10) + app.setFont(font) + router = Router(None) + view = EncryptControl(router) + view.show() + sys.exit(app.exec()) \ No newline at end of file diff --git a/app/ui/pdf_tools/security/encrypt_ui.py b/app/ui/pdf_tools/security/encrypt_ui.py new file mode 100644 index 0000000..6da2516 --- /dev/null +++ b/app/ui/pdf_tools/security/encrypt_ui.py @@ -0,0 +1,244 @@ +from PySide6.QtCore import QCoreApplication, QMetaObject, QSize +from PySide6.QtGui import QIcon +from PySide6.QtWidgets import (QCheckBox, QComboBox, QLabel, QLineEdit, QProgressBar, QPushButton, + QSizePolicy, QSpacerItem, QVBoxLayout, QHBoxLayout, QWidget, + QGroupBox, QSpinBox) + + +class Ui_encrypt_pdf_view(object): + def setupUi(self, encrypt_pdf_view): + if not encrypt_pdf_view.objectName(): + encrypt_pdf_view.setObjectName(u"encrypt_pdf_view") + encrypt_pdf_view.resize(800, 600) + self.verticalLayout = QVBoxLayout(encrypt_pdf_view) + self.verticalLayout.setObjectName(u"verticalLayout") + + # 文件选择区域 + self.horizontalLayout = QHBoxLayout() + self.horizontalLayout.setObjectName(u"horizontalLayout") + self.label = QLabel(encrypt_pdf_view) + self.label.setObjectName(u"label") + self.horizontalLayout.addWidget(self.label) + + self.lineEdit_pdf_path = QLineEdit(encrypt_pdf_view) + self.lineEdit_pdf_path.setObjectName(u"lineEdit_pdf_path") + self.lineEdit_pdf_path.setReadOnly(True) + self.horizontalLayout.addWidget(self.lineEdit_pdf_path) + + self.btn_choose_file = QPushButton(encrypt_pdf_view) + self.btn_choose_file.setObjectName(u"btn_choose_file") + self.horizontalLayout.addWidget(self.btn_choose_file) + + self.verticalLayout.addLayout(self.horizontalLayout) + + # 加密设置区域 + self.groupBox_encrypt_options = QGroupBox(encrypt_pdf_view) + self.groupBox_encrypt_options.setObjectName(u"groupBox_encrypt_options") + self.verticalLayout_options = QVBoxLayout(self.groupBox_encrypt_options) + self.verticalLayout_options.setObjectName(u"verticalLayout_options") + + # 密码说明 + self.label_pwd_info = QLabel(self.groupBox_encrypt_options) + self.label_pwd_info.setObjectName(u"label_pwd_info") + self.label_pwd_info.setWordWrap(True) + self.verticalLayout_options.addWidget(self.label_pwd_info) + + # 用户密码 + self.horizontalLayout_user_pwd = QHBoxLayout() + self.horizontalLayout_user_pwd.setObjectName(u"horizontalLayout_user_pwd") + self.label_user_pwd = QLabel(self.groupBox_encrypt_options) + self.label_user_pwd.setObjectName(u"label_user_pwd") + self.horizontalLayout_user_pwd.addWidget(self.label_user_pwd) + + self.lineEdit_user_pwd = QLineEdit(self.groupBox_encrypt_options) + self.lineEdit_user_pwd.setObjectName(u"lineEdit_user_pwd") + self.lineEdit_user_pwd.setEchoMode(QLineEdit.Password) + self.horizontalLayout_user_pwd.addWidget(self.lineEdit_user_pwd) + + self.verticalLayout_options.addLayout(self.horizontalLayout_user_pwd) + + # 确认用户密码 + self.horizontalLayout_confirm_user_pwd = QHBoxLayout() + self.horizontalLayout_confirm_user_pwd.setObjectName(u"horizontalLayout_confirm_user_pwd") + self.label_confirm_user_pwd = QLabel(self.groupBox_encrypt_options) + self.label_confirm_user_pwd.setObjectName(u"label_confirm_user_pwd") + self.horizontalLayout_confirm_user_pwd.addWidget(self.label_confirm_user_pwd) + + self.lineEdit_confirm_user_pwd = QLineEdit(self.groupBox_encrypt_options) + self.lineEdit_confirm_user_pwd.setObjectName(u"lineEdit_confirm_user_pwd") + self.lineEdit_confirm_user_pwd.setEchoMode(QLineEdit.Password) + self.horizontalLayout_confirm_user_pwd.addWidget(self.lineEdit_confirm_user_pwd) + + self.verticalLayout_options.addLayout(self.horizontalLayout_confirm_user_pwd) + + # 所有者密码 + self.horizontalLayout_owner_pwd = QHBoxLayout() + self.horizontalLayout_owner_pwd.setObjectName(u"horizontalLayout_owner_pwd") + self.label_owner_pwd = QLabel(self.groupBox_encrypt_options) + self.label_owner_pwd.setObjectName(u"label_owner_pwd") + self.horizontalLayout_owner_pwd.addWidget(self.label_owner_pwd) + + self.lineEdit_owner_pwd = QLineEdit(self.groupBox_encrypt_options) + self.lineEdit_owner_pwd.setObjectName(u"lineEdit_owner_pwd") + self.lineEdit_owner_pwd.setEchoMode(QLineEdit.Password) + self.horizontalLayout_owner_pwd.addWidget(self.lineEdit_owner_pwd) + + self.verticalLayout_options.addLayout(self.horizontalLayout_owner_pwd) + + # 确认所有者密码 + self.horizontalLayout_confirm_owner_pwd = QHBoxLayout() + self.horizontalLayout_confirm_owner_pwd.setObjectName(u"horizontalLayout_confirm_owner_pwd") + self.label_confirm_owner_pwd = QLabel(self.groupBox_encrypt_options) + self.label_confirm_owner_pwd.setObjectName(u"label_confirm_owner_pwd") + self.horizontalLayout_confirm_owner_pwd.addWidget(self.label_confirm_owner_pwd) + + self.lineEdit_confirm_owner_pwd = QLineEdit(self.groupBox_encrypt_options) + self.lineEdit_confirm_owner_pwd.setObjectName(u"lineEdit_confirm_owner_pwd") + self.lineEdit_confirm_owner_pwd.setEchoMode(QLineEdit.Password) + self.horizontalLayout_confirm_owner_pwd.addWidget(self.lineEdit_confirm_owner_pwd) + + self.verticalLayout_options.addLayout(self.horizontalLayout_confirm_owner_pwd) + + # 加密级别 + self.horizontalLayout_enc_level = QHBoxLayout() + self.horizontalLayout_enc_level.setObjectName(u"horizontalLayout_enc_level") + self.label_enc_level = QLabel(self.groupBox_encrypt_options) + self.label_enc_level.setObjectName(u"label_enc_level") + self.horizontalLayout_enc_level.addWidget(self.label_enc_level) + + self.comboBox_enc_level = QComboBox(self.groupBox_encrypt_options) + self.comboBox_enc_level.addItem("128位AES(推荐)") + self.comboBox_enc_level.addItem("128位RC4") + self.comboBox_enc_level.addItem("40位RC4(兼容)") + self.comboBox_enc_level.setObjectName(u"comboBox_enc_level") + self.horizontalLayout_enc_level.addWidget(self.comboBox_enc_level) + + self.horizontalLayout_enc_level.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)) + self.verticalLayout_options.addLayout(self.horizontalLayout_enc_level) + + # 权限设置 + self.label_permissions = QLabel(self.groupBox_encrypt_options) + self.label_permissions.setObjectName(u"label_permissions") + self.verticalLayout_options.addWidget(self.label_permissions) + + # 打印权限 + self.checkBox_print = QCheckBox(self.groupBox_encrypt_options) + self.checkBox_print.setObjectName(u"checkBox_print") + self.checkBox_print.setChecked(True) + self.verticalLayout_options.addWidget(self.checkBox_print) + + # 复制权限 + self.checkBox_copy = QCheckBox(self.groupBox_encrypt_options) + self.checkBox_copy.setObjectName(u"checkBox_copy") + self.checkBox_copy.setChecked(True) + self.verticalLayout_options.addWidget(self.checkBox_copy) + + # 修改权限 + self.checkBox_modify = QCheckBox(self.groupBox_encrypt_options) + self.checkBox_modify.setObjectName(u"checkBox_modify") + self.checkBox_modify.setChecked(True) + self.verticalLayout_options.addWidget(self.checkBox_modify) + + # 注释权限 + self.checkBox_annotate = QCheckBox(self.groupBox_encrypt_options) + self.checkBox_annotate.setObjectName(u"checkBox_annotate") + self.checkBox_annotate.setChecked(True) + self.verticalLayout_options.addWidget(self.checkBox_annotate) + + self.verticalLayout.addWidget(self.groupBox_encrypt_options) + + # 输出选项区域 + self.groupBox_output = QGroupBox(encrypt_pdf_view) + self.groupBox_output.setObjectName(u"groupBox_output") + self.verticalLayout_output = QVBoxLayout(self.groupBox_output) + self.verticalLayout_output.setObjectName(u"verticalLayout_output") + + # 输出目录选择 + self.horizontalLayout_output_dir = QHBoxLayout() + self.horizontalLayout_output_dir.setObjectName(u"horizontalLayout_output_dir") + self.label_output = QLabel(self.groupBox_output) + self.label_output.setObjectName(u"label_output") + self.horizontalLayout_output_dir.addWidget(self.label_output) + + self.comboBox_output_dir = QComboBox(self.groupBox_output) + self.comboBox_output_dir.addItem("PDF相同目录") + self.comboBox_output_dir.addItem("自定义目录") + self.comboBox_output_dir.setObjectName(u"comboBox_output_dir") + self.horizontalLayout_output_dir.addWidget(self.comboBox_output_dir) + + self.label_output_dir = QLabel(self.groupBox_output) + self.label_output_dir.setObjectName(u"label_output_dir") + self.horizontalLayout_output_dir.addWidget(self.label_output_dir) + + self.btn_choose_output_dir = QPushButton(self.groupBox_output) + self.btn_choose_output_dir.setObjectName(u"btn_choose_output_dir") + self.horizontalLayout_output_dir.addWidget(self.btn_choose_output_dir) + + self.verticalLayout_output.addLayout(self.horizontalLayout_output_dir) + + # 文件名 + self.horizontalLayout_filename = QHBoxLayout() + self.horizontalLayout_filename.setObjectName(u"horizontalLayout_filename") + self.label_filename = QLabel(self.groupBox_output) + self.label_filename.setObjectName(u"label_filename") + self.horizontalLayout_filename.addWidget(self.label_filename) + + self.lineEdit_filename = QLineEdit(self.groupBox_output) + self.lineEdit_filename.setObjectName(u"lineEdit_filename") + self.horizontalLayout_filename.addWidget(self.lineEdit_filename) + + self.verticalLayout_output.addLayout(self.horizontalLayout_filename) + + self.verticalLayout.addWidget(self.groupBox_output) + + # 进度条 + self.progressBar = QProgressBar(encrypt_pdf_view) + self.progressBar.setObjectName(u"progressBar") + self.progressBar.setValue(0) + self.verticalLayout.addWidget(self.progressBar) + + # 加密按钮 + self.horizontalLayout_encrypt = QHBoxLayout() + self.horizontalLayout_encrypt.setObjectName(u"horizontalLayout_encrypt") + self.horizontalLayout_encrypt.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)) + + self.btn_encrypt = QPushButton(encrypt_pdf_view) + self.btn_encrypt.setObjectName(u"btn_encrypt") + self.btn_encrypt.setMinimumSize(QSize(120, 40)) + self.horizontalLayout_encrypt.addWidget(self.btn_encrypt) + + self.horizontalLayout_encrypt.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)) + self.verticalLayout.addLayout(self.horizontalLayout_encrypt) + + self.retranslateUi(encrypt_pdf_view) + + QMetaObject.connectSlotsByName(encrypt_pdf_view) + + def retranslateUi(self, encrypt_pdf_view): + encrypt_pdf_view.setWindowTitle(QCoreApplication.translate("encrypt_pdf_view", u"PDF加密", None)) + self.label.setText(QCoreApplication.translate("encrypt_pdf_view", u"选择PDF文件:", None)) + self.btn_choose_file.setText(QCoreApplication.translate("encrypt_pdf_view", u"选择文件", None)) + + self.groupBox_encrypt_options.setTitle(QCoreApplication.translate("encrypt_pdf_view", u"加密设置", None)) + self.label_pwd_info.setText(QCoreApplication.translate("encrypt_pdf_view", u"说明:\n1. 用户密码:打开文档时需要输入的密码\n2. 所有者密码:修改文档权限或解密时需要的密码\n\n建议:可以只设置一种密码,也可以两种同时设置。如只需限制查看,仅设置用户密码即可;如只需限制编辑,仅设置所有者密码即可。", None)) + self.label_user_pwd.setText(QCoreApplication.translate("encrypt_pdf_view", u"用户密码:", None)) + self.label_confirm_user_pwd.setText(QCoreApplication.translate("encrypt_pdf_view", u"确认用户密码:", None)) + self.label_owner_pwd.setText(QCoreApplication.translate("encrypt_pdf_view", u"所有者密码:", None)) + self.label_confirm_owner_pwd.setText(QCoreApplication.translate("encrypt_pdf_view", u"确认所有者密码:", None)) + + self.label_enc_level.setText(QCoreApplication.translate("encrypt_pdf_view", u"加密级别:", None)) + self.label_permissions.setText(QCoreApplication.translate("encrypt_pdf_view", u"权限设置:", None)) + self.checkBox_print.setText(QCoreApplication.translate("encrypt_pdf_view", u"允许打印", None)) + self.checkBox_copy.setText(QCoreApplication.translate("encrypt_pdf_view", u"允许复制内容", None)) + self.checkBox_modify.setText(QCoreApplication.translate("encrypt_pdf_view", u"允许修改文档", None)) + self.checkBox_annotate.setText(QCoreApplication.translate("encrypt_pdf_view", u"允许添加注释", None)) + + self.groupBox_output.setTitle(QCoreApplication.translate("encrypt_pdf_view", u"输出选项", None)) + self.label_output.setText(QCoreApplication.translate("encrypt_pdf_view", u"输出目录:", None)) + self.label_output_dir.setText(QCoreApplication.translate("encrypt_pdf_view", u"", None)) + self.btn_choose_output_dir.setText(QCoreApplication.translate("encrypt_pdf_view", u"选择目录", None)) + + self.label_filename.setText(QCoreApplication.translate("encrypt_pdf_view", u"文件名:", None)) + self.lineEdit_filename.setText(QCoreApplication.translate("encrypt_pdf_view", u"加密文件", None)) + + self.btn_encrypt.setText(QCoreApplication.translate("encrypt_pdf_view", u"加密PDF", None)) \ No newline at end of file diff --git a/app/ui/pdf_tools/split/__init__.py b/app/ui/pdf_tools/split/__init__.py new file mode 100644 index 0000000..5fb79b9 --- /dev/null +++ b/app/ui/pdf_tools/split/__init__.py @@ -0,0 +1,4 @@ +# PDF拆分功能模块 +""" +PDF拆分相关功能 +""" \ No newline at end of file diff --git a/app/ui/pdf_tools/split/__pycache__/__init__.cpython-313.pyc b/app/ui/pdf_tools/split/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..db27cd76bdac8bddf57a87ddc5d89e823e40f3df GIT binary patch literal 217 zcmey&%ge<81YBAo8J0l$F^B^Lj8MjB4j^MHLoh=TLpq}-Q>i$R%N5|__N=?@X-C`h z**l)LZhqP||3&j&EraY0UINlbivW?p7V re7s&kEHx`4u@PV0;k?|7?6C+Cz3y=!{^KC%m literal 0 HcmV?d00001 diff --git a/app/ui/pdf_tools/split/__pycache__/split.cpython-313.pyc b/app/ui/pdf_tools/split/__pycache__/split.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3f9d430d122cd39b20168cc5e2bb8ed4320486cd GIT binary patch literal 22345 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

7=6 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 0 and self.radioButton_single_page.isChecked(): + self.spinBox_single.setMaximum(self.total_pages) + + def change_output_prefix(self): + self.output_prefix = common.correct_filename(self.lineEdit_prefix.text()) + + def select_output_dir(self): + text = self.comboBox_output_dir.currentText() + if text == 'PDF相同目录': + self.label_output_dir.setVisible(False) + self.btn_choose_output_dir.setVisible(False) + elif text == '自定义目录': + self.label_output_dir.setVisible(True) + self.btn_choose_output_dir.setVisible(True) + + def set_output_dir(self): + folder = QFileDialog.getExistingDirectory(self, "选择输出目录") + if folder: + self.output_dir = folder + font_metrics = QFontMetrics(self.label_output_dir.font()) + # 使用 elidedText 根据按钮宽度生成省略文字 + elided_text = font_metrics.elidedText(self.output_dir, Qt.ElideRight, self.label_output_dir.width() - 10) + self.label_output_dir.setText(elided_text) + self.label_output_dir.setToolTip(self.output_dir) + + def open_file_dialog(self): + # 打开文件对话框,选择PDF文件 + file_path, _ = QFileDialog.getOpenFileName(self, "选择PDF文件", "", "PDF Files (*.pdf);;All Files (*)") + if file_path: + self.input_file_path = file_path + self.lineEdit_pdf_path.setText(file_path) + self.btn_split.setEnabled(True) + + # 获取PDF页数 + try: + with fitz.open(file_path) as pdf: + self.total_pages = len(pdf) + # 更新单页提取的最大值 + self.spinBox_single.setMaximum(self.total_pages) + except Exception as e: + logger.error(f"读取PDF文件错误: {str(e)}") + QMessageBox.critical(self, "错误", f"无法读取PDF文件: {str(e)}") + self.btn_split.setEnabled(False) + return + + # 如果未设置输出目录,默认使用与PDF相同的目录 + if not self.output_dir: + self.output_dir = os.path.dirname(file_path) + font_metrics = QFontMetrics(self.label_output_dir.font()) + elided_text = font_metrics.elidedText(self.output_dir, Qt.ElideRight, self.label_output_dir.width() - 10) + self.label_output_dir.setText(elided_text) + self.label_output_dir.setToolTip(self.output_dir) + + # 输出文件前缀格式:原文件名+拆分+文件 + filename = os.path.basename(file_path) + filename_without_ext = os.path.splitext(filename)[0] + new_prefix = f"{filename_without_ext}_拆分文件" + self.output_prefix = new_prefix + self.lineEdit_prefix.setText(new_prefix) + + def split_pdf(self): + if not os.path.exists(self.input_file_path): + QMessageBox.critical(self, "错误", "请先选择PDF文件") + return + + # 获取输出目录 + if self.comboBox_output_dir.currentText() == '自定义目录' and self.output_dir: + output_directory = self.output_dir + else: + output_directory = os.path.dirname(self.input_file_path) + + # 如果输出目录不存在,创建它 + if not os.path.exists(output_directory): + try: + os.makedirs(output_directory) + except Exception as e: + QMessageBox.critical(self, "错误", f"无法创建输出目录: {str(e)}") + return + + # 根据选项确定拆分方式 + split_ranges = [] + + # 按页数拆分 + if self.radioButton_by_pages.isChecked(): + pages_per_file = self.spinBox_pages.value() + if pages_per_file <= 0: + QMessageBox.warning(self, "警告", "每个文件的页数必须大于0") + return + + # 计算拆分范围 + for i in range(0, self.total_pages, pages_per_file): + end = min(i + pages_per_file - 1, self.total_pages - 1) + split_ranges.append((i, end)) + + # 按页码范围拆分 + elif self.radioButton_by_ranges.isChecked(): + ranges_text = self.lineEdit_ranges.text().strip() + if not ranges_text: + QMessageBox.warning(self, "警告", "请输入页码范围") + return + + try: + split_ranges = self.parse_page_ranges(ranges_text) + if not split_ranges: + QMessageBox.warning(self, "警告", "无效的页码范围") + return + + # 验证页码是否在范围内 + for start, end in split_ranges: + if start < 0 or end >= self.total_pages or start > end: + QMessageBox.warning(self, "警告", f"页码范围 {start+1}-{end+1} 超出文件范围(1-{self.total_pages})") + return + except ValueError as e: + QMessageBox.warning(self, "警告", str(e)) + return + + # 提取单页 + elif self.radioButton_single_page.isChecked(): + page_num = self.spinBox_single.value() - 1 # 转为0基索引 + if page_num < 0 or page_num >= self.total_pages: + QMessageBox.warning(self, "警告", f"页码必须在1到{self.total_pages}之间") + return + + split_ranges = [(page_num, page_num)] + + # 拆分为单页 + elif self.radioButton_all_pages.isChecked(): + split_ranges = [(i, i) for i in range(self.total_pages)] + + # 禁用按钮,开始任务 + self.btn_split.setEnabled(False) + self.startBusy() + + # 创建并启动工作线程 + input_file = PdfFile(self.input_file_path) + self.worker = SplitThread(input_file, self.output_prefix, output_directory, split_ranges) + self.worker.progressSignal.connect(self.update_progress) + self.worker.okSignal.connect(self.split_finish) + self.worker.start() + + def update_progress(self, value): + self.progressBar.setValue(value) + + def split_finish(self, result_data): + self.stopBusy() + success, output_dir = result_data + + if success: + reply = QMessageBox(self) + reply.setIcon(QMessageBox.Information) + reply.setWindowTitle('完成') + reply.setText(f"PDF拆分成功") + btn = reply.addButton('打开文件夹', QMessageBox.ActionRole) + btn.clicked.connect(lambda: open_file_explorer(output_dir)) + reply.addButton("确认", QMessageBox.AcceptRole) + reply.exec_() + else: + QMessageBox.critical(self, "错误", f"PDF拆分失败: {output_dir}") + + # 恢复UI状态 + self.btn_split.setEnabled(True) + self.progressBar.setValue(0) + self.worker = None + + def parse_page_ranges(self, ranges_text: str) -> List[Tuple[int, int]]: + """解析页码范围文本,返回(开始页,结束页)的列表,页码从0开始""" + result = [] + # 验证格式 + if not re.match(r'^(\d+(-\d+)?)(,\d+(-\d+)?)*$', ranges_text): + raise ValueError("页码范围格式不正确。正确格式示例: 1-5,7,10-12") + + ranges = ranges_text.split(',') + for r in ranges: + if '-' in r: + start, end = r.split('-') + try: + start_idx = int(start) - 1 # 转为0基索引 + end_idx = int(end) - 1 + if start_idx > end_idx: + raise ValueError(f"范围 {start}-{end} 中,起始页不能大于结束页") + result.append((start_idx, end_idx)) + except ValueError: + raise ValueError(f"无效的页码范围: {r}") + else: + try: + page_idx = int(r) - 1 # 转为0基索引 + result.append((page_idx, page_idx)) + except ValueError: + raise ValueError(f"无效的页码: {r}") + return result + + def closeEvent(self, event): + super().closeEvent(event) + self.okSignal.emit(True) + + +class SplitThread(QThread): + okSignal = Signal(tuple) # (success, output_dir) + progressSignal = Signal(int) + + def __init__(self, input_file: PdfFile, output_prefix: str, output_dir: str, page_ranges: List[Tuple[int, int]]): + super().__init__() + self.input_file = input_file + self.output_prefix = output_prefix + self.output_dir = output_dir + self.page_ranges = page_ranges + + def run(self): + try: + # 打开输入PDF + pdf_document = fitz.open(self.input_file.file_path) + total_ranges = len(self.page_ranges) + + for i, (start_page, end_page) in enumerate(self.page_ranges): + # 创建新的PDF文档 + output_pdf = fitz.open() + + # 复制页面 + for page_num in range(start_page, end_page + 1): + output_pdf.insert_pdf(pdf_document, from_page=page_num, to_page=page_num) + + # 生成输出文件名 + if len(self.page_ranges) == 1: + output_filename = f"{self.output_prefix}.pdf" + else: + # 根据页码范围生成文件名 + if start_page == end_page: + page_part = f"{start_page + 1}" + else: + page_part = f"{start_page + 1}-{end_page + 1}" + output_filename = f"{self.output_prefix}_{page_part}.pdf" + + output_path = os.path.join(self.output_dir, output_filename) + output_path = common.usable_filepath(output_path) + + # 保存PDF + output_pdf.save(output_path) + output_pdf.close() + + # 更新进度 + progress = int((i + 1) / total_ranges * 100) + self.progressSignal.emit(progress) + + pdf_document.close() + self.okSignal.emit((True, self.output_dir)) + + except Exception as e: + logger.error(f"PDF拆分错误: {str(e)}") + self.okSignal.emit((False, str(e))) + + +if __name__ == '__main__': + from PySide6.QtWidgets import QApplication + import sys + from PySide6.QtGui import QFont + + app = QApplication(sys.argv) + font = QFont('微软雅黑', 10) + app.setFont(font) + router = Router(None) + view = SplitControl(router) + view.show() + sys.exit(app.exec()) \ No newline at end of file diff --git a/app/ui/pdf_tools/split/split_ui.py b/app/ui/pdf_tools/split/split_ui.py new file mode 100644 index 0000000..2b15c03 --- /dev/null +++ b/app/ui/pdf_tools/split/split_ui.py @@ -0,0 +1,215 @@ +from PySide6.QtCore import QCoreApplication, QMetaObject, QSize +from PySide6.QtGui import QIcon +from PySide6.QtWidgets import (QCheckBox, QComboBox, QLabel, QLineEdit, QProgressBar, QPushButton, + QRadioButton, QSizePolicy, QSpacerItem, QVBoxLayout, QHBoxLayout, QWidget, + QGroupBox, QSpinBox) + + +class Ui_split_pdf_view(object): + def setupUi(self, split_pdf_view): + if not split_pdf_view.objectName(): + split_pdf_view.setObjectName(u"split_pdf_view") + split_pdf_view.resize(800, 600) + self.verticalLayout = QVBoxLayout(split_pdf_view) + self.verticalLayout.setObjectName(u"verticalLayout") + + # 文件选择区域 + self.horizontalLayout = QHBoxLayout() + self.horizontalLayout.setObjectName(u"horizontalLayout") + self.label = QLabel(split_pdf_view) + self.label.setObjectName(u"label") + self.horizontalLayout.addWidget(self.label) + + self.lineEdit_pdf_path = QLineEdit(split_pdf_view) + self.lineEdit_pdf_path.setObjectName(u"lineEdit_pdf_path") + self.lineEdit_pdf_path.setReadOnly(True) + self.horizontalLayout.addWidget(self.lineEdit_pdf_path) + + self.btn_choose_file = QPushButton(split_pdf_view) + self.btn_choose_file.setObjectName(u"btn_choose_file") + self.horizontalLayout.addWidget(self.btn_choose_file) + + self.verticalLayout.addLayout(self.horizontalLayout) + + # 拆分选项区域 + self.groupBox_split_options = QGroupBox(split_pdf_view) + self.groupBox_split_options.setObjectName(u"groupBox_split_options") + self.verticalLayout_options = QVBoxLayout(self.groupBox_split_options) + self.verticalLayout_options.setObjectName(u"verticalLayout_options") + + # 按页数拆分 + self.radioButton_by_pages = QRadioButton(self.groupBox_split_options) + self.radioButton_by_pages.setObjectName(u"radioButton_by_pages") + self.radioButton_by_pages.setChecked(True) + self.verticalLayout_options.addWidget(self.radioButton_by_pages) + + self.horizontalLayout_pages = QHBoxLayout() + self.horizontalLayout_pages.setObjectName(u"horizontalLayout_pages") + self.label_pages = QLabel(self.groupBox_split_options) + self.label_pages.setObjectName(u"label_pages") + self.horizontalLayout_pages.addWidget(self.label_pages) + + self.spinBox_pages = QSpinBox(self.groupBox_split_options) + self.spinBox_pages.setObjectName(u"spinBox_pages") + self.spinBox_pages.setMinimum(1) + self.spinBox_pages.setValue(1) + self.spinBox_pages.setMinimumWidth(80) + self.spinBox_pages.setMaximumWidth(120) + font = self.spinBox_pages.font() + font.setPointSize(10) + self.spinBox_pages.setFont(font) + self.horizontalLayout_pages.addWidget(self.spinBox_pages) + + self.horizontalLayout_pages.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)) + self.verticalLayout_options.addLayout(self.horizontalLayout_pages) + + # 按页码拆分 + self.radioButton_by_ranges = QRadioButton(self.groupBox_split_options) + self.radioButton_by_ranges.setObjectName(u"radioButton_by_ranges") + self.verticalLayout_options.addWidget(self.radioButton_by_ranges) + + self.horizontalLayout_ranges = QHBoxLayout() + self.horizontalLayout_ranges.setObjectName(u"horizontalLayout_ranges") + self.label_ranges = QLabel(self.groupBox_split_options) + self.label_ranges.setObjectName(u"label_ranges") + self.horizontalLayout_ranges.addWidget(self.label_ranges) + + self.lineEdit_ranges = QLineEdit(self.groupBox_split_options) + self.lineEdit_ranges.setObjectName(u"lineEdit_ranges") + self.lineEdit_ranges.setEnabled(False) + self.lineEdit_ranges.setMinimumWidth(180) + font = self.lineEdit_ranges.font() + font.setPointSize(10) + self.lineEdit_ranges.setFont(font) + self.horizontalLayout_ranges.addWidget(self.lineEdit_ranges) + + self.horizontalLayout_ranges.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)) + self.verticalLayout_options.addLayout(self.horizontalLayout_ranges) + + # 提取单页 + self.radioButton_single_page = QRadioButton(self.groupBox_split_options) + self.radioButton_single_page.setObjectName(u"radioButton_single_page") + self.verticalLayout_options.addWidget(self.radioButton_single_page) + + self.horizontalLayout_single = QHBoxLayout() + self.horizontalLayout_single.setObjectName(u"horizontalLayout_single") + self.label_single = QLabel(self.groupBox_split_options) + self.label_single.setObjectName(u"label_single") + self.horizontalLayout_single.addWidget(self.label_single) + + self.spinBox_single = QSpinBox(self.groupBox_split_options) + self.spinBox_single.setObjectName(u"spinBox_single") + self.spinBox_single.setMinimum(1) + self.spinBox_single.setValue(1) + self.spinBox_single.setEnabled(False) + self.spinBox_single.setMinimumWidth(80) + self.spinBox_single.setMaximumWidth(120) + font = self.spinBox_single.font() + font.setPointSize(10) + self.spinBox_single.setFont(font) + self.horizontalLayout_single.addWidget(self.spinBox_single) + + self.horizontalLayout_single.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)) + self.verticalLayout_options.addLayout(self.horizontalLayout_single) + + # 拆分为单页 + self.radioButton_all_pages = QRadioButton(self.groupBox_split_options) + self.radioButton_all_pages.setObjectName(u"radioButton_all_pages") + self.verticalLayout_options.addWidget(self.radioButton_all_pages) + + self.verticalLayout.addWidget(self.groupBox_split_options) + + # 输出选项区域 + self.groupBox_output = QGroupBox(split_pdf_view) + self.groupBox_output.setObjectName(u"groupBox_output") + self.verticalLayout_output = QVBoxLayout(self.groupBox_output) + self.verticalLayout_output.setObjectName(u"verticalLayout_output") + + # 输出目录选择 + self.horizontalLayout_output_dir = QHBoxLayout() + self.horizontalLayout_output_dir.setObjectName(u"horizontalLayout_output_dir") + self.label_output = QLabel(self.groupBox_output) + self.label_output.setObjectName(u"label_output") + self.horizontalLayout_output_dir.addWidget(self.label_output) + + self.comboBox_output_dir = QComboBox(self.groupBox_output) + self.comboBox_output_dir.addItem("PDF相同目录") + self.comboBox_output_dir.addItem("自定义目录") + self.comboBox_output_dir.setObjectName(u"comboBox_output_dir") + self.horizontalLayout_output_dir.addWidget(self.comboBox_output_dir) + + self.label_output_dir = QLabel(self.groupBox_output) + self.label_output_dir.setObjectName(u"label_output_dir") + self.horizontalLayout_output_dir.addWidget(self.label_output_dir) + + self.btn_choose_output_dir = QPushButton(self.groupBox_output) + self.btn_choose_output_dir.setObjectName(u"btn_choose_output_dir") + self.horizontalLayout_output_dir.addWidget(self.btn_choose_output_dir) + + self.verticalLayout_output.addLayout(self.horizontalLayout_output_dir) + + # 文件名前缀 + self.horizontalLayout_prefix = QHBoxLayout() + self.horizontalLayout_prefix.setObjectName(u"horizontalLayout_prefix") + self.label_prefix = QLabel(self.groupBox_output) + self.label_prefix.setObjectName(u"label_prefix") + self.horizontalLayout_prefix.addWidget(self.label_prefix) + + self.lineEdit_prefix = QLineEdit(self.groupBox_output) + self.lineEdit_prefix.setObjectName(u"lineEdit_prefix") + self.horizontalLayout_prefix.addWidget(self.lineEdit_prefix) + + self.verticalLayout_output.addLayout(self.horizontalLayout_prefix) + + self.verticalLayout.addWidget(self.groupBox_output) + + # 进度条 + self.progressBar = QProgressBar(split_pdf_view) + self.progressBar.setObjectName(u"progressBar") + self.progressBar.setValue(0) + self.verticalLayout.addWidget(self.progressBar) + + # 拆分按钮 + self.horizontalLayout_split = QHBoxLayout() + self.horizontalLayout_split.setObjectName(u"horizontalLayout_split") + self.horizontalLayout_split.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)) + + self.btn_split = QPushButton(split_pdf_view) + self.btn_split.setObjectName(u"btn_split") + self.btn_split.setMinimumSize(QSize(120, 40)) + self.horizontalLayout_split.addWidget(self.btn_split) + + self.horizontalLayout_split.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)) + self.verticalLayout.addLayout(self.horizontalLayout_split) + + self.retranslateUi(split_pdf_view) + + QMetaObject.connectSlotsByName(split_pdf_view) + + def retranslateUi(self, split_pdf_view): + split_pdf_view.setWindowTitle(QCoreApplication.translate("split_pdf_view", u"PDF拆分", None)) + self.label.setText(QCoreApplication.translate("split_pdf_view", u"选择PDF文件:", None)) + self.btn_choose_file.setText(QCoreApplication.translate("split_pdf_view", u"选择文件", None)) + + self.groupBox_split_options.setTitle(QCoreApplication.translate("split_pdf_view", u"拆分选项", None)) + self.radioButton_by_pages.setText(QCoreApplication.translate("split_pdf_view", u"按页数拆分", None)) + self.label_pages.setText(QCoreApplication.translate("split_pdf_view", u"每个文件页数:", None)) + + self.radioButton_by_ranges.setText(QCoreApplication.translate("split_pdf_view", u"按页码范围拆分", None)) + self.label_ranges.setText(QCoreApplication.translate("split_pdf_view", u"页码范围:", None)) + self.lineEdit_ranges.setPlaceholderText(QCoreApplication.translate("split_pdf_view", u"例如: 1-5,6-10,11-15", None)) + + self.radioButton_single_page.setText(QCoreApplication.translate("split_pdf_view", u"提取单页", None)) + self.label_single.setText(QCoreApplication.translate("split_pdf_view", u"页码:", None)) + + self.radioButton_all_pages.setText(QCoreApplication.translate("split_pdf_view", u"拆分为单页文件", None)) + + self.groupBox_output.setTitle(QCoreApplication.translate("split_pdf_view", u"输出选项", None)) + self.label_output.setText(QCoreApplication.translate("split_pdf_view", u"输出目录:", None)) + self.label_output_dir.setText(QCoreApplication.translate("split_pdf_view", u"", None)) + self.btn_choose_output_dir.setText(QCoreApplication.translate("split_pdf_view", u"选择目录", None)) + + self.label_prefix.setText(QCoreApplication.translate("split_pdf_view", u"文件名:", None)) + self.lineEdit_prefix.setText(QCoreApplication.translate("split_pdf_view", u"拆分文件", None)) + + self.btn_split.setText(QCoreApplication.translate("split_pdf_view", u"拆分PDF", None)) \ No newline at end of file diff --git a/app/ui/setting/__pycache__/about_dialog.cpython-313.pyc b/app/ui/setting/__pycache__/about_dialog.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15cb72ee627316b4bc8ff0d0edca21f55097cc14 GIT binary patch literal 12280 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 Bep&zk literal 0 HcmV?d00001 diff --git a/app/ui/setting/__pycache__/seetingUi.cpython-313.pyc b/app/ui/setting/__pycache__/seetingUi.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..047889e1b582daaa75fb476fc52944c1addb3b6a GIT binary patch literal 3709 zcma(UTWk~Ab;ghJbz;YXKmaFBCLu2?z_yg2Ev(uu$+9qnkn!O1kw~M#o+Q(bJ>kr_ zkd><4kE#Nx(pIXF@(C&u@U{Ed?|$`jy?AAGwI3^$AO2QNSA5cQ#vV_+cndemIp>~x z9(T^Y_nhOsbh=N#(Hu-~{fP;}ziASTc$?V!CldDsP0++Ef+B*bL?EI>A*#e6roNx8H7RQ031*b!a-#ShLl5aNI49L zm0=iGj=&M+C>&Le!7(KZS!D!9lu;N}a**@wM6Zk~<1ntsAS)9vp-jT0avY8;Q!u4W z!?ZF3GqP}0m=v^FR?y<>vkTGIH^AJclux{*Nj}8~)kO!)54X2%t7LeVQ{{1W$?!~` z^wD*zV)BH#?34`KBgJ^a9gx@z627~3daK==E0 z(WhPqqv~!rP{}hiy+1mVdJznaNxypOf^%ot*l}tePL?g#yJ3|#P0x28OfGw71y?B` zs}4qZhYzTlXOw<#mfO+^wMCR#htq;$d$K1ZabH*$K-2_?Xd*VjykC z^Ab-KE&U?y_T^!eFGbqgge3f@bKi^L4ZbfF#X?}4R@-Btjpy39d_W+{_I(MY2y5a( zTVE!L;8pAs(IQ%Op}hlHSW5&;#g1lCuwxyrP{5b=bG##zU(=p_K_O1k@VFr!_Q5O9Ws0R!c*HR*1VSv3Isa$NZzQHXJYtM*}LvU3=>l z@sUtApnAt6w6u1lBf0-<2RdA#FdEPy?s*Ey&?-Zty&X-Y>4;8X)@#n z)LSi12a+My`roSc|IceCv=vZ=;3))rR)!+w{g_d>q`748)?%+CUD;dDTScoMTzXl+x-r&oB4GNtty<|yksOlEv= z%K_^XtTu+-PUn4gC!4>#gT{dJnf3bhYk|jXEG%4jNtutQ-TkRNpXGgyUm91aK%`yM zYZXX;DuL-@6#%-DK;H~>{oo|o89>piR@JK1DpV`F^Q>DZbKH`kY(+f~~!%I^9{hP#7R^yKP}W|hse>&Eu>dd*tLU3nG?y0~}5MeEe| z4o@Jrwq3M%rd{k#wHb6--7oMYKNFs3hCcuF-lxrsT+hhQQ-jUaSUokid%KaEea=#! z_uuRP>*DTEgXO-J=btP+lYf3Uh7(+BvRs|znryz#=D#}e>jwMHx7q0jTGQHR)bA+IArUQ^f>h})s#=y<q(=T!qshl6FEE;IC zY@KDBY_87czRLfy!Op#**_=C9pF7uJ=f9VPWV)rWd#1tU7i_4>X1-=K54>;Ki9I~G z?q-ElLS5vx!dW`mLH_w^uT{zF~pu zQ5LE?x(*k~Olxzxj_Js=O1j~BVBM^FrmO2u1>bAyBdDkV0jftX73x0=|A~ypPyVnZ zit%e=OOymw@_9bcewC+GkA5QfF#-xXQ1S!nw)|WGjHo05`u*f*FQEPl(ges2PlvWX zu311m6$}!fP6`eZpza6`5un`xy=tHi1E`&WV+67Us8azdYLFu^hJYUk&9}N~7pP(I zlVmI7`pNb<@ump)$&KnRms%;?4-3$}3**Jv2d!iH72LoD%rJs`4Z-(OQ50VdN5s)r oLIC!BN{WhSUI|@b&z~|;JpW2Sut(s((v)~jyu0y(K-hQqKfy=ho&W#< literal 0 HcmV?d00001 diff --git a/app/ui/setting/__pycache__/setting.cpython-313.pyc b/app/ui/setting/__pycache__/setting.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9aea1ef24293e008733f68e70360141536469c07 GIT binary patch literal 5166 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 ZKRms{zkTMynKyrPgK6Ii5T?^K{lD&3QuqJ> literal 0 HcmV?d00001 diff --git a/app/ui/video_tools/__pycache__/video_tool.cpython-313.pyc b/app/ui/video_tools/__pycache__/video_tool.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7aac7a310f767896bed5fe63038e8b719e1544f1 GIT binary patch literal 4529 zcmcInO>7&-6`m!RJZ8?q-r*$ODHW}L@SIiH@X0aw$)F#v} zGrN=}2LY6#No*v66}UlJxIon+MUqR}Lx40$S_A2&haSvG0ja5t1Skwdr#f+fq_@7= z<%)_FRCWzIk)k>+M8P8UgRjS_eY^ri@iwE#hvU4WTy>k9a1HQVeEN zHf&4Tu|36NHs!#MloLCnRBlVVQXJ+C+Me!6b>dEgX4CGJ2YU?Kk@lv1*k{nrv_BQV z0fTm>cci*-R}}T3LBw+*#CPPmd?4=`c9?$P?)*-^bL0tx#J?jto7M+qqxn8qb%5Vt&4>5oquCSNN96ZdW5A;>7~`>cJe2Q-d4@Ll zSU#3bZ?`bq>VomT*+;j_!A3NDZhOBq&axjxB~Qr{?^>s-aVK%|a!C=(#Fd$x!ID@c zjtnnfl%N@x%M$6xoIW=u&B+CcxHFT|yw2;OH5+GOz~geUBsMR0R%zCz%0QMZiGra8pP%yjGlHW%; z3p-5DI7`OcK?XQu7MQWeqT6i_wbun2yV??qnhIJJ&sw_O=rOxyOCrtIjZVRQik)}l z><7TB3ELUKI5*s2&8EQo)(wl&757_~+AZ(2Y#JKjw#1^W-GdtdHch+JDDFB-P}K`c z$uHh|Y5fnc-+up(w_kjJe4VcT;=o8!hS=6xwHe-8a&IwFQA+DYP>K7AL#tLKj03R>G|@ z#DlAfA}b|fx-6E6OOy0!B`1?kI)&*AabQs?NhAO=vu9GCl^{Zi%kZNr#~p;#r1G@k z0EUP`gpo;yAQZ}?rU`;ZfjSChk(?PD$>%f)Yxzu77nNzSoF7v!C}mYFYWWkQw(y8L ze_&#Phl_C}FIFn~s+^yrw?xq4nrNHoL}dZ@(Yb;p9~EDIKIZ^q(p?|JjoT{{y@kl4Mo zXYbfi=x8$-`r6Kf`qyIjen}rsFXglM+`2=5t>Fof)8siA_96_D0-E`E&A)CL?(ZGb^``senx0|HB?OuyI z0I*|uZtaB#k8>L^a&}9uusQbouD`XHiUZd5J(oYX@pb?_*t5H>x!bK}!GMowyWgU+ zgBI0pvwPdLMNRFqsI0XZs{>kV9mXv8Y!bA{|HCX4>9>@rq}9RO0gPKuRNJ=_iaX9$ z>D#dx6E8+al0{J$lUUN!DlSM`GQ;ypO&!Zh{?t5zfh)7Ob`Sx8dODdh#i z(sTqZzmh!WIdc*>ACOH_|5LVTJP0km&Tf&K*JNMdm=S`)e|$g z-F46IW#6hNc{4nCV`y|GJa*}9(;sg52kZX9Hy>yW4cCW;KkB&d`@mNp8gKYd*8L}M z24l-ltppD*Ih)aaZ~1=jTZ!JcbSY+`$GnQs+iKI@Wk_vi=}Iat`pc!R@Pa`x;yVz`wyAsdGo(d%ki1ME(AWRW3sz z+kM&ns}r@Mns)Wvr(EnVEE#$><}fyJ0=zILPc+7={`uf zg$wg?vBh^m1ZuLXoWNMct-c*bI$vxeiTGwbM|2`x08)8LAz+nqEA!*3(}by*jmc zb}hJj*?z762HU&V7pZC2+&9>sFIlf+S8eVa1kD{$fIUO zSpg4hm~KAtWR6!Va8JQwRXH2C(+>(w%PEH9d!d3~g)O5`8mM*qZ|{Eb*FUXadvX24 z*Vifb#P<_lD{o0;^idT{#vWsqj;0saz!?K!Ohnny);7O6n(2lcvYtd$PEf2eQEi~r z0{~G`;rw(h(f$Tug%00BKmOXepV_^1VcGR| z=xYSzoyQo&dM;gDu?Ih6@BbI;`;0wQXAj+C_k7L<8f^FzHe5U3h#aj)j{YUK%Ko&u zxp%l88UC}r%09H#*}J6udj9qKmCoqm=$bpQ6j|!XUvu}@##h`!RLs46`i0ZKOjEs6zc_V?zw+eeCtsQRlnveqBQ|8L_J2VA_%#3k literal 0 HcmV?d00001 diff --git a/app/ui/video_tools/__pycache__/video_tool_ui.cpython-313.pyc b/app/ui/video_tools/__pycache__/video_tool_ui.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7eb441dde9befc35c5b54c4e628eb2cba7c93488 GIT binary patch literal 10993 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 literal 0 HcmV?d00001 diff --git a/app/util/__pycache__/__init__.cpython-313.pyc b/app/util/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4c7248aa2da048bd1a889a5ec945034edadd363b GIT binary patch literal 413 zcmYk1K}*9h7>1L!YVDYK@t_xjw;kNtv3V#Wn`|BwM5%&8AcVDUfi~&V7VUn4R}cOO ze~$;HC&81q$?$H9o9rcoFJGST&6`=ZY5}FU&FTn306xpZLfX8T?Wy7!ct8RVdfFL0 z)ue_1);-<50f4Hxp)oXSE0ZUybH$=VK`O9`pRxmpVA1<63NIAww( z7g=8_9H_x!RhdMB7bYRloTV(pOQ8z$FcN+i21l}@9LqGxuG*$Lgz(#3 bg~rbYfLkAW<#F<=Z@(MnR0qb6TvyC5aguE< literal 0 HcmV?d00001 diff --git a/app/util/__pycache__/common.cpython-313.pyc b/app/util/__pycache__/common.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..35d59e17846aca554d439bb2aa3977ffd8ec39db GIT binary patch literal 8803 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 GARho~RzJo7 literal 0 HcmV?d00001 diff --git a/pdf2docx/__pycache__/converter.cpython-313.pyc b/pdf2docx/__pycache__/converter.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6d330b95c223e5b90ffa2adf7295b7f6e2f3d432 GIT binary patch literal 21921 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≥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 MWBfaUUwwuD10v(q?EnA( literal 0 HcmV?d00001 diff --git a/pdf2docx/common/__pycache__/Collection.cpython-313.pyc b/pdf2docx/common/__pycache__/Collection.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..de4f6a3bb0fb05ae186c55ff91554722d91298e9 GIT binary patch literal 18794 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 literal 0 HcmV?d00001 diff --git a/pdf2docx/common/__pycache__/Element.cpython-313.pyc b/pdf2docx/common/__pycache__/Element.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6b235fb49d8d132cc0798c88dcca11c1fbca910b GIT binary patch literal 12815 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 VTYkpX{n{p3c=s%pNl!NZe*ucfksJU3 literal 0 HcmV?d00001 diff --git a/pdf2docx/common/__pycache__/__init__.cpython-313.pyc b/pdf2docx/common/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..be174553d52a0075c4c228d582d36d1e37849056 GIT binary patch literal 169 zcmey&%ge<81lI+4GeGoX5CH>>P{wB#AY&>+I)f&o-%5reCLr%KNa~h{i&ac$acWU< zOkinAVqRKeUV4m6etBL_equ^-jB8?XrBi-|Za`&lW=g7AOhHPTQA&PtMND#jZf<^F sOniK1US>&ryk0@&Ee@O9{FKt1RJ$Tppur%Ei$RQ!%#4hTMa)1J0O!^!?EnA( literal 0 HcmV?d00001 diff --git a/pdf2docx/common/__pycache__/algorithm.cpython-313.pyc b/pdf2docx/common/__pycache__/algorithm.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..18abfd736012531a292ff9831f400210c6a488c7 GIT binary patch literal 16564 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 literal 0 HcmV?d00001 diff --git a/pdf2docx/common/__pycache__/constants.cpython-313.pyc b/pdf2docx/common/__pycache__/constants.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..28b6f8208aa23aed20d16170b912b21f9824c22a GIT binary patch literal 1935 zcmciCOK%%h6ae6BJ9ZsE;@8-DwTVliCD6oe`hL0-dlHZ1Ok5wQrIMx5G4CfrwEz(2Y6QwF~93Yb>INU_obOVPa8! zdO)psH^`mq223w_7?_ZpY=7&iExRfAu9DKli$RjLWw_pyTtn{02kI-|j6D z((U>oF6TZQd*`R~t@xS`pE|XD@4ZLOx8mFPHg<2{d$X~NSgf`_yJLsb?HTa-1Hljz zjtmYBkBsizH8#E#z?Q8bB}8E;VPwMI=uh(yOG{NrU7N&AVpUN~wbIEbD3xkiSy4*G z=<=$h*S>Gw%H|SLNiE`%Doa&OFEs|{QAv$nl+@aqDz6><>kfHcDk^nFQ>F5=E%K6b z73=9PDNU85^GL(f-6gH9N|(2G(wCzfZB0`SQ4Uj%QjSrMQ%+INPym^5H{2-+U!fdL zOBKy@rW9S0B~>z=^HN>9(uroYs#eifw8n6^G@(_hQeC;Ml$H8=r?D~4smo=phF?38 zo{wfq^?FIKMOl2|1x>B5)*1ntf3C6N?`{X{<+60ST&gu9v}j3vdVYMdq{+He#b!6n zLtWRdV3FsN5`EU95d4vpHs#y_WP@^t(x$ZVM3gp#P-2ujl>3welp7R+ho-bC1W!(B zQ^+UCrw?c((A);noT3qh#E@?(ElQh0@W7S(3p65DT>S{SNw?pid_mdnJneUk+D{Pj z8u5KxfeJMVfpkkqcKWlbv93Y=71pV6*OX4gR}mW~#x#g*xzwtTIytW_$S ziXUnXyXv*6>bmJXUD1kb<A(>1ugMDAM#9p~xoj8-t^pglRcQc<&|& zw45X`XKi|0K@wz)Bgc%$ka6Oa!9;#_JHl345F|{*@CUnpyZ0FTCXC@xV`#(}iyEOY zEgkfXU}>Z^MjW2&7dHDC!|wi{KRwsw&A!NgKlk6)Ta$wkeDh#ynuJHcApw0q{sMmh Dt6w)| literal 0 HcmV?d00001 diff --git a/pdf2docx/common/__pycache__/docx.cpython-313.pyc b/pdf2docx/common/__pycache__/docx.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d5712a25d0cf0f4d9f218c1f4c5fcb208d435a40 GIT binary patch literal 20851 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

uRe;etE3VS{wFf zYpv%^JCz=60pl5jN=@Ixb(>^5HAc5{Gqypb|Ib-0Yg$RuInUX{2q`JGQuOX=}Z#^;z5*#x=KDk;twQz zB;ug%V<7wH`qPE=pZX%#?}G?KsRNC5HOd_>j zXXVd)pJ@vMj4<5L73NeS9Hh;I~wVLHkq1>j>tpoq+*!Pdk zjeiiVUJgEz3qG=V_3iO@PrPq`@4zp;OW}drPY&h7!};Ks$?oNT@zk|bnu0%n<&LQAH3gkh3j@7d;U=O?LaQ#KxVg*+i`O)D?_s;xLH-BGJRLVw2 zlH>_5#KrIysqrFpz@)T3)|a=NhIIlM?cEn}NMD;Ptb4fZkE^FZP>$E2F>O#fr3~;cJPQc`Y$nHf}ndG1weO+P*QR8E7!lW9Nd-*Zd(lH zgL`IA{jEDlH$Hs%!1hnw_*m#)biKCzwnxp4I!~84#Fq!EZ!oU6-tIZj3E>)DS_tVci5&KfSsICmyy-ahwo~aqR(% zm#P=SnqS~JS61XiChrE`xI>=kU*cns_n1DHGy#Pc){SP0SiHhRYjq0^Zl+Ky3a+cB zvI*S1<^lb1N^w5a*w#YQKk=hz3d3UKp*7wq#9R_e?UoD&)krcu)*MsfDVRC3EmLyh zY9bZczkgrb-nK*SEpVMA5S-Bxm*KZbDlKiT`w#EmfAHWw%PJ3wXCeG1&8$~{kaa;V z{2?2)8`qzv0yGiF*RJ|XQ1hgzDA+7a=#ZKdqX;gh$9Q@QYb%JcgH!=h(up6C2bUYB3bmr)RR(&!r zY0L2A0*A38Ql& zY0Os(OR+pKdk;gNBl<)v9`s2Pd?hz)uGfH>`h&~{?>(jeM`Qgb*^(IP zzSo z-=|5sBRhoBvbX)LXVu|L=MI~OAJf3 zHC}9eNLa`ku=4Nl4cWVt5qfZAb0LTYx<6qHyGU6K*&5wnEno!9#^f<){~lxhC1C{3 zfZ@0DGXhn#yPeD8=A5`WFK%5Hcjm;MZzXQG_AIwv$hBTr>VN9?KlyUL|0}mINAs;C z`A1@R#JC32*uhK$)0{60;F%AMQ+X&~hKy%QlIGg5{Ta}Os7f)0s7g!Nl(nzuJ$9?J zA?yH${~>XB@LD?Wx>Vq`#K8>-m&*ZLz~aPW_+gpjhF`Y`2Olzd=ztkFVm=WfSJpmJ zVNA+{_2|v6OV;?5uoF-8IG)Hm_%Ez73*uoa)=fjTaFPc+i)r&V&R2+<9Zb-tG1?0< zNbhk?R_Of;?U(RBngSRYB;Yds#R{(9$!rZnw=iP55Bpijzi(e_`{DM(2V2I|Q%%`4 z;r(Pr$9cZ6(nKLHO_qx_>sJ3f!a`eH>la5j{xG)x0G6-4)kglT#34EBH)|vUJlmkm zG;~O9d-q5UAW$ea=z(--;N+N^wx2rHiqwEM3Z|E-t+nC#J?2un>|kB3FuAprrqkrL zJ6Ps(k-|94-u;E4@u)Hmb1iKQ+LfN7owK+-W!;>l73eg@gs16bk$xuh%TT8l80!R@d0ElQ%!6;t!7BPVjQGi&q z`vGDR+;?RgmrFyr($KA@eCZ*?;lcIh%H}z*aRkT6vCGOy06sB}{t=?6)9_l(=41jQd#iDo041QHg{?Ac8J~%Vv56oBoJA zjDbG*r>W}iBT$hpbf~p$pFvYu8U}Y+6Pgk!i&&*tiJ)d$kcXyiD70fAM2wQWp_Ug~u?B@pOf#Z7+>@i0@Ln1J?ulQA)h;w_ z~*h+01@9y#0 z&e|4t{#KyhyR|;s1-*8`wpv?fJF-}DU%=1m5wGpg;=cO=em<^gwgo>Px0Tr*z2A7m z=9{m-FW~1cG-BJv`Ju(#OG49qSE;Rjbx**yd13OtfS=W^b++n-owQi>>Jh(9wk_;j z73g;{cAx*QZf>&m+7>q67wGryWn0izzc{ce;OFhw|DvDYt;R|OPX%Jg_$%nmi@gXR ZLs^R-`=;+?iSUb((v#a9zmROm{}1Ona3%l% literal 0 HcmV?d00001 diff --git a/pdf2docx/common/__pycache__/share.cpython-313.pyc b/pdf2docx/common/__pycache__/share.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5404d6210b41e83558dc083b8b803b9c4c228d58 GIT binary patch literal 11221 zcmcIqYj7Lab>0QAc#{N4kfJC{T2YimNFpRkq8^MShaw?~dQdW#u;qve2!aa`GPt1c zf|AIz8H}A|pvY;cCaPdJP3YKZrD-}VTr5{rxdlA;d{tw=Tqg*>piJ@c6cWptCcl(wF-GAq8eQ?`>5lX#hQ%6`(p94DR3DGN1;sIB>9m^t zF&8g&qSRGZ>gJ_xlzPfaJ-pP5(yFpjFE6b|X-%i4&}$Vh^P#M^R93CjH4CgpsR#5a zI~4y=t8(=|Qm@$s}KkE@xn^r#+Oq;&>F!xqve$NQ0R_GMHS9Z9JHi{VYEnVxhi z%}yuvjNvQh`m}hON@6CBObBN3XL%PsH-sU9iD0co5y46evnf_4DK=(TB<4`;%&9n- zOK~!{;$ohJJK!-~M^ow8i-S`W>Y@uhOnZ4=&Y%FZ{4E|vJXxf17I}&ozi0!vE%XPx zhBFe;qT^~LVz?ub@$~3qiqhUlZcOdUP>eHdNFR$bH8?TFoal=KB9p!u;H$#Bw#EftUAAw* zgvxm)Cp9^i z)-vjqOpwu*XI=u;0E@JOMIQkffKvzzWK_ax3Dgmw9+@A&aGmHoe&RIVL6c1br@<$~ z4p#J?3ZeFeb0I1^W!R6N9q0`W7!Kt`cW+<+aR%LE_HV9#J!Ll*0S!>1pS<9!1^s+} zfU4T;v9eTk-7Ck<_SAHB`n93vcN6-AGvG3+20@qJBm?!5X>F0_6>WfIQ?Wc+EDyT3 z$)`id1|tKs_AWWj(&KVUjc4RcT4u?_SVq2_%#4B3QJExqhaA;Lc}kZPX%jt@o*?Xz zbS9G?M}J4p4i27${GL5m=+CSn976rn{wjt?e`os6%jVOCS&S#IWG0y^C*x%k=d)TF z7mfOk_n#dIQL`>tQ?UelH^?S3Uz)+Mr~d8WD&g5V@d|$uPzzCr#j>k(w#~sv~g9- zEN(;p)BnW9BU&sBy4}H`tfez*SC^ZJIXI?5c;a!Dsai~xN7T$^Rn_F-;r_Gzq2Xc9 zhvDIH|Ed17&-V`xcgb$vY@1B=;6z$e<#e1&*iJ59J7X9dyx~L2?MJ{YbyS8XlywM8 zp>d(VE;$y}wnBQ<81&Z;Sq&zFvYyluDV2+)oYqoPtMjr7i{qN%(^Y|urfN6}V;VMM zu3_&9^$%j(OMIUgj+0?!umJx+k9j!`NE zP}Bg_vVzYAKS5YNkD4bnz>uU^n}tr)(ZlS>+sg6|CDsgIby z_!;yvy_?GcQ&Z6l*pVa_#iL+2^sNrsGZ0MC~d{N+yZbzxBzHA1I5)8 z3-E1)cQCz+k62Pna#CMS8I4SV`|;>xDiaJ?_!eS8^l%&Ag|4RJI*ltc+EGR|%`Z~w z(D3u+1uIJr15+ofkQE-;1>gF6HCyLuw%&Da<$JDTNi=c3q%R|JLkJ54_&)wzC@pV* z+=j=Vt`mZASR_SG&nTuTe|kT56T2KzKb&ZLddAe)i}K|$xLVjml^j`}gu#G~eHNXq z5RZ}mU`GJT$yb-uBV%cnoQ8#srXtj}(PWbF$(p0ocppGkSOOXS_i9?^YFgeJzxVW! zIs9sld?<*%gD`mae4FQdo8S85ds`38;paQBWEEWpKY`eX(CP0_?EeFiDvVSxU@ark zPR!v6`uISFODcmiR-{g2i8>YK;FX}0m+*14x$8Xg|4V>pKTS#s_OZhFyG`p4JIRYb zfjp~92=W6!fb?!IKo@s?WA8&=76D&OeMogI; z>mg0BFmSesYx{$D`_RPE$J~IpTT)w3SaX{K#}&7E{#uW zG3eK4P|Qfp>C{LrC{~<;l3Fr@6HP<;#Dc}*=cs`LAS*2Ro4)Qcg_~4o@sW_=s+1vt z-7V4t!%%5Zszm}7aq$g{orO}(dZEfwiZwDP`B1rft^FA*x}UPaOf(I zR2jwv47!olY&eq|4qBk8VU4A9L*iuAZKxtA$h0pw*Wt7ZD)=9x0xx|5xcXiI5W!PF z=UKNYH+>P1$)C zt@{JckCl8zlFL3vU>yP4DP~Kue~h*m2P7~$Rg#qNf8QcXYd^5trL`t5p;g#9S|w+W zsd_gE7fLJ%3q?lALPFdmtXMmT5JekV*eE0{apACaqYxJZ*6G&g3zi9v8=OUQA4oUC zrNChzD#vjy%>)OJAr2t%wBde^1UAH2njui&)-x=Epuq@Ev^0qVuNb zwPJseaBjxC{2iWVR^h;jQ^9&r6u;r3)LqfVo5IiVLh)$uuX1^5_woGq%A*rU|p=H$Zg2NQm zrr<>D+;1zyS%UomtKm+Xiw0#8_+2D|iTTzGzB65-e3^F$EoT;9`5XN`5_>uYEN( zv*{c0T>SOuM_jeP+|(=vY}3+YCfrGLF7iLM62>;H|8 zy&$|++hO^kWuIi&C=^-23bMvra`uVb;0h&8)eHTys?jYT5LXOtv4nh@C^~quW}u|g zfKqrqx%ZOniD$Q8D4lc$XgQBP2*-;Tu%*rC$+3$)DVBBwbBY=lf>u>*Q=ETTq-koF zutl*@O0klvK+aZ?lU8zju^R&R>F9Aa1DPl4j>-eakHVZGa4omtW$?WaIpYNZ(_@Y& zGt+RyRGe24ID=VNIzTBT_;w{ShHrC(=42l~Jjf*097#1d-nf#ALKgguHwn z-DY0~>emUKT4#k{*#)O}#&*+v-Th7PTi!RT=Y7HZ)y>zmd(|y-)h)Ao|ElYat~U?O zSMR!NeXrX84ee`M{@J&zZ=HU#e_q~mr+ZHBoUh)Ov%cqSns+wm_slsrX1ftU&PA{G z&U9Wqo!^x2eyw%3;k6yN#9Nzg+ip$X_TKe$-nDg_O3eD`~nEJ zh3F!ITArIaGkLD}m^?C>Ol8^;el;&s5QXC*u?t{y8(MC=0%3#rU7=Vw30zQzTt+hK z2x9wfR|21RbMfh4EXV`7@hees)`BdozjX|9Bu&SYsT8}&i`Z8PaU8%9la*pqRUtO) z8gO32tA_v(MDYnOZ?5;6Yi83-ORnmkbKRVCUA}wXxgp#A?$%xNo{sNL&2D{7ojj1_L$6Z^;M?dv+=){2Ut?L$S(4voVzNE)UhmspmVMt2GAH2lU zCb8Oy&0%pxSA=m-RPH1wR>h`Ba1}5lX$^8IcpBSH6VJ4od@gHWI*4$6&}Hg?B6kah zF*yzv@&iL*ueWvVz!nb>w~L%NH~Qjlu?o%vGc-wVDa?yYg{y)KGB|IX8#eYT;eC++ zNxUImsWdHymv{oE^HJG#;Cvsi-U|RH!|loT+^@yX`?C#KrCjZT)AOo6(=n5{{+aoj zjk7JYFWsuW)p5K2jmbB*&(*ZgIorQxeP|Wxkgj#wA$Lr4{ z&AAnDasABxlnTB{;9CT402m@O!~~n7JV}5~$`5Y2`IskB59bB=4>4e`qyBFQ@#_HK zKDOga-|Eaa&)2uk)wIsJT5r|gdg<>v-)^4Y(>u4bcP`L7=L|t1|AF!DyBqUjJ~}fs z@7|Q{S@2Y6Pnzo7y`l~)lscJwE;ttMqLi__w5>IWfg*Mx3?7xs-H!`4wB-*B0I4`U zlPH_mJQ2D;DuX}gH=hqF7R7o{((GY7VhvFLyf3JV6{fD*7v?o_MRQ#s+M9h{3A@Tz zU+hof{o(YzVno9D7Xj^$qTp-JvR-mw=i|L7c5`+C$8`H~7MhuL$E*JZ09;)+PUY8jW_unu+_~;oF5Pcv`gX&t zd%j`&Rd-IzMeqAyCuTR@*)!+cpOcoF1aEEj^iqR>X3=Yn_v;$IrRG03U)OfkVPZd( zkIr`IUzqo81-8$`t}0@CYiG9QpS|8b@0D}neIMa&%0EBv+X7sti7N@UbvfyQ$Cow3 zErxVCIhq+W>|-ijdm2(EnSpLAi53=7vOYt|@St?b^FTr2IbWxU2Q8XyMWhrH} zx8c-RY;Bh4WB9WH`64vopc^{w4UmO>55TY`AkG2HBJBol^cE>51(fentuu~$20b~g z!XI&J>g5Raz+F+pgRlii!9&RbyJ5wOR=Qf}B&+eP|Y{RXb&3Vt}pR@UAp3kdqx7?-l;Rl|Ytoav* zins*rEUvYhkobb|1(BkeVFCZN!IAu;lMWeV6ryoR%DGe;*XoGQG8H%2bR;lYqSK9N zQqvHVptvht*H^IiV~A~Xf+#Mxjil459ddet+D230NpG4iN+)PUT$B^i;lsypBvylR zuX%q)W@(TiIQ;k(?>UCc-Ipd2Eu!FZoX@y&cDU6o?)!FL&HwNsM_Iy@G+f<9<*tdT zt{8=rx`w}0{G&;bi^b8XuAT#Thp}ig9%U|t`ZW7PGe~|}cZeItlZi?AL|7n%i{S_c z_edvE8y+4_#xldh{68T25TZwQ0V795jzfw#TlJ`r4n<3e(*SrJrOMG26dDOw`U_Axj%rDUx%>0@xD zG93G$3#V@WL=n>sTS~bz$k|G{W5`J(J>^#Iys~;+e1KN^*fZ$vEGRwA5w;AJY~Bi5 z*ilqyP*>7G=}=yVVK2j=9boV0M_WT0RYxWh#|#($(jTLYYBPz`he{`F+Tn0}-Kfnyw9Rhz10G(3k({P((a4j)FRW{lZTzBX+ z{h~N$vsu%n!r>bG(b!gKhp|_JN|#xbPT?yB9QS|FjZTjGud~9>8=LdJcN@3Q9-C|2 zo;!}vjlU@`Uf-YVUGO*GJbC?O{_-tp-XF|`7V4UAZo9rMf8kc^eBDk2de*GJIemTl zZp-dFz4L1h=1%;wrv5vQzYN`q-A=!^e#>m^Z@X@H-O2pJ7k~K0pM>VupPX?&@U6M& zz3$C_?j2v-g0KFj^SU$N^p3CPL49+s-}KzMp0)Ao4)$Zrko}0jn>1nK^sro9wWF{! zW8EjL`@g9jb@@?N_|Q`8TDR0HAP(#;8_UW&H;4I0LZ^L*9ct3H$P5sb{R9<1CyYXe zziO(N8kX7wZ++IBJe(Qsy@&?HAHaaOW>YQZ(j2ieUu-T*}^k8%( zX2!YQ+$>IJk|~`>PIz#{{Er)La`Pg5H>Ey90GmnR_X=jvn>*=r4&%XF!wQ>chVs5l zW!C@6&n6i zX!w~>_3uLKe+ZqA><-aCV|ygv^T_WI>vI`O*FW;R#rm1vM*=>NnyW=0rSbW&rBOWa zPyqOFw?|z2Pyl$p1&!bL+r>2x>#XAXnaL#qpV`<4^jY${#G0J)NWkae2A8;Rw*CX8 z_boNK#N9JGmG53^k}!$EM*=<%eRi>CX3LU*Prj3XW<&gQE6hJ{PkumkOLcW(ZQlP# jz-MWfPxR%bB>|sVm4EK+c|^H~Ps><_@+$!!PN4qrMV0n1I@D0czk`*Y`9`@{F6fPWMPin|^zKnsXr6Dr%}YTybS{7mgm2_<1u z*nH7MP4Ko{G+(e#3x_c4Me79{wXwSGqWyw{I-qV3J1#meRL}}mcV2W|a8vgM5A|HA zq?HU-ak1)xmwGueYilE6SBQk&ubBqS8eLkwhXB;mM8cJ`6$2I>TC-sGSMl9eLPl>W zl#eM~LJ}33%TOsJP$enIT!Knz?()c3(B&F~w$i3l@~XfFa3Y@;dN?_`EO0y(xR`WJ zphBEWiripkX)u=JWqEM!`qQp z3+Z_w9*5Z?Q7+CaysnBd%FBzzNrF0yOq&*YSOE|v=p)mGxRBtpsnV?oOBfV_-1FwW zy%pw{bROpBE-#H|VPDV96%}6Nm@SyLd`VgCQaD*E&NAqFjFw}83j3QChioB?9RDWH`W16kgp1R>9 zTR(&EyJVJt`6bjGHc?C1Os!$dtnH{dY;7WMTd9545w|gBX26)A+2k^Mc;9z)lxVsEqRfL0iF2UmsSJLW*D!*5?;Y8)f9l*(Q$7s>6q5AA@ ztJMl@i=r%Ix(8sh!0F@v);c`yk_eeHF?iV{Vj9q)qB%n9$hk&BM9Y=-sZvb(h`}p_ z!~s5DPe{Zfn>o@!+=K(nFCKRi#y@wQ59viLyU~l7iz6G#DK41&=H=j7Ft}iUVvEM^ z0)vX8&^;8`5-KQJDsmH&CO>C$WoXUQSAy(!H}y~CU5YS z1dWh7JTf>Nkp(KxzLr&ZF~N%qvm?@VF(vVFd3KbSm(EBx0+*M<$+&QA*6@9^h-7vQ zS1y=YQZ0zMLi>bj7a*4x;PF0rRMSwX>B!Y|+WH*ej%*IC-OX(!e7TR@7GX-EYCn1b3RMo&!xq%%`S>{HS&Vhx)RY-k!s#`h4WIpZPi9U`JF zVg?+a0VR9HH03B6u2&;=V|*5tC37S5^le%M)N_8Jht&}`JV-x0S#BjS!!hHWodjBk+i-)j<%Ktvd^8SoBrfXtx2v*I8; zEDyw$Rd=5JHqm5qx-=!;`u0Ye6~4 zJQ;>KT<=j0m7lp*h^C6}3K3vXR|M!Z)BF-fT}e@k+u~ZJK?PohXvqjz!F!iPOB9V4 zSO|+4;#Es5kyvhJ#Bn=vU=}b6l(U(PL@^9Q=mf=8_E)JEh#l1mm|7IUvTEVuan+;q z#9$P4No|OV5=}!Sxh%vPnAu;7YEE&RsPzVps1^*ecC`_qCH@K;W9Z2$MsHwH2tHG_ zLu3U34fP-@u*Qt5SV~r%iKMa|g_v5k-Jn83R;?L+K~PNz)u!=kMX>6`sWQiC0k&0B zRJG4%6A6J*RA1GsD6|?XGTJ`0ZQF%5VF!mkS+#PE87}>E5XZP-hrCaoR*{wk7L-*6D^(!Nb6sj0)hXwbSsg|1V% zu2T=E^Id0ho{p7sYrVg#YySAkfBW{WE#`e)E9W-q8Vhwjxw@YFSMqhoRz^0h?#gyR zvZwi8Fz-9EUL9WV3+LhKJMz>{8e2X&dvEL~llg|8Rr7|gso)Fce4z*Cysv-Ny0QO2 zVgHHT{u2*t^ZQS&x&cdN?d?mqE`3tJ(Y(LV9LO~X?#J`Z{V<1(maZobOOyYP#8P?a ziJvqyJ?SIWb*lp(EU!EF{^@BAso%FnOqJ~$``iA;y=j5kcQS70e|crdGJM?ptK*&# zyY1ID6Fg%@LkjJv4a~?+K;?OEI9znYVKeH`Zmt@Pl8!fQ#XcRxZ(AOpFw_v@?(0mK zb@#{4FK32F&W?^A9tK67r^&z>DFr8+av&FYnbX^Ys_F3K|AV5M0@@xjsWv&2N-Ce3 znD)rX0LS!%c0g5a)^udo%@BhQGCH~U3G+X<1#frG+kL+-?+x7N zbKWEC&Leam^krnq++c?Aq|IGE+Z*| zsKCjD!^04qdE*eVv!epq5!_-u%n-5|14DM$xD@P~EPx<6l~CL>5Op}HkVydo)y8_z zQvfcNByMuGUYBH9fReTi!cR@SeKT|y*x3hp}z73w)7Pf(hLgTul zV4TLcK#aC)>uxbYxaiGA`(*Qc$h+hLS_2P5zqv0$9aLv|)&D#iz}m4}$(m-#2Y~c9O_z@R<6&QPrTj?=wVYbV*utt_EvPvS*dn_<7EITj(AO?EEPDLk%#z&*) zN7Ow#;A2DM=P$j1Ep|x3K*~jRBK{~)lrj9%{gP&E4gx@J(zeKMj#Ywo8IO6eQ9NXC z^SZNX#kz5zZQZ$lqrGF@$vtY^x0bjg6&er!N8{m@u?=tITIZ*Mj{|vc*GBV!Pfve* zy3icTHHRL!^UbI3I3Jb4D)P;PtIkK>hTHGmdT*UOmiHd}XJy0JddIp^#;2g6t@w>&lNACHG7*Ob*+w z%tY(~pp5^9g%>?n{)zRhj8uwMljev+tlAD|cMG8-#lwf_jd+a>jbU%t4*20cX$?Cf zRag_NBh?X80Kz=nro0=L1^lC)Br8p|u|yY#;TFr>&CM+?3jEw0^9gfvli^Swe6U?B z!?p$Gg}_q`82K%E5Hg#n7b6Q8X<9fTlp?-<{d#bD zF}av!Ouv&AWIRKJ`uh8izSMi9|IcF~G@p{@Lup+ zC%ja%sC;L|C0;Q0^1{FW8m^;ET_`5Vj$sqUm4jlF%99l-oG%o#!7lHEb4ficyM%tm#> z9`<2S*S?U21z@3uwJDOqr}TuP4w_fyqsGFj7D?_?tKboZ-DIHk8s7%ydIL~~t{#WL zk&5lIXiD21l?sk{j0$fcydfouoAXGn5~awA$kx}WH02Ihx8Kg zyQ_bHmR}xlBd_B_kQ5$5~DCq94sE$!3i4&t6;1hq!f2e_ZcTm zh{dc$nkGUP+}jb1remUQdnF@q^umRMw*}u}3&uYN@6f*iBej`g@^Cv@8nG7V4hcW5 z$lrLsmKa=c9{^Y@(ASfG9{!iW&NO%uEt??CzYVuJcqJ8+M7ShN!}lx}>{cy#el9G0Q23npb%6(hXf*}0Hl~~S8YsysyCa`C8E*Y3FzAi z=vUovkUIlvHVk5-5Zx2i0#Y>2lo&tIJ_d!QRjnvYwGw zIlz+W;8y^a{{j>nyj~;mHm)XaNh=m`D8BAOW8jO%z*mi-TVpFj-$0YR-V!W$LwRrL z!EoW|x!lonza3hCZTj=CvAHM(Q!`@ur^g})uc;%~x zS65Bn)HSZY^Wm|z>ANqh&8=HD(l}&-ne9IUNAc>0KW#RcD)xR|x92+<-O8^+)ngX& z8;g0&VfhR$mupmKl;y^wQPmZVrloi`B|zO1jlPrRQ!FJARlU(DyPwB!MwFo05yeb6 zR4kA$py0J2%40u00mHH=#VMLu)dP{Zl8ot~4gj%)x|XFsh@TiP(K&cPLLV{@*gJ{} zo`l~n2y!$^{|Y;>#3UxiwbTdZKMH-rCF5 ziV!baCiW|dprU{&Vp3CU;M|jz#NhTNKXqX5Y8?(n36DRD%hWE>0M}rO-tlactFzKWO`z*Gg-F|5tHj%()cZDV}HT_B5&o$Ti=oc kPwd25yW06b#N2!sgzD^h-}=;b$zp0)nfPCVZzhQU2d0^Zp#T5? literal 0 HcmV?d00001 diff --git a/pdf2docx/font/__pycache__/__init__.cpython-313.pyc b/pdf2docx/font/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..db1f7dbf052df07dd03f5ac1bad5f4010d1a255e GIT binary patch literal 167 zcmey&%ge<81lI+4GeGoX5CH>>P{wB#AY&>+I)f&o-%5reCLr%KNa~iGi&ac$acWU< zOkinAVqRKeUV4m6etBL_equ^-jB8?XrBi-|Za`&lW=g7AOhHPTQA&PtMNC?LUP(-R qd}dx|NqoFsLFFwDo80`A(wtPgB37WWAZv?3jE~HWjEqIhKo$Ujvnm+? literal 0 HcmV?d00001 diff --git a/pdf2docx/image/__pycache__/Image.cpython-313.pyc b/pdf2docx/image/__pycache__/Image.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8f57079524bf791e4b1fd2743ade95b1e91bcd98 GIT binary patch literal 4092 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 Ur1x3)2OL-Cmfrl5FoJ3NA64jKa{vGU literal 0 HcmV?d00001 diff --git a/pdf2docx/image/__pycache__/ImageBlock.cpython-313.pyc b/pdf2docx/image/__pycache__/ImageBlock.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dbcb57d6039228b9bbb4d46b079a6f2dee3b9f63 GIT binary patch literal 3075 zcmai0-EZ606~FwFD2kH&m5+MOdKWuE=pkB@B?D?~S?i=|V-;>@T0;wKV`!0*>ByvZ zNzEVIL!Jh?d$56`fQJoO`cxFyAF#dcVgG=e6n2RO7_hzMEv+52k2~j5lohYTE~LxD zbMEKw{LVQ%EEF^XZGWh+e3T{RU-*)?OiwtBK=_E5gb`CP#fmU1GLaHfGUbXiD>IqP zN=2E?unfo-5y+*x(0c&2X zMVDN<>awQmP|uG7y5O!yGkp3D`i|$j^aeHCwqKr_(w^eRh7f0GHX=8?{q9pSd6#h< z=yUzKPld#y@Z+F~3%C%xD13boO19%zjaFbs7C%-UH%MFWn&hwsnqLCEHNpgdSTqGD znIe--&6H}&HL*&r38p+wR@4=FMPM0I87C}jW}sKOEsHjm- zgXUzr-cwN0B%ca%h7>Ddr|q&>wJh|gWyPmM7ohQ5fNz43#XSo{<A?QmlzSigK{!}J{YN42)o zxatJ;^%{3V?HG%4dxMSQ7NY~Y^l)ehzYEzwm~N>=2B~a zmQ_&TFh8*|=nR>iLamIai8bzL3t1H_oKPVK8ywGR1v$a!;Lnq+a}IX{@WWmtfr&c!T%iy!kB%gCRFR7@AK*^`b9S zg>MVM#Wa7D|F=TA68Kx-{=R5N0dtdV%hSfOr#zqMS;wnKWxyS)2Lv__k29UNV@EDi zL1&1GOC;uoAzq*dKAXS^Lj#cWxmQ3N{s6lB%c^3~|yl z4#R1Xu#R++D{f`C^qqwVXS(`ls`1}Ip_e${{sIC51!)|llkHMZVP7RUVi4+{r32B` zo@l>$oVTjNVn18K9Ng(dOBwgx%w=HEdlRPcnv$?@k$;ci@P!PN8VHlYEXVmNZvOEm zbAf4;7gtOgJmjI)FMGbj6A^wDaPK6}p_lI1%x*Hfy$qhYd$+w2EeHN(EDLw zKFz_mt5EAYIM@B{J23g z;m8kht+4@)^q0B`mhfHZfGE#Kh(5HRpM>ARx$ph?{Xe|FHP@ZlnR%>#XZMXitv!f7 z+5C9(;VW1Fdj4-0{?0zr7clOIyXuid3L{%@?dj)s?MFI2C=GR0PO(o3!!Hb@fMwpd zS6wLcnq{p9PN#*kZdt$T*sY$WWLXW5g%QS>AAmV);cY>XF~RWa%qXnK(+1}~;}<&x zUjvaHd3DQKzOuL(S!VfR&WOgZ&cIirj|AIT_FUyl@(;X?u)za?K{&M2~3Ikl@iCn)hH{{u39$D#lL literal 0 HcmV?d00001 diff --git a/pdf2docx/image/__pycache__/ImageSpan.cpython-313.pyc b/pdf2docx/image/__pycache__/ImageSpan.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ee1bb2049464e80dac492dc6c17f047827b0ff83 GIT binary patch literal 1137 zcmZ8h&rcIU6rSzwwxy*~1tLPgiQ&K=>_Gzwtsz0s2t?2>oY-VC-A>DDyIW_bmg0qz z7cUw^^bhdj-{J*M=q4VFCvKR^-8bEqMqV~=-pu>;%{MdK$z)Op|D z>=~T}FpiLoII=Z6wxO-Zcnl+3w~Y;bUFSMR6X*`I%}Hd(9erMp^0-k=SjmH>wK}ab zEE?3uB`R1M2R;_G&M>DfT&9v@A$il4P0n!3lY2NyDAfY@WiE9FsF0X@x@-Hvg?)+Z4+ZG*?FrWFr|x&>?icBV);NDq+a zT-CNO1{i8nokLJZXa^PhjbPrF9c}kAr>HWn$b8Q`*ITDqq$(w@gu!&aw=|1(hx*>Z znx!3lTj7jKhJDtG$WnX2LFol^WkjLZl<1^c;FYMEC>K7~QJ z%9*Qp@*r0P)5_y*%BxKFBZ~|U#_t7R5|+oy*bN$O98|C;1*^dTpD!5~P(?&2WVccQ z2Xc?`mM0iy^@eN@Fz0Z}GQ$kCBXs~u6gsY$4u>BvuWWA>${1 z3k?NaC{8gBpRDGc9Ra;Ur!7 zK6>-h;)lhLh2!Cwzj2hk_3q7aalWCio#UHre*R87{j<5)a!xYJp`_P08xSei-ySu5#%L41tID&2=(I5bxqU$ b#5K*hh$HRxPc-p2eqEb-Z(bl6y50T(O!^&C literal 0 HcmV?d00001 diff --git a/pdf2docx/image/__pycache__/ImagesExtractor.cpython-313.pyc b/pdf2docx/image/__pycache__/ImagesExtractor.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..da88325523cd5386cd01f3d5876051145f915231 GIT binary patch literal 13230 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 literal 0 HcmV?d00001 diff --git a/pdf2docx/layout/__pycache__/Blocks.cpython-313.pyc b/pdf2docx/layout/__pycache__/Blocks.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..30c01c32a1b77ec3572c918a361ada9119d873c7 GIT binary patch literal 28571 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 J=z_iJ{{WXeGfn^i literal 0 HcmV?d00001 diff --git a/pdf2docx/layout/__pycache__/Column.cpython-313.pyc b/pdf2docx/layout/__pycache__/Column.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d246806cb8dcc9cd05523f8fb4c63f5bd5f2affd GIT binary patch literal 2178 zcma)7UvCsu6u&b&J3G7WVoQU{rj=`pftBql#*$EJV*!n}&>)i~MAl5FGk3Q`cjvD6 z&V(+8gcl7aCO#3tC-udU7~_Lqz;6IiQ<#KA;}dV_!UJ!fGc&s^Bt&mA=bn4dpL_1P zzjLNnEEWii?XlvwcL)&31@MfLZm5k+;zJ;W=U^JA>Ed-ppo(w#{ z8G3Sq1{+K=*l9GFV17Vbc9(~Ng!8La>hplj&lf0+W1&EKs|!BEPKS$t+CdUvaDmhG zR4@bm*x-|xqUpZ%b-uN4p6=gzy+XV2Z5@R9V7W4+(c;dg1f6q_&Cs+8LCnx~l)^P- zVEYb}1G7sNRQPDfkKC|3?3sRI>9hUBelHd7sqj2yB`Uz9w339wN_rdH3rshZgmIj;!=;UV&7 zP81Lpk)B}U-Xy4B+?gzf0pb8`1_OCSRj&l(Dyfmv1JPqEHJIKSYxxb4dNJGSf|EGW~nHm#;EPORzJ7_5{5TtKuxXzxlI0?dga&g zg|E+EQ+_D@wDfbZT|V;F%h%6d(Ql3~+(FsmKo)M77y7cr+s5d&QMzT6t{wW#m>ydF zZcIP=Cr5TJK8nT{5M8d!& z610(ffqX{pXp?_ri+8k2FGKVlx3$WBJ)52RX88eu>EW23ok<*^*=o5U&?*{tc)Jb1 zRY*qK)8l}mV$#8?Np}|->W;*KuA129le)+UY%8c@yHAQG4(rKKBjZStp+$iS#zK$d ny`NDO=uUu@pOA(drhpw&M{w5*ZIU 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 O|IyELPbI2xV*d-g8r}l{ literal 0 HcmV?d00001 diff --git a/pdf2docx/layout/__pycache__/Section.cpython-313.pyc b/pdf2docx/layout/__pycache__/Section.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ce008de1a0e2986a165a23d790002716577bb6c4 GIT binary patch literal 3872 zcmZ`+-ER}w6~E&dj~#yyLvX%by_h@ixw19HT$WdtJL(Asw$&Z)S_o<7A@O`|E@KbI1DY$I{JNy;hN7 zxd|G_`kP|2suWa^4Q`QnyMT1EX&$%8fU}1@Cuo%!5Fx9qnhk4r`cdTr=lxFP1%^M( z*^wJ#vUKk3^@~@tF9NP8YN{4`gE0h+U1uQrXAMnrBmV+U3KxnX0*wON@mm8UI!JyA zD9IDX0a5}I$9O3w1@eN#=YvB+jtp^<&`oB-Gr|nV#C%8!c9UVx4huW;BF?iGDU^>4 z1rRqg0*gv5-Gs%Y2=s9&%68?*DUP)sCh52x@&NQ=AK0;jPVnrI_aOzrcM_gBM*MA_ zhVC?XkK9aXFmjv3<%otK>9only6fQe2XR7f9va3#L8D|kkml$Ab5So_WkoB`tJKGE zSvM_3FCd6V*|h26$MJ}!%DM$ut|HbIEj>adJY_niTC=LEQ>8cquYf|&@eCbPOA6rH zqyXE&jB|e898GBe<88)9DT*+M-1C9da6K`%8_Gg5xwfj17qDH*a~<=n>Dx7TQq|N7 zD80?Zv>OXTvT1?E;KhzjsU?G{vU>nQNEMaYVOcIim}EH}v;|YuN{%jrcoJK5U9ekZ zxu7YgDa$4z2|<0=zA!eD&zUMS^Y7Onq$Ne4&W{t~F)fopZCTvSiw ztHsifibi2B@8)pc`>0H{&UWKg318s5a{#0!cHiD58wt|h^GRgA_rQYiINbFt9RE19 z8tz=~_-8o12`Z$}fCaoDfE*BY!r&g6Y|Q1zur~%+a#_d~UQ_in$M%4tiBps%p|`_+ z+Be)<%B8nSrCk z478E=0NTdxYk?~wAyGm>rgOgMIWo}zeq%8KDd_HOAPw)75i;pqB`CihfW+w{jr5kd zOz<%5=I&S`>A?KEk_CtX!e+?NrpNK_86vqC%LR)9s49w;K>#6}vTm^LqNo)|2&Ht$ z4qCOUrZVJ!of-*{0WaWIY2G;vo10^ML26m5By^NaKA`}>~mKf1dA=(CRA z#o5I>pZ@w~R7^xRh}aVO&fa(2f%(1YXh+!QnKE10dSDoS=V<>8gL@>$O*8-o0 z?6c8U*7_c8ew%h*ct zpybL?7k)Vc=@OhjIH5WbZ=j&Wj0!c48UvC<9Aw-xNAFql;6B2W}2A?tG|m07&!Y|*1r3^|gHi-IGl)9RzZGxSpsnksa_79wfyTDq}#WBJC4 zvX)FO2o7~TxN!f%O7^d#YrQ8N76G-+o~7Bv+2#7fz9$_63m2Xxdp^DSG$fNgUn^ zIkk4MdoV${>TPn)0R2jEPi!S@} z@M4F&1vXc(BeUhAbz8;~#zh+f15?sZ${{qmTXOf$Gz?w^vH2V5AT4*1w)Um|#r|cs zx~Fd;^wsenuO(0ZedwXGR9Y-8zrR>s;r=XsF0Op|dCTMW^xuXSB3~v?J`1<~{sM4% z_oME|;h{~Dbo4Bo|5s~rS-Ib_)=JkCZA-0-t$&IiO*1Ie{ zi5+|uhb7;=Y9Z}EaajEisWa_DI^Z%C9yg?u6TfUafyI!nR8(2EBeGmEiZu<#F9rFZ-YSRP@7{t zn{Kf~GU5W9+KuqYs89xFw&5sRFe(*8&)_sez}dS!36#0sp9w>-Fywv5E_)Y8STcFl z*3aBXpJwlY48PO-0dyNY$8j&kJ)H0+MY!~Ha^yM5JSW|+#W9ZSThQMSd^&di2Uag_ Am;e9( literal 0 HcmV?d00001 diff --git a/pdf2docx/layout/__pycache__/Sections.cpython-313.pyc b/pdf2docx/layout/__pycache__/Sections.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b9948654a5bc1a8fbc506db9e622c45b0a25d316 GIT binary patch literal 3823 zcmbtXOK%(36~6P}@G(P)vSdk?^%zm99R?N?8?w?UhEhv1Y)dfZaKto#l#a*bkYY{F z(07Kl!{)>dxsV0orYU03pL;f~-VpgVoZh@QU zF%NxS@ho`e1uQsyVZl4^!#?PH72kq?-jDsxyni7uFJe(f{V0r-zyMOj72z!B%E3}b ziUe;@&ziZMp0u;3A)9G=s<1wl%xRW2b?x&)Dt#tpCfA}lZQU%|QN`VMP0kvYtra~^)wQv3Iyd4LiqPVd)7XX|4bC75n> zX&fPgU9Q^~p~h;w;n@SH6YSYKKZ66_-UCbZZh~vV$ zVc}?D9e2??gqkz;%YYhjBZ>vtZr> z=gl#b44Aq1fSK9bqgOR->9VViTr^TTZdhE->A%x+(ZABr_dq0DdW6H>z@7LYw(YEu zvG7qCS~M8Ilo&W8e4K9RXj;KJcZ}{DfaVVRq3?L<;#Z&j>9fkv zL(^{&u!$GWQ)jnPoW@5ReF$T%)3M$m{#AU<`wX@ngrOlUgWX*^+|v!~C4^kl`mpn7 zEPdr~jrS7|H~6={@wZz2Mh|>43it6Qyod8XEOrwt)va+uc(r4$)C?2x-|nBqx@I3h z#;hSbIV|=DNKj?=;l^kh9?%m1zwq5)TBr_aeaO>Ln6q^^Kn7@{d4gG{=<84m@fG$1 z*5D4T9Lh1lj>EHQsF~n$RBMMaD8j{dDaHZ%NV%+`t5!iv0_a2p64X+uR&FI+K5G!^ zx(+$k-KArCJ4{s|B0Z+7TH4le#Nz-KVG2ZaSgz{X%&JY;LYi=3L5qq9B$MwrSVqE0 z$Ixo3n9r}b1kz-#))NVtZbDsNyP>O&AI{~>q?WU$qd$NC1W2^zq50_!s)f3%q0vfc zbSE@cI{$QFsGO+|pQ#L=c{H;#@P29GY1heZ<{#|0AO5|w(sijc^K@wBp|>heROE?A z%N6-oJ45G7Gk=IVP>QLiFx3ZB7~B2Nt5>gx=+q+FfB{ziTI3SUQL=gi-^?tb?q?)XcCxRj4fS`B^DD3@i(nNcw1ky ziN~^Wwm?|5K)AJhj)a<`>NSz$Cj1M^NPsonu!)q0>}#vpyq3|eh|ftn7_b8o#=!5u z*Ks4Jw!;)#h{xSZHI=VX2R5=1El+y-68YLgCW+T6fRZHTGI~>{qcr#ffWFWr(HwbNijEIn$Q4T&`Kf zT!*)K1Byoz%PIYOF(Vg>xL{g(6p9&od$*ylB?CX8pFWDPM1ZI@Z|KBxE1R-cV=%)P zfHM(Xb`jn!g!lqPsEa8AJdR@Cuqf!X;%^p4B-o5U%HtE5suzS#G4$QQ=!Q@W^=^rq zVtH=6?^|v|tc1?dnc!xy8VW-UJe+tEdVAl4j)%by{e$icrwKC_2@s#E8d_dgRT5Cu zyqPNIXkSv*n?)^GU+GlUbQW7SMLolWWj>b$6=})pRBV_&6ztsgsH(z0A3K{=H5;Dp z^`fm?s*0&JSFTg$!5=$>X+ujGYZ#i}qdi{m^pq!FAo%=vgo8$!@VxudU_73Pdz2oC zMS{euQlNxubUApb1Gq$AgA~!3w^jiUQZ9~nCCz-^G@`A)S(sL8M6A!#11{`4{{_Gu zbh`s&&OO@{Aii_1siyG~u%V@-bqbn2j$xSR0>khx1;j+2p@C;8`V77I3=KX*!!Lv@ P3==7R{u0rzqtkx@hdV0a literal 0 HcmV?d00001 diff --git a/pdf2docx/layout/__pycache__/__init__.cpython-313.pyc b/pdf2docx/layout/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..46b8bd2267048bca805c02426c99a36e9b00977d GIT binary patch literal 169 zcmey&%ge<81lI+4GeGoX5CH>>P{wB#AY&>+I)f&o-%5reCLr%KNa~h{i&ac$acWU< zOkinAVqRKeUV4m6etBL_equ^-jB8?XrBi-|Za`&lW=g7AOhHPTQA&PtMNCd&WqxT% sOniK1US>&ryk0@&Ee@O9{FKt1RJ$Tppur%Ei$RQ!%#4hTMa)1J0PEB%0ssI2 literal 0 HcmV?d00001 diff --git a/pdf2docx/page/__pycache__/BasePage.cpython-313.pyc b/pdf2docx/page/__pycache__/BasePage.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c647c6af71335cba3e7254d27b73ee15a2aad1d GIT binary patch literal 1626 zcmZ`(L2nyH6rNqL9cP`SX~0qATCl1j;#HGXiqagSVj!dlBxIE?K^9$UwDzv;4V&F% zX06yc^@LKXNX;RlJ&~S(8=ScE6Cy5k=gI-~mSQ2UyqR4)O=(BkH*enCH}Adgy*I<@ zX%)eGGCSS*D1*?S{4iQd$_&fE93c}CbO~KSrc^?vd|ghoL~3VrW&iz6o4Q(Lw_R<| zi#uAwre0HvNEo>!_FTHGxklRnofCJKwT|nxJF#X5j<#!)wig)9kyE};q=#V*m?LB% zB7t++lt{)@&5Wg(3Vc~ByOuL^CA6dLNF--Xm=h&*JvAkHIOktDPnwfNZOeLr<$0*L zAkt@$FsiYv2#V#Bpja-6s5#1>U&wRiKM!vJIYRYWANFL`HD4O>+nM*IN_ud>Mgy$2 zk)I-k5V+6m|M6+y#h&eZ`zc<&-4DC5p{gH}Hr-G)SRx{=((*$)Ue>}W_QJsS^$m@O zooEeh%Wc_RKc-q7YOBVoAuLm5UuT-AUt^mju2tf0BhN>&ic-Ca{ z9I5FUlI4;dC%mS*!W8QIt(U}A8&0~+tel0`n((4LCX%>)>gO|01ghdZrZfJ z8TM9g^-a%l*R9BDz3YU{p2geF8dcSZ`YeyJ2Pk9AE{??`5qCyQK<=W`IW&LyzB-sM z-!A}pGG95)A1L1yhM+~waarNOjYI>i0|TQV@xtB){^bSIak2c`%ILH540CE=%%5NXPaqRrK^LXc%#ow;}diCUT_2kVe znE~y&s5$x~>aTz~La&av3%Nye(b}sc7uqkQUcI;ichr{zU0;ES>z{BcGL!bpJj7)3 z(=KX;0fj0N*D)a5i(s6z08An9Ozy2Rxes6O8tm7Y^cjRXyDl`Ait%pfbbZcGVf;@w3FaE<%r)89zd8$;08Q2F(6;R2|JeQSh zMM#F6OD^Zv)pVInUP5aZO_2Cds5vK zFcHx{M3Ip;VNtTdh=(=FNo=Gj+J`7Q-P1kXYowhs*_rEIB&0}*cr&o4ySL=~s=H@; zW@lLPma?b1s=lwj`nu}-tFK>0qagyN(iP1e8zSUCv11pX)p*6A@hK4rBce-mUvyn? zGdIPy=c4C=mwBP>6@3?d7yQi6+y0Az3j!0M9T0_!!3#kae6ySrppC2bA6gh zu!vO9RG^E zD6J_=l!hpjHp^NxPvM(rOC0kx*t&dEPh5tI<8uybQ)p|Z`IH~$75UAvaRIR?0qcib z)6B2oft|rNigH54+B(xVr~h5VH=~*mb*5gI>+F9&{lwY4^L^i7!h7pQnHBQN^`%f~78D0r z`}5jKjODXqv-HR`-3OKdtVCYP$~WuK8~LoB8>6%I#&mr!C+AmlI!wzs2G=CEnpa@( zYC&Gnrzt}m&~UXlO_x<&SJ!^(z_v{Q;@6o$))I*X@M6Jfk*UDFo|m=S^0%iE$4P9Z zph~*djueOHl~q~JPJffRk43cZY zHSaYSi=?7rbdVgg7Gxb_#~@*yVrQyr#w~UMo|o-Pb%P_>bqrqyirDSI?-6?dzgO&q zx=-v&^~0=wK5MtQo5hmkhb}fSPT~WG7vKN++d$yf4?Zxx4wH*u|G|jkLFhS|-pHw7 z`BCI7r(ntt_yk)t5{5gUH6q&ed@+qq3uYQVE{}%alt6q+S(zFB6;;*oX%aC6n}!kL zr=RAQPRnpV&EJd=KRnS>zWOhy=3JkWD_sQ(M939du(p7Zt6qEfawtiD8U^S~G9bE6 zcqmB$!P#He01eV?q(&;?NXFAPL za9KZAXd_uKR;Vg$H&jL_y^;sH1R>7G!-iLr3oCVEj#cY(aeb2>ClE}hc>tSEYhi$( z>oLnm#;N()R8o_fmikFamy{JrSxwEWHxzjHtd=?>Y3rxdn};r~i}|d4JY|Q!DKus& zl+HwPoed+CQQouP=r{~%IjH{d5!p$Qp1zL*)#0fp!oatF670AWC=0R8(l5?_Da6Xc z>75W6*jtI6`1yNZ%$LVcYk^6-$H*~_){$aZb<0J9P@Vo!Kus!|mh8GAv z8{D(u{p-$GuolVG3>kE=&5hn5G(IIsvIx)S0yf;W5O=W=0Kj7u9vV)hj6!V$Ya4HL z@b|0rmk~1p)kmaC#~*h->ilxxFdKt`1}4xxaVEZnMmr{eH854p1x9PuxDJESnhk9j z73w{^wTOq^RO+^K5xH+FK)s`B2)ZzeV%t<+M_qI!1jUtf!S=du?Gtqst~=Ic%(TF$ zPk0lfD=J%)^h8`RCAv|Cnp6UOACG?G!M4btTDX`)jZgvNZho?c2mG>zTTRXLW$4cg ze(_51c`MM@eg+jtt)C2xd=_{RsK$mr3q1(oBm5xjctjsWE3t#+*um}CA;++ZREfpQ zv3MnRxEwpY9eeA=u3%?q!?V*%x_UN3TuuycR??-6^W^blxwQNWWDumqwdfRR0Aj&A z^)YJ}_`DiM8*Gp0bzs+4Yl97;mIE7k;iV0>Uko^~YtjnxQuD+%1ws}fnrJR<=n994 zP1g?3ApU5*8xREAxUd`b_@Om+xBj8)&MimJz%Fq7?3b*9{ZS&x8BwmKc)?C%y1sXWhXG}utGWZD3s;sxy zkpQgSs3k^U+8Rqc-J@w1P32(+fp&xP9DxBN!p)*Jxr8Xcgo>+A&+hwE_og;ywz{{w z$H9&VK&AQz?_arhWpi~)+wMCEW1%XH zE(nG(SgtE$JKyBF)qM$bSUl>mgV)RdL?GC}<2QWVs5*}c?*lsCJQ@uhntjXA@hN`; zeeD2L{G{yN9r}$hR2C*TbH5QLtAnGsDb>!NySMM${!$p`JJWhEX1TdKOcXaL5)f@J zJ>k8&ES}$SSP)$++ZswST_~#&-@>$)eJ#> zT?e(Rc;uA4pEaNGp1!0T-UOlr#h>)Ga)e2LEBET4NljWwA9s=edgi9iByfjT@M>BL zo-x!QR91`D*;7?1tj8gJ35f#*u7Qx_z(DSl3~p4WtfVOBofG2JHCfN8Sx8F21+<9Q z8O!mml{B3$%T$J>C`A93SLT*UQ%fu(Q%;gkQ5m%~JKJEp&~YU~MlU4Ykn1$uAY^GR z&H0T7OwsfMP*$>rf0^eAjR=RPtzK_I0x8YN<{W#}FBOY8$BP+2AcWx96 zU!FYwRqusYK{7Pr+gKM=uNUE+YgMM_Of4 zF{c?}_ym)-l$oJy8^Xew57U=Uo;zcP{wV7_EW&B4a+;??cw}UR`GA?=;P-7KjLF!v zl@^QeoUGjofeE$SQ8PnpcY|xvbvcb(TL#DQK!=?~ZoEj*@NrUx2WWsb!g4^`|BfpyqB@i_b_46)FL_mj6d{9%s6 zzJa+D57)6h{LRRoEziRbO&WA;>-ay0usz}kr}mTu!1)hhoSPcM3m?d|h8s!E;QSlB zM%!?wh1<68nG}Q`T;&OHmF}zc?4a9L1PlrmaW|WaV}8q!VzFi%>JyVS^#^DD1Jl8- zy5I)dw`j%TJh-(|I*En2&&;p*z{x?pj0VH#gO)P}HeC~&16bT^I;1Oz=Yg#u`k*jor5JG^U-#_ZIQ>oU=%)6!A8eed zMs`&qljX?dlSsT8>8eCV%8`*uWV{?1-%5hBco`tQF@ALM5DxfkYa@3HV@J(q#=eh+6rs416z3ry;L{ zwwUL2e#AoohPItoZzJFdRDbv@@>}njXQQ-wAWxzE-g&Vr?xUOg zb_hIRaK{7BXQTUeeDDN~q7yp-Yzc(!+X-STgsm{PA_$FQtAmUk*y+Sp7ui4adnCyT z?p$#Zf5&gVhhKT%S@j-%>5uq&c1HVsy_+-N5_r5gO8i})bZqXU^}N{=E111RgK3;*!B%b0OZzGVqp07!6$lzTq)B%TR5NU3^4VN^6M* zOS~(iuC1v`qW%$xXC#e?HO^_6=Yy(fbXuu(J2A@-+UVjMVt#k!AB4D;nfnhxIx$(K zNI-bkl(adfLl@H;8j8S<$K`Up@K3nBzgut-*U(ck^^_!@l8L8e^eNf@l*GUFFS%XQ M8}Iy%;FDAQU#A+8FaQ7m literal 0 HcmV?d00001 diff --git a/pdf2docx/page/__pycache__/Pages.cpython-313.pyc b/pdf2docx/page/__pycache__/Pages.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..76278acf8417a319f38b82ddd6af507240d74a97 GIT binary patch literal 3011 zcmZuzTWs6b89vm7Vr0s8F7mCuoLEg_Wip**j#mrWinNNG*|p=5(H6kkXojLL3r%W= z)NC2p(5FEe3S<}%%pHc+eQSXM>*HScwAaW9D(|2L3KVCG=wIRB8(vAOd)b3+_6PsZay6 z+4bMmilysCTi=puTG^0RVOqyk%W*YJHyr5&Gqdu7gE`I7URm2@5(}E{+NAL!)MdY= zIY!_C1fvVKoM3nFdBGCe`L<+IlkP;n1zlz-G z>JmZW$(eF2Ezl@)@4OIUXM6Y-)?Z3%eccOxUD8=#{@{V=f&by(AcQAq&F3Teq*RwX ziSpbHmMsh`JcDLX?ViF}d>)-g?{IepfE&xl_lMwJ2#g2dyQo{2gOUMf{%k$KL9>=bsd??4waTw)!-*53ELZH!mN*o^Lv#;{} z()!vgY9#`B3i7#ErBC@3|2!m()$cpq0Z63#@bbXOP=ln&7z7MN;S<*H@S*aJ;}XjsL2+Y3LpNznnMs#|UrUz6}pT)a^&S6uwS zz#4XR&9aOl1{luZ%}Q0T;HrZy8}hE#YBq6UuVJ{-$|op2N@7q`8Z)+B0tie+=V7&` zLO?7q!Z3;QIx#fYprLA!#)#nnOdC`n+NSD)7L7tNt2HXt2DwFH1o zqnp*DTcLc#U;$FGWZIgmRyP>t(kPfST*`wTNR09iOk02G(4;2>0d(ZlE}PeCH6|7_ z?J`uPOkshPe85&D85AB%p3+1k@u8iE1%b21IP?swLWk_xWIchL>kwgt@j5l~D9D~2Dav<_6k#`( zu*>Se`x>!>bv)?Xxojctz*#8#v<`2~l4g|)IeXKBx)q(mZOv)CWp7QdHk4}7m@D|N z+5+=aSY=U3wFZk1a-%(627BmZ?tTmJq4&_y1$1`c&xt=Jb}G;MuQa0vaWp!sKAJk>(a`1gU}kSH^UtAwU-{RS*8Jkrd%tK6{<3*zU%b#3 zNB6|hmN>PuwI@z}%cBbuyKl5pv#r!@JC$vvvhCE(R_f;d_~ajZ4tSJEw#BhMajYe# zcZEGM-DO>Di5GV-Jr}1A1T-@F;rIvR&D{Ho`#{coFazY$zSs|nEpe~9x-MRl;TxD$wunN%R7{O*(yB%yA zzcI`%hP{kh03L|UgE7MTp5{E44s(ME!(5Vri6%SeqP*n@iN>yoGRX6Nn-DI?=s=uylW_PDgRZCUkxF+D1Wy5w%W!F+w345^u$hewY z)dBJd14_(wCkQWecH6xx&tB}#6_|dH{u4=k6UlMW z?;Wg!5P$9<6pjw;zJ7>cISd2ikTE(on0i_uZ!#+v+2o4{)uq`S0<|OQEi^kc7 zm%MLJ4=O#!ry`=l%}ybHOm2e?tFrStOb20(Kh L`5$7d7t{X%xWl)7 literal 0 HcmV?d00001 diff --git a/pdf2docx/page/__pycache__/RawPage.cpython-313.pyc b/pdf2docx/page/__pycache__/RawPage.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..59c2d3d6430182d32d4023a94dfe8ad58bbfc7be GIT binary patch literal 11191 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 literal 0 HcmV?d00001 diff --git a/pdf2docx/page/__pycache__/RawPageFitz.cpython-313.pyc b/pdf2docx/page/__pycache__/RawPageFitz.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b1a9d98fbbefdc3cb89c6218c459530c075ff8fc GIT binary patch literal 6699 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 DiW^Ws literal 0 HcmV?d00001 diff --git a/pdf2docx/page/__pycache__/__init__.cpython-313.pyc b/pdf2docx/page/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b9b9fe8be49fa8af26baeb59c39f06bf207dbc91 GIT binary patch literal 167 zcmey&%ge<81lI+4GeGoX5CH>>P{wB#AY&>+I)f&o-%5reCLr%KNa~iGi&ac$acWU< zOkinAVqRKeUV4m6etBL_equ^-jB8?XrBi-|Za`&lW=g7AOhHPTQA&PtMNC0rdTLC3 qd}dx|NqoFsLFFwDo80`A(wtPgB37WWAZv?3jE~HWjEqIhKo$Ue=qdjI literal 0 HcmV?d00001 diff --git a/pdf2docx/shape/__pycache__/Path.cpython-313.pyc b/pdf2docx/shape/__pycache__/Path.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d294caa064e797378f8a14463cdee49b5ecdbac7 GIT binary patch literal 17433 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 J4nJ&M{|#yw>N)@b literal 0 HcmV?d00001 diff --git a/pdf2docx/shape/__pycache__/Shapes.cpython-313.pyc b/pdf2docx/shape/__pycache__/Shapes.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b0c9544bec2f697e9b658f61cce002b3549f4109 GIT binary patch literal 11913 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 literal 0 HcmV?d00001 diff --git a/pdf2docx/table/__pycache__/Cell.cpython-313.pyc b/pdf2docx/table/__pycache__/Cell.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..374e79f4b0da1cd599be4dcd262b3ca509a71962 GIT binary patch literal 5871 zcmb7IO>7&-6`tiT$tAfIX-T$ZMRC@)5{rpM|3r2Z%QoypvST}zU9K4@krJ9BR}^Jx zm!4fkKghwSfd6xV6)l#9A# zqVS4vnm;8_fz{oo-KRX%!|I;X-cuqKWztS|5XIX;6mitEpSS0uzKk#8pKm^&9LuTl z%W5ts>tmB@%8Wihf(U21&Y2HfcGWwWQ>RqTgkI09$vJ%*YeHI2&8F|Cfc*5853 zTfponp&T&mQaH*hE-EOJ!jHQ9TyfIJDMAOC6eopAj(SGDio1jCuMDRmv^_O#AESp2 zOp4Uc>LRNL6ki9SlH!Lvs03(JoE+w8sEb5`mVjG&;DagWrP|$DJWbA|a9>VBuJKUT zn>j*`aPN~icbMz0d`$zTO!g3s8*%8#dEoy|5R1dFOyVTwh^b0NV4nRjBPO8WVqUvm zn}Z<9{t7Q~l5@`Qanvq_uc5B4_?WqcpHO?8bst0RRy;LxS9#5lh-Dorc|0y(}@(w!-%*Z;E~WxkVQnxZA|A?YKe(NR?C`+ zgyp5GVd_-1_>5}OAd)s=7Q!rygLq3Y)Z91?K*RDS5~*C$FcJv^B`C|6t(ON5j>Zj@ z8l%6QHj~-xMah6l~bFMR8gan8T^J!J(?}C=yGfpDHeCK&})|6AaW+tCn)ia$Y`v?4?%+k3xz}>fBuqVTd1n$do0%{zaV9aQo2EWxd1ewhb=;(& zS;Rm$DOVGduqDmt^kP=au=%Y`Ow_eqG7h`|*<}KT*|F`~*2S&Grh@B=YvsA!<>wA9 z!%yrkxJ%+nxVg0R>cOkQ61~oU99ewldh8beY2e0Nw_;zk{8joaaXWOTAgqSAygOG8 zbuEXwmd@V|JzEa#UJmWPE$*fru*gruk1)zC^>0u?*D_MI%s6ol-Lb7SS}z%?S}Aig z;J_TwG25&HGfY@Xpf;jY-zcG%#S|MoSc6`$;Q9o;h_ZD_;i7`WBRVitgrOTkLsS+) z=(?Vx%`gX`I)iYJE%t`=ysZU1z&&LqS%GicW}nAd{7jH+stB|V1v0?i)lkcofra_v z{8HCyQ%f;ZoO)L;@GD|q!C&;Rw0B+$E&|rd<<8#a&fcF_9{Sv^{zt^^3#>^b+*0t{ zLaQD+EP|{sp}heWCNwDR3uWXFV(i)sQHjsz=l0^614t#D$wwFK2?umBb)*WR%`@&3A(K&hG5mj`=QVH95V1jVd4uego>e(`<}S# z5e6bQsFjX`i)!yIw{27OR!M73!7yC=xyGN?s zi!)1?7U!;Szp?A)_8XDAt$l^T6>0Or+2YyK;5}&vU|p@>TkYs9#TMfqMGC(6LTgP# z3NQ38^uvI%v~5}1R+f5}rJj3IbOk<~E}kw++n1&7OOg9h&zhS^Z9fMK^gj$N{shJh zU|}0`ADCt%(CDigp&L}W7J6YCObiM#3a5#1@u~@8hA%gYJYkLo{?EDRLR|X_%n01& zf3HdL0E!M1UhK}mwL)=?U}(=$Tyo3>Z`A^cRZZNX0D8AW(?p(kX+gyk4=_OT#)C1u zrqm_JY!xxe4}XZ-bLNyCBah%Eh^67@;~s=4=Ujm2BM^%>)ldw?y>%3zep+ax3Ldf6 z%49Xg4g|+W68M+1QXjX6#C-$Y0Zt}op0oKnbJQ;3T+!Lor7@Y1npH8zu1h<}@VQ1K zoi)K#Y;cVsQ(XeC-HH$X{4eqh>^kcRpczANSeG2hCIJX*R*>t+pouFuQUqWWGD0LU z|1APzJ-jjB%&@3OR->6{CGPE!jfrF$V$L3jh5>+jWPlHOLdDRv$3K=d;9jExprU7I zR}wj&q}Vx5^(pz>!14bdVk?g`jRAH8NNsSH^>H~hO(~$C%>-Vu@P-@pLwwF-q|K{Z z8tznfj13W6lA0E`lcIwjdVu%42WV85$ADb|i1U`qn78=1lK{f(C4gP};ofx)s3<;7 zMK;mHSVxCv@$=cdeFMP2(&8u7S<5{?o<$6w&f}fmP2py)QgoG82oWC-3u1nJU0@-j z6|VMH4!fpjDoHcobZp=c!;SE5m73X9GRLll))P3i+Qnv0XDK{xWpynQWH`kp z6rq=4ThR@dmV{2D7i^L_fpA*`aBq8J1O5S=!+Q(D%BGfrXSJ=P)K}iVZ+ZK^n*-&( z!R5ZeFWZh6PZW+_+5T-y>(z;GwzU14FCF{HQ@T{5C4afSd%3;)`lh?>&)sh8x!u}Z z7zBzEcQv)teKY>&kxxhd_~t|2wY8~m{N0le1El=~_o$ULw_UkZ8eH7<<)$5lW2>7x zN_&^wixqEM>1>x|zHqz5p%{Jy5Z~9M}av zHmK*0)N}py`_eDq8ZLD+k3;vu*+saaNEjcCwB(cu4@Uk(VoFa>=ddm%5|^fvxyqMN zA~Bw&hM9v`22IDer3A(RP!ZDElxe^5hzg~JWUT>ZucQLNl()n)*wo-`}S1(_Iw}qxm&((=iN_zC+&3i{_rZd$Nj<@ zfy_Q5TxSR_**cU~07IB4SPxaxcD&S-(x;|$En0ccrR;tltXw$kmtBg+Z+UD&W}j>W zH;BCe0=^|4vJd?Tor5Os*VqBs8qaauSET))q~mMS^)=b?HQD;e^NNdmp>W`Pf+d^d Ezsr5UBLDyZ literal 0 HcmV?d00001 diff --git a/pdf2docx/table/__pycache__/Cells.cpython-313.pyc b/pdf2docx/table/__pycache__/Cells.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7ce3e1f879d6224e890700284e537308a9831cff GIT binary patch literal 1378 zcmZux-D})N5FdS##m+YILsXiB7AH_s3a%X}G0lg?y`+LgmiDeHI_bKr zt9^bbc`D9B38k3cztDfBPYs0H6)hC<X4ZF{a8$8QwzW5L}SpYOcPe-O;4Rz%^WROTS}CgTZCE3T|Z)T+1_V8l|5! z+f~QjU*1ULSOi&=CM<2S4H3sIN>t`2fl!UwiH6pWmYZ~Nf+^5q_I4~fBFWBNgYwRj zlNHf$71<$pAT>-*cQt9ax-?zGtE}p-xd`8w(sCBe{Wl;ER~`_NU@eoJ4~fL83-0eLDs0%)@56*)ff^b$F9eb z%A7T}&Pbu$&zU>Aqy%!y?{-BJI%aMv5x3+7Z5nt(ZUzJa)kSyao11H1QwgcO2R-ag z%TLAKRMVuuFpK#db~9-|EMp$sNmVD1v7I8lS8xyc>&qE zK2T9bAHGKg`vBW0-=_b?UOU4cy~fl1hHLY@h4seKNNs8{;Z;yubM*a(_r4QSA|eg8 zUf|4pMzFH$ejKN}Omw^T8lfTn18aa5*hqx3C1QqIFXZmS!} z9>G6${mJy>=_7mjsl7bNp4ltMcKyg+cxo>UR-V~cjxR0#68{t*m_JU+chKWkxa-t% zoAbo)2+lD{-buq=OnRO3Z+m_`I+^CY6-kxFQ6iEQkE@*H(4b<{%*q+cjha~|_%7%8 zU&x|>`&lNVon9ss=W>AzC~#Rzl{8}XcGVKHAK*{(y;FUnGB;R#2`El4nU!mUm45+6 z=}Gnos9Z)_zKhu)?R3(larTdqG!n(lZ-vb5Ps;*7lULD%-nhc252uEvX)i2IGhbPt V&HoJ_y|iYvYrof*UIEG?@_+u%Ke7M- literal 0 HcmV?d00001 diff --git a/pdf2docx/table/__pycache__/Row.cpython-313.pyc b/pdf2docx/table/__pycache__/Row.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7e0baf74bb2b7a37621b6706ae53c31560cb3c01 GIT binary patch literal 3391 zcmZ`+-BTOa6~Fr>t-cUJd|8;Vwuy^8L10Jp1An9rU>ws>heeZgP`eh=B4kUu^zNz# zo;-Qzh-oqolQO8&&XoEk@mu@S=COYQ3~3-c_DpB`#2W@Yar@MB?rIeqJLlo(ew=&u z+~4`SI*deu1Zbx@GQaI7c$sr&?YgQvWLV_`zLAyN^>qAE>D zHzX>-*r)m@d^h~muaHi1ny7M|sDX@sNO1L0xe!c*mYb){yGqeevWlIZE$PYN9&RT% zC-T9lHudulwCiK5*6;9Nvb(ufXmM zp&Z!Gs~ig-Y$5n;4R-mmV!?lDTl5~_#MfrEa=pcHLYkA zZB288f^O3$I6_gIdTc8~0anpQ5>W^2MDIkMv4k~?d$ujKB1AL)p%7gh_k`7ea+_BX5I z$Dt!wJGqhCYVX@=AKYpm{A=tV9e?Zivg4npx6hAlw_mG@pM(xUDS5&B7^BSlc^Isb z*GZa8q0li(bLeV=PxHOx6q#wnkDp}0e$2o$*F;qQEx{0G8a_`8p1*W%j$9Uc$Q+jt zCYM8)JCJdCeNkDCC}zc0%sGVudU}GVZSW;0_%7~_QEJkJNZWBqDCQR(5gp?QWvgJJ z=?W0-#NCjlfisJ?UIxEn)B~K2g%coQjRCty_IY2Rb2rwpesT3;&Dx5csgCXkNo!|y z;@MGvG{+AKA2_|++Or|lDjV-@wp^%=JZd>vQ$HKn44>MUVDo>L44OWQ#>i(U2ZUTb zA7F_P#D$^R2Lq^6T>N|RjFBOf2ZDU%Ctp(X7VI4M0y_iXLQ0Ytxeg&}zV;ikCMo1S zupk6G1@a?dj(f;WJ_IcepB$vG!x;XxEm>ER z4S_Rwwi(zS;ItX-f6!HH{k{00>%R=@kD8jf1joGdkYgUP@alE=F{hZ`Mkuq{X;k?d zuzTd2X#Ym*=UorFwxj)I?Tq;23ys!eEWeG=PPWYy=!^)yWI3UP2KlxW7=+ z4Q3xrz{2y^`85spATUBM1Z?sK3c0pDine^3!id<8_H4>Mu5HhMvtipX972D*DoLhL z>KHv=FbiCQUmm!+u%H`x1>;z;O@%`5$-=y{kk8t>GCON7D%o7lr1_#zC@m!?y^Qc> z*+H0MHoW9$dLCAtAl|Po2y?3y*gf)ZIeb5~655gDTXMXX`j@P{j6UW!L;q74U>kV3 z_W#o21oaqsr@db& zKxd!>h~Q4B_{S+N;wPpM{A2WCOIl1dUIb9O-l&%@OortVs$&w5 z8V+KCXYEqyo5sgkVpzF#YhlTrH;sN2zjdp=T{JA{z&Uum;gPx2!;z5+#g_p4 z4r@Ef;AA4?i11yDqH7%g*oRj~rhoPeC*-~(G+HU?6g|Mg%8^)iqWw%ZXO=2u!*V-S zpq#yVKb)K*WbDt{%Pgs$J!U7P;%%pYd{I8c>8j>1A`_n*{_w$Ho& z(!Je1@O8&vb$mD6e1BqPqUPTUD?8zHTj6tG41GDid13VH@YsPsI?uD{tyda1k9y(r ziDrB&8QHQ9r8B5$Wit<`z&NaFzpi9U^_{4u%@wI-mx_jNn6M4y7Oo8gF<;Et?1e)W z&_~Z9!+c}a%1uN8T;zh#1}`f+YZr4`*0yPJwqon>*m5HEcNbPnO@kK1G8((XPu+aR z*r&+wnP!axd-hxMjdS@p~#r9ic z(lu_w`j+7D0pko6rg<_Epw~gM6GeX}b)!;Fx?X0{6Jo2@JiIsaZqTszWK+&8mrWyC z|8qdG4l;EVl7P6{+2cjNUjnspY~zQA$Z6CcNkPkn?t_n5>Vlg`Ja_sI7) Oca5w5;3>ghrsw~)>#@iH literal 0 HcmV?d00001 diff --git a/pdf2docx/table/__pycache__/Rows.cpython-313.pyc b/pdf2docx/table/__pycache__/Rows.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bfaaec19c17580ae1ae66b3c11b68f10e47d8199 GIT binary patch literal 985 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 KmyAj=&;J59R!d(1 literal 0 HcmV?d00001 diff --git a/pdf2docx/table/__pycache__/__init__.cpython-313.pyc b/pdf2docx/table/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..25020eaff3669cd55fb9d247d4f0c0f548b0f4dd GIT binary patch literal 168 zcmey&%ge<81lI+4GeGoX5CH>>P{wB#AY&>+I)f&o-%5reCLr%KNa~imi&ac$acWU< zOkinAVqRKeUV4m6etBL_equ^-jB8?XrBi-|Za`&lW=g7AOhHPTQA&PtMNCOzQch}2 re0*kJW=VX!UP0w84x8Nkl+v73yCPPgxgdLsL5z>gjEsy$%s>_Zup%mJ literal 0 HcmV?d00001 diff --git a/pdf2docx/text/__pycache__/Char.cpython-313.pyc b/pdf2docx/text/__pycache__/Char.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2bbd2a9d33610d6b27d47b5d991a64857dc643f9 GIT binary patch literal 2703 zcmb7G-ER{|5a08izs@m92nlIa(uGDPM&trCw8EjZK!66?Kyz_h71PV+ytWU{cV=&` zBvh4nsH#}4lp+;jp5UPm$rJrkh)_j(DpjTSg||cjQT3^_XUC3Gc<9RBot>SXo!y!F z&21!;DuVX7BU$_>g3zC0vf087V&fDLw~>w*(j`4~K{_8|AuMS5f_z?KNAHphxBkC(j!^rs9e{FG=JA6GzPdRkM}F~SMQB@JALg349XLB_``3rs%3J zXTu|*3>uMir4L<=T~)41ETSj$a5f6wh>a+E6!?N052Rv3im7^>B{JweiM0)&RGY5| z7d_nt$K1dd>yBcy%%}&pSxx~HY=VIB5Yv1a+-8a!Z8il6;q{H5pgSSmMj1)0A3~0l zktQJkwl@(|M;jWPP$qP_scjTQ3C#466Z#z6P5vwN$U558lRQi`v5)XuZ` zrko!)4AUl_XBeJ%1&D~7{;9EaHsev|Wk0EK;^c`_$d0+Qj_s11mpwzg`BU!P(4~3Z z%F%bS5UocbOy{y9GPA-DT6vyzi1U-dZ1eOUV0jbJ{e2UyCU#UuYcn-@ErOCAi|4B6 zemGs*`Kayn1!*$JHL;t_PlndaH~)&E-8-OWb`_-m zvug-;IC4gwYz9C}^*y7lBO@T|;axej8GdbYhNmlUE0dfci9t?mXmBv$q zL68Pg0{+Y*HLq!bT+3~EaK?4*gV-%|%XNq?wn1D0$_ib;!ho4u#H~D@Vil_4F`6e8 zn|nfYz){sn3V7=@Oc83+__K!P1dGtzYCUfm2UpNE?6{l)xI#wYalYTfrt5eR@C-1X z1T#)72PSZHcnrK{KL(=&%W?p2yq4LvI0BHrNSrzl7m1z6Ze3X56Bfv=sZ(bQb+7&L zzQ|a?^kbH1&{CPt`{7v&DuW*>QmatpDTQ@{FcZnec0=b&-ex9a)+HF7V0qnEfB_@O zlb#?k|HI!0;+_lLO|;gJ+Bz1GRgcw_d-1#RM~S^l10q*D7sspPb>2$b-XL2S(~IdE z{XNlLBlik-3rq6S*n{!q@dp=|FRl!ZuJn&S+&#M5-my4WovXcB%iXi?T95m+75MdO zEA86Dn8pC$kO}eCY@%`m3Cn>Hho}KLRxx!hXxT9Jm2W3-#Deko1K00H%Qpn0Q!U z4IVvEkQNdn&;bRLvlQ^ zrlO9n1vPjrwikA%q=}R?l}ZYPcSwmEhOZh%$<0-4LAM#k^$M{YEA57nx0uJ_dxJVI zEJqCka2p6ke8L2X&BQxG#6hmGejw|HcSCXDgj=RTIA_*O1ri>%B^#x~q_z#UMXKLh zc=3b!t)oJN=tNzvU-w(|t8!pH6c6{;MqVHo)rdukxjwVtP3KaK(!sqX3up8ebOdzSB@Wf|{7GO|ty}+VnR971$ yNbGq1$xg7hVTZVYCti0=mLzFC5|@@ literal 0 HcmV?d00001 diff --git a/pdf2docx/text/__pycache__/Line.cpython-313.pyc b/pdf2docx/text/__pycache__/Line.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8ce6449be846521f01e2de2dfecc6ce55509e6df GIT binary patch literal 7404 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 Ch{ihr literal 0 HcmV?d00001 diff --git a/pdf2docx/text/__pycache__/Spans.cpython-313.pyc b/pdf2docx/text/__pycache__/Spans.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..228f94c71657a6133758d112005c6a72693332cd GIT binary patch literal 2960 zcmcguPfQe77=QC;|FFBbOJQADL?>u13vo>qT5Xj?!PY{H?T%AT*km&7%;MPDneCg| z3d96X4NVU~Qi6vbICzkxN%2IFo_msDx;W9q#9p{zR(ox~H?#j(s;QU0WZrw^lczTo?p)t)Np5fV1W`w~E%qiY8 z%8q!jhePeC8}Z&a;(cj)fN^DD@1#G`G}Cv1o5V&T&ly?nsxoEqc}eFaUFJT^Nt230 z851{^jAbSRJ2V_kP zFa>VVJcSva#w^dIJ^eJ##?eg{d(%GN6GsEi0few0XmF!SH}SqW!U5iogOg2(fbAjn znmZ(ZGbd}-y}>tCH!VreC}z@Tv2@GKRLmnPS@=k_O54yaBY|o~m%$euj1}mQVND7l zG)`Q1nm`Yf=Q?xc{CGLe2-U9(Oo~WtXenRA0+1Cad&*mKD@bBe{{5U)4zQi4bw)s` z;C?QFsaVIMFBF7=h(iK8h7!!oKuXDAMY5C{0t{RSfGjq0oM{wrM&V>NV{w{lT1nfZ z5{Qf?ycl4LFu|tHT7V(jV_I0vlVMs@Y_F8hE4rLuZPrw@EGFr({Sa-@gml3oNg9a? z2hAQD{wOV&3O3VU6(BWPNuNv)8@F`LkYqD`NiwG|8dE2}oaR+o`5>K_v!`SuGnFQK z(@y%6`DxpS71J`XVmG@>WwIHRnAf12L(kg}&0pRQAH37E74Ci#<5t_ZV!cc3pRpsW z{;gPIk=>4Uu1qgYugosZ7Gph|v7Ys|jrc}o8fa14|7aJQasT{2MF=%3!P{PN&AJKoO|QDx{E}iG8YA zwd~bUy~h|5V?YrqbvGCzpz$j1D@u={HEJwD+X2*&^mBZ5_?MnX9j9>&=rzCx0haB}s+y%> zJ0MmRo0!0Ujm9l70IUdLOky!twjfZ`Xh#}thy$b93*8)g=|wHkpT2$^I=y~%L%c7R z82VtKgy@#wya)Co(M93M+YkMnjzN23_kSg_og}haIk{>Cl6$Oq%S>Vtf&`5_VQ??& zArg~X3UL?E_E9%-&b5AB`i_%>b?Hky>gac(g^v*7N6B`5W`cFn?3R5B2of7})4win z8263;o*NPk=aSt9kKk3LbP6sMEH<|KN-0ps$hB)^0h*^tDbwlN6&2`lqQhyG`%#f4 zbwFLF&QldyjsPs7=D(??zs^3MaWpe^nwhuO%%qwsw${eVYXX|9mP+q}tNB>fwclPu1

Pw*q^h5U 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 literal 0 HcmV?d00001 diff --git a/pdf2docx/text/__pycache__/__init__.cpython-313.pyc b/pdf2docx/text/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6dcf32d392fbbcacf3ecfc469d777b351490e102 GIT binary patch literal 167 zcmey&%ge<81lI+4GeGoX5CH>>P{wB#AY&>+I)f&o-%5reCLr%KNa~iGi&ac$acWU< zOkinAVqRKeUV4m6etBL_equ^-jB8?XrBi-|Za`&lW=g7AOhHPTQA&PtMNCO*MM+G2 qd}dx|NqoFsLFFwDo80`A(wtPgB37WWAZv?3jE~HWjEqIhKo$UmWhy5C literal 0 HcmV?d00001 diff --git a/readme.md b/readme.md index 6e95f21..a85fa13 100644 --- a/readme.md +++ b/readme.md @@ -4,6 +4,9 @@ * PDF工具箱 * 合并PDF✅ + * 拆分PDF✅ + * PDF加密✅ + * PDF解密✅ * 文档转换 * PDF转Word * 网页转PDF @@ -24,11 +27,26 @@ ![img_1.png](doc/images/img_1.png) ![img_3.png](doc/images/img_3.png) +## PDF工具箱功能说明 + +### PDF合并 +将多个PDF文件合并为一个文件,支持设置文件顺序和页面范围,可以保留原PDF的书签。 + +### PDF拆分 +支持多种拆分方式:按页数拆分、按页码范围拆分、提取单页、拆分为单页文件。输出文件格式为"原文件名_拆分文件_页码.pdf"。 + +### PDF加密 +为PDF文件添加密码保护,支持设置用户密码(打开文档)和所有者密码(编辑文档),可自定义权限控制(打印、复制、修改等),支持多种加密方式(AES-128, RC4-128, RC4-40)。 + +### PDF解密 +提供多种解密方式: +- 常规解密:使用用户提供的密码解密 +- 无密码解密:尝试移除弱加密保护 +- 密码破解:使用John the Ripper自动破解PDF密码(需额外安装),支持字典攻击和暴力破解 + ## 计划中功能 * PDF工具箱 - * 拆分PDF - * PDF加密 * 添加水印 * 去除水印 * 文档转换 diff --git a/requirements.txt b/requirements.txt index f4bf6b0..18aa050 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,4 +10,6 @@ numpy~=2.1.3 opencv-python~=4.10.0.84 fonttools~=4.54.1 setuptools~=75.3.0 -Cython~=3.0.11 \ No newline at end of file +Cython~=3.0.11 +PyPDF2~=3.0.1 +pdf2john~=0.2.0 From 9f51820391f7d2f89083c221b93aa0daf3bef303 Mon Sep 17 00:00:00 2001 From: vistaminc Date: Fri, 2 May 2025 12:02:38 +0800 Subject: [PATCH 2/4] delete --- __pycache__/resource_rc.cpython-313.pyc | Bin 162374 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 __pycache__/resource_rc.cpython-313.pyc diff --git a/__pycache__/resource_rc.cpython-313.pyc b/__pycache__/resource_rc.cpython-313.pyc deleted file mode 100644 index 579063b40166c039d7831b04fcd1fee43f39e59f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162374 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∈CMfFTg{<*u&SRTS! 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 Date: Fri, 2 May 2025 22:21:14 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B7=B2=E7=9F=A5bug?= =?UTF-8?q?=EF=BC=8C=E5=AE=9E=E7=8E=B0=E6=9A=B4=E5=8A=9B=E7=A0=B4=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +- .../__pycache__/decrypt.cpython-313.pyc | Bin 51661 -> 54294 bytes .../__pycache__/encrypt.cpython-313.pyc | Bin 27298 -> 27298 bytes app/ui/pdf_tools/security/decrypt.py | 852 +++++++++--------- readme.md | 1 - 5 files changed, 451 insertions(+), 406 deletions(-) diff --git a/.gitignore b/.gitignore index 4eec840..01c9398 100644 --- a/.gitignore +++ b/.gitignore @@ -146,4 +146,6 @@ build *test* *.log *.c -*.pyd \ No newline at end of file +*.pyd +__pycache__/ +*.pyc \ No newline at end of file diff --git a/app/ui/pdf_tools/security/__pycache__/decrypt.cpython-313.pyc b/app/ui/pdf_tools/security/__pycache__/decrypt.cpython-313.pyc index 715e03e26b043fcea6a76b35f41021c92df90d12..516871a8e94a0719ae43a5e9961da2c1be38e60d 100644 GIT binary patch delta 20891 zcmcJ130Palx#&6C(1s95Ac2IC*ae8i?7OiI*kHhLkmDG~L!gctlUh&x3E>wqGXjV(QI^!idD75urV!aR^1ZI#RnwwnwJq^%d`kkG z(4u2?EqYc@^2DvjzfLIVCN7EEDP$QP^bM&7 zna(MpYF7&MIT?*H@q(^Ybit-U^g#{AXND$Fj`PrkJT3YiV?xu>(R4m8M&DMrFjQD( z?kNs8SQ<(|_maZ6o^o_Zo{8S+PD9V;YmoVX9H|vzx`Z_R*X{)Li*60HAs6&C;DTzX zYYEqdKCK}wH=+v_8dR%L(JQ`V7KZR6gYKR_mg zAm~=oNN=VB&jpW)j2Oj5Cy<$FCv{(ZNF!mCq|pzyB_VaRnC3HJK=k@>^J_kHW~||! z^puBFOmui8F#4P@7RYx+X6c!S4RBt2?g(eDnCd*V6m1f8_2BNusKS)UoGjP>B-+e( zk-iIYo8r;)(aHLr<}fuTCR`0VP=MN1K+i$wslyqB-gdGY%d>J;m9{)^bf?OU-ip@V zK9O5UmD}c)r*a#LU)Fvy+|X_ui0sCDV_>K54CkS*#PCbuB9zC&c)V(CxQ>wOnjqPc zzT)iNE3)^H?AtoQ*SHPEZ~Xl$cg6ucfAoC>9>TEnf$%gg|1E&#M%IMCnOFvnJ|ku{ zjFQpjOCWD8T8fFM$2hO*T?=o{*4FN>L#M+0EtEwpgtv4!d9ub+8p;mkwVChxE6 z_9!9a+8c)#U;WCp$+Oo_zqBuVhof)TAUo!9_1pT!M#g|YrVR{~^q2Hkn?v9C4h>H@ ztAp|#tY^YGFvj*dZ-{_QP|`mC-0*P#uu<8iTlERY^{ z4fggqTz$?FXaCG>>`~eq*XLnbr)#2j{NDcF5y##!&qOeG#IeIU(z_yuO~y@VM}}R_ z#{S`nm03ZB+d0wYbo6()M)n3}j{g3QJQdZB30JRsVr;yZG#!kFa?Hfu5hpX`bWXr0 z&XR_^HM3T;iH3vrq}GzY4mYN|onPkn_71zC<=za)bU!9Sztr|eSuzic{8H0QO?(xN z9!;3>ek7sN@?WxHY|3Rz7MEQ+XQ?A)=B3JjG{q-P2}rFzsdXwnkh9vCv)V6hxSDQz zsTG&8kTMpZ)Dn=|d{Wy~zh7GX8THosa@P8#>qt(TPns4k9mw}K`tlq7(kAFeO3qaN zoT(DiHIR}9pVYv&&E<6arS=s_o=C1wnme^FkXPr+tMg0iKZAUOFTcSrU9%*iWYGbs z$tN|129x2J7UJ^hQoi?jK55>RJ=}Y~LfWYRAUY~VepvJiso^g- z83CPWb4y@me~=b)hh^q2{qq7?i%*hVDeMSd3~}GcnA^#YLz=w{1I%Zv67~>!!r-L8 zfc|XwqhOT~t35gqHyLxm=# zYEWhuM$j)1^j}H|Lyw1po`im`m(io>SfUxNP8W$72@{2;6G5OQD$q=qMqrCVuR-4L zOws6DiOEW$ZNy@EN(7`)GAP6Upi|JLf9oWYOJb%5WmY*lkdh+CYD3e^sgxW+ftu}w zkDxMi1U9((oqO2(0LAXWz=6Ra216L^LN_cU^dYo4bqhU)&ZK5Yo&dCa2MVSR)_wkJ z{Zot8kTyi8;du{=CY*aF$i%-wvxjg4xWi^PA0W%3_tJCd*_m7Er|Eh(V1kNJ-@9?G zJ-7_%`ff;B1*AUvGNj#@LzzQVJdh5W(cfAV6u<|@JrlkC!|WR~f6KgIplE_TR*k_P z^oX?qhWnnil)e`Ua#HCZ&1B@fEumjS3x&mWBT6hvr5`~xMOJz*8Ys%4o6zwh{W{Wz zX-wc-7)UYrHU={ooCOe+?r^xBF2|@dD0PpI0G|sDm~1?&9JbpZijpMX#pTbT=vBMu zpU>=Fb*CU%1{kboe)w&mx}Dmt-X6O>Zo6i?c6PlXmK z%Cm%;u4F>s?D$}6{D=I-y zOhf)$MH<>!u0(>$7NNFV3sg(d7c2F&Hj?|B@>JBp$k5*_9b$F2I@H}gRZ3wv{p^bL zn=8_9pHYay6_OK|r9LBNWK0rcV2n(1zSyPcR-?aEHP9whU0pz{(Oor`Ckn_|ZOWb$ zm{sy)Qo;mW(JQd#2v&tIzz7>_5(IV?(8wcGU2CDE!}DNK+hgq-yVf3WPXNt1im_nL zIb0u<5ml(9R@5Eal@}K5S!#P+xLS#XNyU|1G4_~LDy%S>DOk9C^kQu$`u7?ou3Q9_ zjmS~=h5TCRd{7ReaAJ7O4&er@!cx64k_w)N$LO( zJMBPyhaiqdKdUdG>(O894c^tb64ue7(zS2CeB-%?s)ztzd}> zNu^_Ce8}PQj5^ujzM#-CGQu{Xnbif#A3>eEsHdoINf(VSRBF)LwehG>AVsEz`w|&J zH(eS9CEy3vjIf=|V~{RHKX1@0o&hXjCe|qQL4$rZnZeZ6m5!Ntb&Y{uXBF^m0nZ}M?1fU+sGxG#4ZNvuq8HO< zuK+SACEuWQu(!9*{szg`ZKk)NyVvcfkD$xz)>*OH$nL}d>ovSY8^$Rk1`Gz>82kX; z(P)ctK{6I%6T;lr`bhJ z>k0<%W3Yh1r~3#vw+ zpVfY8&Ac>{8`2bX`uW5p{I4;2UZed$A<@YXE0$E0EFmDx@JTZ!cby)4acsIjP`1HW zw&9}HSJusKzGE(Pi(h)@yc7zVeNyvevR{gx-w=o5S_bHwGkaTF>C!jwD6lSI6_Hhi z{RY}$uM^Zm_8pw}E*=9`P0jG**ZC6qOKUnkfJ__jqMt?wHomc)5xL}cDI>0egVPTl zge@m<%AugB9(+E@kCB9#gp)Q=1r#Igq+JR-9Z?iu|1+`MvjElXB zv&nMd-OR4WMWVyYKTI@(H8|saRMwH2%>D(^ZmihjVTXVG@c$hh?8uUg;646h^!1LC z8o5k!IU(^x4jMb$97$YBG8}Hb5|eNu_R;+(2Iou#mlMpKrF1T#j8m5_38|FAn<`4z zg)%nvX6LU-1C=dxtyK8KC>mfN(2o2tuOd?MHxe|Nm5P48X$C#oSw#!c2f0`QGRBIQ zwXJ?LOquA3P91vXa6I@ez_gKseK(*ZQ5_;C$|Z#VM0WJScjD1dS8|k;C|D-+T9+Q3 z-y=h>b|neL9aiLhvLcKJ=aB*|uf#ARC{+rqKUuM?TaF<0AshO;N(EjCEwbIO z#c8^Rn3$n2lJnPYjcVCw2fMrh73G@H_-itqv}bLk0jWL8F0_lFSpjm{6GV)vG72pz z(m-3r{*+c?iN{A{|3@_1rPPKjbRO>}c!hGgcLfwGQtD}9)Q2jATL29x6Vd$-Yk>XA z(GTqL;O|j(W<<++G9vwuAo*rPlB7X02);BI{2ibNs9IqPH9%Wq+S%7p{brLAi#cB4 z325ZnTta^xy|mdH-|dNkjD?3ETKMY23vV7;IQ?jTem;6{v%`zGzcr7=>%(HF1}lX9 z#5Up-7HsSfG3dpB@Z$YAg_TJ5AO<2_*o{-)zxsVDFR*U*JkIz5#))>0 z4ZDao%ckP*7?0b5zIjL7dd%S2jTj|!PdM0#H6Hg~Uf14%bA~Y3g#qS0Yzly2bjVcf z9%8``W$`H3R&@Q2b+=o$?%_d~V+RfYRnuV%t+$OmG=KWkx_*=u;L>YyHYHf=lr! zQv%8ypE75v#IGz|Q4ZJT^6UM|)u>==nm%pbR4{Ky2^jKyhWrm=q`>?|M-@v6Xy?|N z(qAi#Q1kKDBdt8GfO3^jxoWy3P~74xZt*KyuRs?SM-%~RqEDI#hT@+;YNOHjwpJzR z5;m4m@0H2h@`XR6(%Y=UpIOCi`AF8&?WL^(qSh=vcXsjV>6KoOYtMd>cYL&iEGNrI zqz7+{1cl&#xXl(Z;i0*g{4XvGLP>A%H(0*)<1~0Wt&Cde-@$X3=1g>rYsV8b)@Xy3RaX&2$zjQM-Ny~%zy@+ z+7^vobb^;Gkysb1?J9Hx{JoeXgqz-UKrRACr9wORo6sW%l-@xF{>Q2$S}5;V;%A)q zE_Hk2VHAt6zO?Y=sfE{$EIc^Hmx0rN<2uZUrv|dGz5e#KsYe&T{PpW!cniv1JN4?~ zGvB@O%-My99^^~^>CK}HkDr0u8(%(j{pI^%oo_t#HYwvh>(OHh#G!R{_Eji({mi** zQ;#hiItgtI&w^Cel2`?`q~?4@%dA{|BSG!bKmBR z@?-IsFr6o-77w3WJo4zmBX}s@h#&3x+t0xu+O08cD-;XLhTUBrmkXR-jPAky$;Y}Ft6oV+7_I`Y$>Q1XU7Ivr`x^8!GekEoY?Fb@nB;W zTv=;8UiaRhXxIflxzkX1rFA}vD;qzxmzP~*(6IpF8vtM%D`Fn6e!Ti{^@);G)hDY1 zhC-jAFko19$*}55hV}3|zcTeo_}J$9l(~MT4SWpIu>r4==M_8;X!I+a0I$_QQ+>QT zph@#-(k9mhG*+L+dR3k9jOqy$mvWb1y?tJ-4XCX?wKbqF@~MlsRU7^4HmImKKC}P$ z{(vsar^}iW1#~u_&URUw^i2B`?Oa-iU%P2ZiW^lLeM)0MndMVvbxet%FN7KKNZg%C zhhLeE``dP;?Pv$z(cAiodDTZiO7nQ@Bdwgi;up%wrFzO(e7G9f90p|WX;iVfFfnW% z0PMLyhkA5yGjpORjs6(D*;6U`8|>Zf67)$=ws1Vnj_wyFpbim#f_@8r@ph4xoTfK2 zBKVYu1cqY{JBfkI9&9r?w4ekDyAw==cXlvItyRa4R5`K)w5p7*!FKNo*G{-~H(A61bX*`jmkkt}BJQ_4!6+ zxGpA3E{A}-NIGnwMdhH^_86j|)eZxc{XLVC2pTr%*L-g<_vCxCLMuaAN)=+hlZAel ztZZSx=Qd*Ci-ovoWDW)?tFpZ*NXz-dErC)CuN_@He9WVU44G>QKmTM1R;`;?)9!b^~vr{(Ok?XIITu`?H$~+xKAF*Is<> z`fFchUx%aze1XdiEPVA_*Ux^f%G_-=vNjm%XDJz=7+^otvPKjX54%B=VRL~JuM=&? zno&@(0iXL(2Vo^g(4)O&V}Ha&up+~&O%X1#yqgJkvPSVrhXVMDX9PTMjtNIF%IyIg z#O)47jRJHGI@zz_R)pA^EQ7uh6PhIIK)biuy z&(t2ToiqeAHlN0J*QO5A9308Le=4QWg{k$^v@s1-MC)R&;S0J;-ms#Ui z)?yrJFpsreiO~dNGT`4UYVB3EA)rpbq)wmgo~q!=*I(3KlyRk9elubjBK8+XHf2y1{@42qni!xL5^zd~Xs$#?)ty73V(n?u`h9r~Ta zBuEz^`HpJzZ$_DFBbdEUf%0$-sr zPpDnogrWyJi|&3@E5I~I<70?pydM}B1EvhPIl;58!tAdf*dL(8JW5VDq7Jwk89^LS zid<@fMJQTEtCsl_j2E1qhmA@mh8TzSP+bBHE+q!;xXC}UFgS@_f;*z%J@k<#w9rJ{ zGOa;TM}4TW=AWyqU0FFi^_f6bw<1Gtp?V^B*-?}ukD^>rFc{FHL`-~7$`hM)XxF1k zTY@X9A*y{nL;fzCSN~P*#7ON#QfpBE>DtyLr0mP{vSl#cL>J->u*H`SEuQ*X%h-_1 zJTc@ncMW5I-QtNe3&&mtjp+JI4}$)LO{O7N_bbAn#68iE@9FSgP+)*b4LL_fJ{Ef> z25c2U379!!tn(E*D1po|*8Q=R>0Z}i@2)a`ER#dBvCG?4WhP1@ZgJuGTUX!s>hzo{D_njV0k_60vW!ZYdDtWlq?icM{F^t@37L`THB7bch0-FhPG< zz9cG;C0(KjQ6-V^k+UH=>wVAs5-oHNlBS< z0?DPm5IvnvdqQgPVJsG1S(s6l`V6X8|Ml(a+@}DTb+Te zyL?-B&21f>+cbI^bY;a83eMQ;SKmFaGlZ$?@u-$0%IH=veOVL#3`o8c{iyzOa@MKs z&u*XEcwWTW@8s_8_a!@zHO=di1G;RVE_6GGG1()9J*RP*XNm~+A`g~A< zP1*mgs^0vMlo9p0!LM91uhIYcBN?Sl{*a=hTWLH3R_+xW;v&QSNJ`+U(GyJv^EL@atQYxJKiiJ`#9ZaZv) zFRm?UwoyMUNdUOvM~a5nrV{GM$uxZZ*i;MYcZ@nnzf&S_&Jn&-m)e{meAg@n%)1$4 zz`UCy#A%y+eVXvy^3?Sv;YE`e(ugxA2vidE_(&nzwl7zVWupiLWin{SATE_5(I_M; zItVRZFgBvM%T@?RiCv5ZXHrB`MuB9M5Xl%tBx4kKCCw6$imI?w6k=gyP*$y{AY3b= z&)cxR4dPJ3i^C)=4p(GrLfKJ#wi;)F6cdAo%>S@e;R4m?)Poju z;D{-S(GYPBdJCgv;tK>FLM8$KT{-`9Mpr2W$GZXyByh6QU?z>mCy;4#36`((`$s71 za|r80gyHZ1k#I+dFq61E3I|wYOp;v+OM{IvDXglhSm;vPm5gDz0}kLvOf=jF7$HBo zSZIrel~JPS#*$4+#>9Vhh@nmjpYBNwO$y>(ipPNknT*-4T;cqV1DTIK8{`KX1FWh` z-b0~+ms6tEJ;~u5yBuwQG+_%9yAl;vJopJu0R_h;Z;&_B?H)e0Qn4^oDHP-+@P1qi zY`+w${p%sGt_2m1o4myDapUXYSh>FixcLfgA)+U+8-Nvevn>GGb__Z&*n~kB1`Gh= zqT|VcRKt`$OAEk$%!ssSOQ7C>2Ww6s_xRS#HuLTEh@|^3x)&C79?&#zBLhxn!31C07QL_s?!Vzdz8t#n-%Lu6e7kb}OK`?fu-4J214@H?((d zXuog!{=@B1)0hSF9|Uy52}2+;$CsEhm*~x#i^-ce=LXD0K6BA@`kcA^SoE(o=J~Y3 z=~!P{aUiYImsUBKR()*apFyuU0p7AapCNC~kUtlj|IgI}@4Gg2-ctQ$%WMsovi_KI zNhy=XUQV$FQVK4iRqhLN7ne82jorf~vgohwPVYx>zIbU#7T~j_<$Q9{*|cfLOy;zn zGgN(PBN3g|pDgKVS!__L{$weEj*kDOTKlnk73_zH8cSOWsUO!gzf=fXYlZJoBEd$H5N+2d%#8OR5=8wg5a{+iHgjuWL4X#A zQMUIGhWo-^buj$h51BejeF( zh`}HR+b|fyfLsSP zaViO?j2NuL;3US8p+8Tdr#-nT4*-HVltNw#mHaqUf0y0}?*b0bZQH`6yIQR0f5aZ+*JO>LUE@@5Nt4=vW+91x1c)|*O`SbuXh z-AId#H`@gQaluWgMO<~W32ItzN;1S*|JhCp#Fm@VQgPx<7u`jRo9J6Zf^xBLi7FR} zb!c?Ancjn=(7oH>Mq!&QEL2#z2|Nsplmwy+u(xj~%_+M6IaYb|`TWX13$7=IlWxin+rFiwL3-Y^g}IyB}P=_m1_p=&pCclKXbWAS>S zxINlb+)gkd=OqE_i2tBhMxhIBrWl-+zPtkH{-g1dR0{eTjgnuePf;;3l_GG( zNI^fr0+swgKPdqHMB0;p-7d{)I}KV;Y>y$FZ;ymrVQo0Pld!4*3W>BqI;i6RE-NNh zjmLsieR@=SD#p7LFX12tSWvSA7z|-Bi~*kB&(}Zp$!xZeTxPf^iR~N}wv9he$g@AmgPP0tyI6wr0$fW*&`W5Agt)UG&7DeD{SEKNe&_^9 za8U*lPddEwu}LQe=3>*Y@S}u>ZuFGYx3dGk5Wqk{#Y+>iWUAiHKR!>d`BsUH2Tt>1iBwt zdJJ&;T7YKs2DEXnG*(C$L@*Xy7<|k)I=DC4b{bDP%pb*1HH#NC7<>EChZ+M9>WrHYw>eR(u0+?R{~R-lkVFi{i)6N%8|gBC;N zVBq@@4QS%)f%mz@q3B^8d@L0>iqQ)XrqMFEr!7^lc&&mRqIUAg=9oTSq99IK^zgm` z^p$e0MjSq65rgk#OeJ24i!sr~!f-w`Oh0i@iyt;DzuXaebL0`T(TqA|DS|E=d8-gE z6Qu+)F{DkQOM(s^%@wM_!}{jKCe*b*LDfvRZKo&&1=LsG*Brc0re?I5;WY~!o58wV zkr}<>p%nzt=(x=o56deK52+tcY8$8xk#%e^kvUy4FtE~jqfy3~dn&^n*mA-KLu4#AF%`Mr zvq2^porU{y5_&KjCqJ+`Q^TD=hxa)@XLr0tc1PO(_uWC8(c1kPCfFZ8;`hg=r)lMu zKxDsUko_WbymI?~iOpoP!UJ{L^0aNT!;}gB1#2y1DqtqS^u*|N4O&YnCHG^w_ z5w)6Ju|4(S<=OIUSY7xC_X@U~VErvv$2d$)TW*g7Iu*Aa*YJ_IRpQLs&Ok$$tUdDL z${uHv0yzyPS6D^JRogYU%VB#QlU4O3+(pB-BohLQkZvm_z4&ou*mP2H`hYctGl7 zlEOS6RUcNNlLxY+H-?9eR~Q|8)F70$=b_ggtwwJj&V#fA9eOlZByF>SPJJ|iE<$;a zW<K2qhTeq!c(fRv zv!p&Y=DmS6Yfu*Pja^Vww5qryC@O>>q~RA7Rl+YQ!T8d$pmf~fcHcY3_6Nm|{?TDq zP;w8%;7{!3BmK$aKe!FM`ucMVv$NMv-_J*9!QCFo=OdfoMhjw>u7Bkld~}nSk9x8S zn)os##TZvN2(-v+^D5l38BIF^E~1p<6jbsbLON%Ld^2sOXrxy3aI5d6~D zZhH`EzAa7Djh_!Ofi&2GPl1l2q1H#iR-hSbH}#a*Otpa(hj-^7T`q*!R{?q3 z(f$e;r9nY{As>W}DTNhvSxR-QG>x&3anvIA|zK%5X84Jz_=tv&JoCzI%uVvl3)2r>KlBW^-micE3qTb| zU`k*oP~=kn`l~N59Dk%LGz8L3e8+&B<2x0KzkL1$e4GgxixqDBS?9RZF~MfR{u_ky z@Vin^_Tb`*$*MB%6PUAubU~1|dUQ~RCke-01>shBDnn--wH!}r4n001sL)Y;{$YOW zVUC1jYxzs?P{&9?KJGJA{K4;DedB5L-tkm;1^CC~I&V6gh|fnO2B4-;EWY1n-@++i z>3je+|9<5A_>(vT&*Rhu41NG0D4lSQjt>lvI3YS}S3mv;>W1AbgE_nS_)cd(n+(*0 zN{0ucDqIu8eGa5XGB1hL##%og7fW0R9dk@)(tTlIPtMy<`?d_>KWYPbfB(mEms7 zF=)U+lOQrIpw9BCvjXZopE{2#SbKi$`BKid z!LM#v5=6&tpf4vTpGtf-akAue{fqU1v>IPp4LWc#CUq?zg?rVQdaCu=RxYP@wr|#c z-o|Bb@*6wB(UNRNPn}HjUM?y=r~8)fT*|jn&T9h=oxX<7xuPzvkl~nNZs#aB?Bepr zPISy0&8ONn5!M zP2MF<-jX0Iej^=@Kgis8@y?5_T>2Kj{?5ypR-bkBZ1=47Jal#|*S8C#-JErFE_3vR zVm>STgz{>#Wzssu%$8rQxRl(@ZE;-AE}9h0r)34w>V0W2Sq(mKTEpe^oYSpeY2^yr z{ORrU>Di~-UTh1bm-*7mxbnOF>D%Yib8aaplbz<0yWtgDR_^JYFYbJ4WK#I+tejt_ z=fPB3G6LpupSe6>uJM^`X79V$chSz(GJbP6&a_R_a1k`AoX@qL6;5yTm9%r6jIV^5 zE9~~=db=m3^XBw`x!7ke4wx%^=888pvs=!ybCoTAbL)~Q+G4wGwVg@)dg64+x%zL_ z2Z}fPiZ}YLZCq#fd~SXqx7wFmJ-arLyV{q#`f}c?Gp%25<*FF2`wouT!fkPK6$Adf zLFk9A@XY#G)=zf_N*jHpjsCo*`MknFp10nYS0Bh*=gV7np7G~xxZJSzUEKxUyD1k^ zxK4YZ)8XrM%r)%bR`+pzd%1lFxxM#sb>68CsC=gFl{WtA|9R2*F|K~IKkttDyj8a} zR8Bk1S=(+|!;_XnzkuRxe zI`2F^m$c?s6u24xDZF)d%Un{^F&sl`NjnxjuSq&FG^fd&PcJ;)HXm=CRLsTa&U@2W zulNdosOIAH=hOR-w_Qp19&5v~=Qy6mR5yF?>@e4S2e+k{yW?)|ZU?txm~-spjJy2m zkq;$QtOa6*Qqm`zr|)^CCt#{P))YSBsjH^Trn6^rICG<4+XP2Fpw0DZa|2p$p-)@L z6*pg$oZrJ0ZSre7fkcjN>aIC!_3Un+wUN_ihKNk&Ol_W8&y{T8TDEZ;?&8eb{n}m_ zoZd7^qkWTu)B3s0%6YvppfB+03j+EQpT1;z&w0u0p7RGe`ykgn#0?$bN)P(=_bu1* zer7eUe8a`ei+Zlp#g&fv_2W?9n!{-`F6S1Usr-87H>x>pHsCS~0vTn#jI!y27dLYm zW&Vur6EgC2r`%^K4;U(ahRVw!_LJS{H#XhIM7RRG-?-TuG^PTj6blZzogAJs6`l~n zcVf;|r%#{H>8r^$l;daxL3^HQPBy|6EP~mBI#Y-DY1Q z#6jKVE4Yg@=3TKBz-8u+*{1V%_-ZzC9lhM$eZG!9UrnE{4DNBq;1ZWRaL_k&(C00? zZ;7HB1ZxE!g6h6b@Bu~TuM?bTU%{eEe8!Tq44lgC5O8&I$6RTr-`EA+O11=yn0p0` z6+UCdY~97Qi}4qCaGg82O>kKHIp@7x{~m77UaoSV-?;yBarwE*Z&%J#bH>6Yks>kU zvL)km;#clYoGLj}|4MxzcbzYHo!`=UQ8S;G8AvOJo8sxUfwT%=T1A*at=fQ_;0inZ z>6_-$vreynas5j(lF%V?%BYmd5$C3OJm6`lDhh(@uYoOQlqOw407ZY+-qZ zpJBoKh=9`MQ<}Jxt-nzA-0DDu&z5^LK?npAYd`rYfzn$bo(sz;5Of=#*a)$1nrZR$ zosl>#OLIWGeong{2X#TQk8iD}F_Q>b+dlb7OJx^XtJR}>G&nmgBh99M!cl@w6^SqwRXbI?BFX>w`VJPzPt!@DxQoz#q$wz9+ zYz4xJ8H>hrOgJ$Ej?d{&68yM+O>uve_~I%ld|a%eA>(2#PX9#Q zkO?0@&1(=2BvAiS(4ZO+3E!)g!pF}f4JGjL^XeS0GgtJl8EcB2`lw5KDSTWq(~xt? zf{R_sC75C{##CU;9MxP8G=D{{Rl%QM$K(vAiGE$VX4RlN>it|Pe7s*QfQnl*>Jb6m56b=lH}INhYiB(k_N?ag78Ly7(PPw zJPH_NW_~gmCy^kmm3|ey|MGVPU!&29)6I8(uIB$G&=-02pV$h-Y9QCiGnmGCoJ;J7 z3pj=C0{(HP6y9t)@EZ#DEG`#=>Zju2|5ak2D##_Ocyw6t?)A9AK6ncXt$0ik(n^n^ zH>NV^g_-xK{v_~1_$)CFK6R`85GGG9w8_;rei>>N6Nd)@O-=0(FtHyOI)K4J4DQ1K zoQ@E9MAT+}eAvR^ts*iEY_jn8==kL*>m?VMkK^Pq4DQF^0SvwXfLx5NCU=nJLZ1M9 zsqb!rX8!yT^~;#}W6nnp9$Np)c*BXcsOM1oFB4NHh0hr{QNoo@X1;6lEukD@5A<0O zd(cHo#I~F234vI1YeZZtE?lB&W#U3|b4gdfE delta 18677 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 diff --git a/app/ui/pdf_tools/security/__pycache__/encrypt.cpython-313.pyc b/app/ui/pdf_tools/security/__pycache__/encrypt.cpython-313.pyc index 8f9c16d5365e8ad38950bc218558e2620579eb68..97e20593ddc996976d937d2f32c00cec8b92d24f 100644 GIT binary patch delta 21 bcmZ2验证安装:

" "
    " "
  • 打开命令行或终端
  • " - "
  • 输入john --version命令
  • " - "
  • 如果显示版本信息,则安装成功
  • " + "
  • 输入john命令
  • " + "
  • 如果显示包含\"John the Ripper\"的信息,则安装成功
  • " "
" "

注意事项:

" "
    " @@ -525,63 +744,12 @@ def show_installation_guide(self): dialog.setLayout(layout) dialog.exec_() - - def verify_installation(self): - """验证工具安装状态""" - # 检查John the Ripper - john_installed = False - pdf2john_installed = False - - try: - john_process = subprocess.Popen( - ["john", "--version"], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE - ) - stdout, _ = john_process.communicate() - john_installed = john_process.returncode == 0 - john_version = stdout.decode('utf-8', errors='ignore').strip() if john_installed else "未安装" - except: - john_version = "未安装" - - try: - pdf2john_process = subprocess.Popen( - ["where", "pdf2john"] if os.name == "nt" else ["which", "pdf2john"], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE - ) - pdf2john_process.communicate() - pdf2john_installed = pdf2john_process.returncode == 0 - except: - pass - - if not pdf2john_installed: - try: - pdf2john_process = subprocess.Popen( - ["where", "pdf2john.py"] if os.name == "nt" else ["which", "pdf2john.py"], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE - ) - pdf2john_process.communicate() - pdf2john_installed = pdf2john_process.returncode == 0 - except: - pass - - # 显示安装状态 - status_message = f"John the Ripper: {'已安装 - ' + john_version if john_installed else '未安装'}\n" - status_message += f"pdf2john: {'已安装' if pdf2john_installed else '未安装'}\n\n" - - if john_installed and pdf2john_installed: - status_message += "所有必要工具已安装,可以使用密码破解功能。" - else: - status_message += "部分工具未安装,密码破解功能可能无法正常工作。请按照安装指南进行安装。" - - QMessageBox.information(self, "安装状态", status_message) class DecryptThread(QThread): okSignal = Signal(tuple) # (success, message) progressSignal = Signal(int) + current_pwd_signal = Signal(str) # 新增信号,用于传递当前尝试的密码 def __init__(self, input_file, output_path, owner_password="", user_password="", use_force_decrypt=False, use_crack_decrypt=False, crack_settings=None): @@ -593,14 +761,53 @@ def __init__(self, input_file, output_path, owner_password="", user_password="", self.use_force_decrypt = use_force_decrypt self.use_crack_decrypt = use_crack_decrypt self.crack_settings = crack_settings or {} + self.should_stop = False # 添加停止标记 + + def check_tool_installed(self, tool_name): + """检查是否安装了指定工具""" + try: + if tool_name in ["pdf2john.py", "pdf2john"]: + # 特殊处理pdf2john + process = subprocess.Popen( + ["where", tool_name] if os.name == "nt" else ["which", tool_name], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE + ) + process.communicate() + return process.returncode == 0 + elif tool_name == "john": + # 特殊处理john + john_process = subprocess.Popen( + ["john"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + shell=True + ) + stdout, stderr = john_process.communicate() + + # 记录输出用于调试 + john_stdout = stdout.decode('utf-8', errors='ignore') + john_stderr = stderr.decode('utf-8', errors='ignore') + + # 宽松检查 + return john_process.returncode == 0 or "john" in john_stdout.lower() or "john" in john_stderr.lower() + else: + # 一般工具检查 + subprocess.run( + [tool_name, "--version"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + check=False + ) + return True + except Exception as e: + logger.error(f"检查{tool_name}工具安装出错: {str(e)}") + return False def run(self): if self.use_crack_decrypt: # 使用密码破解工具尝试破解密码 return self.run_crack_decrypt() - elif self.use_force_decrypt: - # 使用PyPDF2尝试无密码解密 - return self.run_force_decrypt() else: # 使用PyMuPDF带密码解密 return self.run_normal_decrypt() @@ -622,194 +829,170 @@ def run_crack_decrypt(self): # 准备临时文件 temp_dir = tempfile.mkdtemp() - hash_file = os.path.join(temp_dir, "pdf_hash.txt") - # 第1步:提取PDF密码哈希 + # 直接尝试常见密码 self.progressSignal.emit(20) - try: - # 检查是否安装了pdf2john工具 - pdf2john_installed = self.check_tool_installed("pdf2john") - if not pdf2john_installed: - pdf2john_installed = self.check_tool_installed("pdf2john.py") - - if not pdf2john_installed: - logger.error("未找到pdf2john工具,无法提取密码哈希") - self.okSignal.emit((False, "未找到pdf2john工具,请安装John the Ripper")) - return - - # 使用pdf2john提取哈希 - extract_cmd = ["pdf2john", self.input_file.file_path] - if not self.check_tool_installed("pdf2john"): - extract_cmd = ["python", "pdf2john.py", self.input_file.file_path] - - process = subprocess.Popen(extract_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - stdout, stderr = process.communicate() - - if process.returncode != 0: - logger.error(f"提取PDF哈希失败: {stderr.decode('utf-8', errors='ignore')}") - self.okSignal.emit((False, "提取PDF哈希失败,无法进行破解")) - return - - # 保存哈希到文件 - with open(hash_file, 'wb') as f: - f.write(stdout) - - logger.info("成功提取PDF密码哈希") - except Exception as e: - logger.error(f"提取PDF哈希过程中发生错误: {str(e)}") - - # 尝试模拟pdf2john的输出 - try: - pdf_name = os.path.basename(self.input_file.file_path) - hash_output = f"{pdf_name}:$pdf$X*X*XX*X*X*X*X*X*X*X*X*X*X*X*X*X*X" - with open(hash_file, 'w') as f: - f.write(hash_output) - logger.info("使用模拟哈希代替") - except: - self.okSignal.emit((False, f"提取PDF哈希失败: {str(e)}")) - return - - # 第2步:使用John the Ripper破解密码 - self.progressSignal.emit(30) - password = None + common_passwords = ['', '1234', '0000', '1111', '9999', '123456', 'password', 'admin', 'qwerty'] + logger.info("尝试一些常见密码...") - try: - # 检查是否安装了John the Ripper - if not self.check_tool_installed("john"): - logger.error("未找到John the Ripper工具") - self.okSignal.emit((False, "未找到John the Ripper工具,请先安装")) + for pwd in common_passwords: + if self.isInterruptionRequested(): + logger.info("破解过程被用户终止") + self.okSignal.emit((False, "用户终止了破解过程")) return - - # 根据破解模式生成命令 - crack_cmd = ["john"] - - if self.crack_settings.get("mode") == "dictionary": - # 字典模式 - dict_path = self.crack_settings.get("dict_path", "") - if os.path.exists(dict_path): - crack_cmd.extend(["--wordlist", dict_path]) - else: - # 使用默认字典 - crack_cmd.append("--wordlist=password.lst") - else: - # 暴力破解模式 - min_len = self.crack_settings.get("min_length", 4) - max_len = self.crack_settings.get("max_length", 8) - charset = self.crack_settings.get("charset", "digits") - - # 根据字符集构建参数 - charset_arg = "" - if charset == "digits": - charset_arg = "0123456789" - elif charset == "lowercase": - charset_arg = "abcdefghijklmnopqrstuvwxyz" - elif charset == "uppercase": - charset_arg = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - else: # all - charset_arg = "?a" # John的所有字符集 - crack_cmd.extend([ - "--incremental", - f"--min-length={min_len}", - f"--max-length={max_len}" - ]) - - if charset != "all": - crack_cmd.append(f"--mask=?{charset_arg}") - - # 设置破解超时时间 - timeout = self.crack_settings.get("timeout", 60) - crack_cmd.extend(["--max-run-time", str(timeout)]) - - # 添加哈希文件路径 - crack_cmd.append(hash_file) - - # 执行破解命令 - logger.info(f"开始执行破解命令: {' '.join(crack_cmd)}") - process = subprocess.Popen(crack_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - - # 等待破解完成 - for i in range(40, 80): - if process.poll() is not None: - break - self.progressSignal.emit(i) - self.msleep(1000) # 每秒更新一次进度 - - # 确保进程结束 - try: - process.terminate() - except: - pass - - # 获取破解结果 - show_cmd = ["john", "--show", hash_file] - show_process = subprocess.Popen(show_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - stdout, stderr = show_process.communicate() - - # 解析输出获取密码 - output = stdout.decode('utf-8', errors='ignore') - for line in output.splitlines(): - if ":" in line: - parts = line.split(":") - if len(parts) >= 2: - password = parts[1].strip() - break - - if password: - logger.info(f"成功破解PDF密码: {password}") - else: - logger.info("在指定时间内未能破解出密码") - except Exception as e: - logger.error(f"密码破解过程中发生错误: {str(e)}") - - # 第3步:使用破解的密码或尝试其他方法解密PDF - self.progressSignal.emit(85) - - if password: - # 使用破解的密码进行解密 + self.current_pwd_signal.emit(f"尝试常见密码: {pwd}") try: with fitz.open(self.input_file.file_path) as pdf: - if pdf.authenticate(password): + if pdf.authenticate(pwd): + # 成功找到密码 + logger.info(f"使用常见密码'{pwd}'成功解密") + + # 保存解密后的PDF pdf.save(self.output_path) self.progressSignal.emit(100) - self.okSignal.emit((True, f"{os.path.dirname(self.output_path)}\n成功破解密码: {password}")) + success_message = f"{os.path.dirname(self.output_path)}\n成功使用密码: {pwd}" + self.okSignal.emit((True, success_message)) return - else: - logger.error("破解的密码验证失败") except Exception as e: - logger.error(f"使用破解密码解密失败: {str(e)}") + logger.error(f"尝试密码'{pwd}'失败: {str(e)}") - # 如果破解失败或解密失败,尝试无密码解密方法 - logger.info("破解未成功,尝试备用解密方法") - return self.run_force_decrypt() + # 如果是字典模式,直接使用字典文件尝试密码 + if self.crack_settings.get("mode") == "dictionary": + dict_path = self.crack_settings.get("dict_path", "") + if os.path.exists(dict_path): + try: + logger.info(f"使用字典文件直接尝试密码: {dict_path}") + total_lines = sum(1 for _ in open(dict_path, 'r', encoding='utf-8', errors='ignore')) + current_line = 0 + + with open(dict_path, 'r', encoding='utf-8', errors='ignore') as dict_file: + for line in dict_file: + if self.isInterruptionRequested(): + logger.info("破解过程被用户终止") + self.okSignal.emit((False, "用户终止了破解过程")) + return + + pwd = line.strip() + if not pwd: # 跳过空行 + continue + + # 更新当前尝试的密码 + self.current_pwd_signal.emit(f"字典破解: {pwd}") + + # 更新进度 + current_line += 1 + progress = 30 + int(current_line / total_lines * 60) + self.progressSignal.emit(min(progress, 90)) + + try: + with fitz.open(self.input_file.file_path) as pdf: + if pdf.authenticate(pwd): + logger.info(f"使用字典中的密码'{pwd}'成功解密") + + # 保存解密后的PDF + pdf.save(self.output_path) + self.progressSignal.emit(100) + success_message = f"{os.path.dirname(self.output_path)}\n成功使用密码: {pwd}" + self.okSignal.emit((True, success_message)) + return + except Exception as e: + # 这个密码尝试失败,继续下一个 + continue + except Exception as e: + logger.error(f"读取字典文件失败: {str(e)}") + + # 暴力破解模式 - 使用排列组合方式 + if self.crack_settings.get("mode") == "bruteforce": + min_len = self.crack_settings.get("min_length", 4) + max_len = self.crack_settings.get("max_length", 8) + charset = self.crack_settings.get("charset", "digits") + + # 定义字符集 + charset_chars = "" + if charset == "digits": + charset_chars = "0123456789" + elif charset == "lowercase": + charset_chars = "abcdefghijklmnopqrstuvwxyz" + elif charset == "uppercase": + charset_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + elif charset == "alphanumeric": + charset_chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + else: # all + charset_chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+-=[]{}|;:,.<>?/" + + logger.info(f"开始暴力破解,字符集: {charset}, 长度范围: {min_len}-{max_len}") + + # 使用itertools实现高效的密码生成 + import itertools + + # 生成所有可能的密码长度 + for length in range(min_len, max_len + 1): + logger.info(f"尝试长度为 {length} 的密码") + self.current_pwd_signal.emit(f"准备破解长度: {length}") + + # 使用笛卡尔积生成指定长度的所有可能组合 + total_combinations = len(charset_chars) ** length + logger.info(f"长度为 {length} 的可能组合数: {total_combinations}") + + # 显示预计时间 + if length > 4 and charset != "digits": + self.current_pwd_signal.emit(f"长度: {length}, 组合数: {total_combinations}, 将耗时较长...") + + # 如果长度大于6,给出警告 + if length > 6 and charset != "digits": + self.current_pwd_signal.emit(f"警告: 长度为 {length} 的破解可能非常耗时!") + + # 记录当前组合索引,用于进度计算 + combination_count = 0 + last_progress_update = time.time() + + # 逐个生成密码尝试 + for pwd_tuple in itertools.product(charset_chars, repeat=length): + if self.isInterruptionRequested(): + logger.info("破解过程被用户终止") + self.okSignal.emit((False, "用户终止了破解过程")) + return + + # 转换为字符串 + pwd = ''.join(pwd_tuple) + + # 更新计数 + combination_count += 1 + + # 每1000次更新一次进度和当前密码显示 + if combination_count % 1000 == 0 or time.time() - last_progress_update > 0.5: + # 计算进度 + progress_percent = (combination_count / total_combinations) * 100 + # 总进度取决于当前长度相对于总长度范围的位置 + total_progress = 30 + min(60 * (length - min_len + progress_percent/100) / (max_len - min_len + 1), 60) + self.progressSignal.emit(min(int(total_progress), 90)) + + # 更新当前尝试的密码 + self.current_pwd_signal.emit(f"暴力破解: {pwd} ({combination_count}/{total_combinations})") + last_progress_update = time.time() + + try: + with fitz.open(self.input_file.file_path) as pdf: + if pdf.authenticate(pwd): + logger.info(f"破解成功,密码: {pwd}") + pdf.save(self.output_path) + self.progressSignal.emit(100) + success_message = f"{os.path.dirname(self.output_path)}\n成功破解密码: {pwd}" + self.okSignal.emit((True, success_message)) + return + except Exception as e: + # 忽略单个密码的错误,继续尝试 + continue + + # 如果所有尝试都失败,返回未成功消息 + logger.info("所有密码尝试均失败") + self.okSignal.emit((False, "未能破解密码,请尝试其他解密方法")) except Exception as e: logger.error(f"PDF破解错误: {str(e)}") self.okSignal.emit((False, f"PDF破解失败: {str(e)}")) - - def check_tool_installed(self, tool_name): - """检查是否安装了指定工具""" - try: - if tool_name in ["pdf2john.py", "pdf2john"]: - # 特殊处理pdf2john - process = subprocess.Popen( - ["where", tool_name] if os.name == "nt" else ["which", tool_name], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE - ) - process.communicate() - return process.returncode == 0 - else: - # 一般工具检查 - subprocess.run( - [tool_name, "--version"], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - check=False - ) - return True - except: - return False + return def run_normal_decrypt(self): try: @@ -873,145 +1056,6 @@ def run_normal_decrypt(self): except Exception as e: logger.error(f"PDF解密错误: {str(e)}") self.okSignal.emit((False, str(e))) - - def run_force_decrypt(self): - try: - self.progressSignal.emit(20) - - # 打开加密的PDF文件 - with open(self.input_file.file_path, "rb") as infile: - # 使用strict=False参数提高兼容性 - reader = PdfReader(infile, strict=False) - - # 检查文件是否加密 - if not reader.is_encrypted: - self.okSignal.emit((False, "PDF文件未加密,无需解密")) - return - - self.progressSignal.emit(40) - - # 尝试方法1: 使用空密码解密 - decrypt_success = False - try: - # 尝试解密 - decrypt_result = reader.decrypt("") - if decrypt_result > 0: - decrypt_success = True - logger.info("使用空密码成功解密PDF") - except Exception as e: - logger.error(f"使用空密码解密失败: {str(e)}") - - # 创建一个新的PDF写入器 - writer = PdfWriter() - - # 尝试方法2: 如果标准方法失败,尝试其他方式 - if not decrypt_success: - try: - # 尝试直接修改加密标志 - reader._decrypt = lambda *args: 1 # 覆盖解密方法 - reader.is_encrypted = False # 强制设置为未加密 - decrypt_success = True - logger.info("使用标志修改方法解密PDF") - except Exception as e: - logger.error(f"使用标志修改解密失败: {str(e)}") - - self.progressSignal.emit(60) - - # 方法3: 使用append_pages_from_reader方法添加所有页面 - pages_added = 0 - try: - # 尝试批量添加所有页面 - writer.append_pages_from_reader(reader) - # 计算成功添加的页数 - pages_added = len(writer.pages) - logger.info(f"成功批量添加{pages_added}页") - except Exception as e: - logger.error(f"批量添加页面失败: {str(e)}") - - # 方法4: 如果批量添加失败,尝试逐页添加 - if pages_added == 0: - try: - total_pages = len(reader.pages) - for page_num in range(total_pages): - try: - page = reader.pages[page_num] - writer.add_page(page) - pages_added += 1 - except Exception as page_e: - logger.error(f"处理第{page_num+1}页时出错: {str(page_e)}") - continue - except Exception as pages_e: - logger.error(f"逐页添加失败: {str(pages_e)}") - - self.progressSignal.emit(80) - - # 检查是否成功添加了页面 - if pages_added == 0: - # 最后尝试方法5: 使用另一种打开方式 - try: - infile.seek(0) # 重置文件指针位置 - reader = PdfReader(infile, strict=False) - writer = PdfWriter() - # 不考虑加密状态,直接批量添加 - writer.append_pages_from_reader(reader) - pages_added = len(writer.pages) - except: - pass - - if pages_added == 0: - self.okSignal.emit((False, "无密码解密失败,未能提取任何页面")) - return - - # 保存解密后的PDF - with open(self.output_path, "wb") as outfile: - writer.write(outfile) - - self.progressSignal.emit(100) - - # 检查是否解密结果完整 - try: - total_pages = len(reader.pages) - if pages_added < total_pages: - self.okSignal.emit((True, f"{os.path.dirname(self.output_path)} (部分页面解密可能不完整)")) - else: - self.okSignal.emit((True, os.path.dirname(self.output_path))) - except: - # 无法确定原始页数,只返回成功信息 - self.okSignal.emit((True, os.path.dirname(self.output_path))) - - except Exception as e: - logger.error(f"无密码解密错误: {str(e)}") - - # 尝试备用方法 - 使用参考代码的逻辑 - try: - self.progressSignal.emit(25) - logger.info("尝试使用备用解密方法...") - - # 重新打开文件 - with open(self.input_file.file_path, "rb") as input_file: - # 使用strict=False参数 - reader = PdfReader(input_file, strict=False) - - # 尝试解密 - if reader.is_encrypted: - reader.decrypt("") - - # 创建写入器并添加所有页面 - writer = PdfWriter() - writer.append_pages_from_reader(reader) - - # 保存文件 - with open(self.output_path, "wb") as output_file: - writer.write(output_file) - - self.progressSignal.emit(100) - self.okSignal.emit((True, os.path.dirname(self.output_path))) - return - except Exception as backup_e: - logger.error(f"备用解密方法失败: {str(backup_e)}") - - # 如果所有方法都失败,返回原始错误 - self.okSignal.emit((False, f"无密码解密失败: {str(e)}")) if __name__ == '__main__': diff --git a/readme.md b/readme.md index a85fa13..214f247 100644 --- a/readme.md +++ b/readme.md @@ -41,7 +41,6 @@ ### PDF解密 提供多种解密方式: - 常规解密:使用用户提供的密码解密 -- 无密码解密:尝试移除弱加密保护 - 密码破解:使用John the Ripper自动破解PDF密码(需额外安装),支持字典攻击和暴力破解 ## 计划中功能 From be4ecb76acda5c159c2e6971cc51f3001b329638 Mon Sep 17 00:00:00 2001 From: vistaminc Date: Sun, 4 May 2025 09:35:43 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=9A=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=E5=A4=84=E7=90=86=E7=A0=B4=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__pycache__/decrypt.cpython-313.pyc | Bin 54294 -> 65582 bytes app/ui/pdf_tools/security/decrypt.py | 443 +++++++++++++----- 2 files changed, 316 insertions(+), 127 deletions(-) diff --git a/app/ui/pdf_tools/security/__pycache__/decrypt.cpython-313.pyc b/app/ui/pdf_tools/security/__pycache__/decrypt.cpython-313.pyc index 516871a8e94a0719ae43a5e9961da2c1be38e60d..8b5a6c018fa48a1a152fd4ea7ffbe2e1ac10aeec 100644 GIT binary patch delta 20122 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 Qd|&R?lIN#)(qEkVe;ecQKmY&$ delta 11257 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 P7e-{{?XP#z9~S;Mk+eaW diff --git a/app/ui/pdf_tools/security/decrypt.py b/app/ui/pdf_tools/security/decrypt.py index 3b24c40..f549db3 100644 --- a/app/ui/pdf_tools/security/decrypt.py +++ b/app/ui/pdf_tools/security/decrypt.py @@ -4,6 +4,10 @@ import tempfile import threading import time +import multiprocessing +import concurrent.futures +import queue +import math import fitz from PyPDF2 import PdfReader, PdfWriter @@ -12,7 +16,7 @@ from PySide6.QtWidgets import (QWidget, QMessageBox, QFileDialog, QRadioButton, QButtonGroup, QHBoxLayout, QLabel, QCheckBox, QProgressDialog, QDialog, QVBoxLayout, QPushButton, - QLineEdit, QComboBox) + QLineEdit, QComboBox, QSpinBox) from app.model import PdfFile from app.ui.components.QCursorGif import QCursorGif @@ -125,7 +129,8 @@ def __init__(self, router: Router, parent=None): "min_length": 4, # 最小密码长度 "max_length": 8, # 最大密码长度 "charset": "digits", # 'digits', 'lowercase', 'uppercase', 'all' - "timeout": 0 # 超时时间(秒),0表示不限制 + "timeout": 0, # 超时时间(秒),0表示不限制 + "threads": self.get_recommended_threads() # 线程数,默认为推荐值 } def init_ui(self): @@ -317,6 +322,25 @@ def show_crack_settings(self): charset_layout.addWidget(charset_combo) layout.addLayout(charset_layout) + # 添加线程数设置 + threads_layout = QHBoxLayout() + threads_label = QLabel("线程数:") + threads_layout.addWidget(threads_label) + + threads_spinbox = QSpinBox() + threads_spinbox.setMinimum(1) + threads_spinbox.setMaximum(32) + threads_spinbox.setValue(self.crack_settings.get("threads", self.get_recommended_threads())) + threads_spinbox.setToolTip(f"推荐线程数: {self.get_recommended_threads()} (基于CPU核心数)") + threads_layout.addWidget(threads_spinbox) + + # 添加自动推荐按钮 + recommend_btn = QPushButton("推荐值") + recommend_btn.clicked.connect(lambda: threads_spinbox.setValue(self.get_recommended_threads())) + threads_layout.addWidget(recommend_btn) + + layout.addLayout(threads_layout) + # 按钮区域 btn_layout = QHBoxLayout() ok_btn = QPushButton("确定") @@ -336,6 +360,7 @@ def show_crack_settings(self): max_length.text(), charset_combo.currentIndex(), "0", # 总是传递0作为超时时间 + threads_spinbox.value(), # 传递线程数 dialog )) cancel_btn.clicked.connect(dialog.reject) @@ -361,7 +386,7 @@ def select_dict_file(self, line_edit): if file_path: line_edit.setText(file_path) - def save_crack_settings(self, is_dict_mode, dict_path, min_length, max_length, charset_index, timeout, dialog): + def save_crack_settings(self, is_dict_mode, dict_path, min_length, max_length, charset_index, timeout, threads, dialog): """保存破解设置""" # 验证输入 if is_dict_mode and not os.path.exists(dict_path): @@ -373,6 +398,8 @@ def save_crack_settings(self, is_dict_mode, dict_path, min_length, max_length, c max_len = int(max_length) # 忽略超时参数,始终设置为0表示无限制 timeout_val = 0 + # 验证线程数 + thread_count = min(max(1, threads), 32) # 限制在1-32之间 if min_len < 1 or max_len < min_len: raise ValueError("无效的参数值") @@ -388,7 +415,8 @@ def save_crack_settings(self, is_dict_mode, dict_path, min_length, max_length, c "min_length": min_len, "max_length": max_len, "charset": charset_map[charset_index], - "timeout": timeout_val # 始终为0,表示不限制时间 + "timeout": timeout_val, # 始终为0,表示不限制时间 + "threads": thread_count # 保存线程数设置 } dialog.accept() @@ -745,6 +773,13 @@ def show_installation_guide(self): dialog.setLayout(layout) dialog.exec_() + def get_recommended_threads(self): + """根据系统CPU核心数推荐合适的线程数""" + # 获取CPU核心数 + cpu_count = multiprocessing.cpu_count() + # 推荐使用核心数-1的线程数,最少为2 + return max(2, cpu_count - 1) + class DecryptThread(QThread): okSignal = Signal(tuple) # (success, message) @@ -859,140 +894,294 @@ def run_crack_decrypt(self): # 如果是字典模式,直接使用字典文件尝试密码 if self.crack_settings.get("mode") == "dictionary": - dict_path = self.crack_settings.get("dict_path", "") - if os.path.exists(dict_path): - try: - logger.info(f"使用字典文件直接尝试密码: {dict_path}") - total_lines = sum(1 for _ in open(dict_path, 'r', encoding='utf-8', errors='ignore')) - current_line = 0 - - with open(dict_path, 'r', encoding='utf-8', errors='ignore') as dict_file: - for line in dict_file: - if self.isInterruptionRequested(): - logger.info("破解过程被用户终止") - self.okSignal.emit((False, "用户终止了破解过程")) - return - - pwd = line.strip() - if not pwd: # 跳过空行 - continue - - # 更新当前尝试的密码 - self.current_pwd_signal.emit(f"字典破解: {pwd}") - - # 更新进度 - current_line += 1 - progress = 30 + int(current_line / total_lines * 60) - self.progressSignal.emit(min(progress, 90)) - - try: - with fitz.open(self.input_file.file_path) as pdf: - if pdf.authenticate(pwd): - logger.info(f"使用字典中的密码'{pwd}'成功解密") - - # 保存解密后的PDF - pdf.save(self.output_path) - self.progressSignal.emit(100) - success_message = f"{os.path.dirname(self.output_path)}\n成功使用密码: {pwd}" - self.okSignal.emit((True, success_message)) - return - except Exception as e: - # 这个密码尝试失败,继续下一个 - continue - except Exception as e: - logger.error(f"读取字典文件失败: {str(e)}") + return self.run_dict_crack() - # 暴力破解模式 - 使用排列组合方式 + # 暴力破解模式 - 使用排列组合方式,多线程处理 if self.crack_settings.get("mode") == "bruteforce": - min_len = self.crack_settings.get("min_length", 4) - max_len = self.crack_settings.get("max_length", 8) - charset = self.crack_settings.get("charset", "digits") - - # 定义字符集 - charset_chars = "" - if charset == "digits": - charset_chars = "0123456789" - elif charset == "lowercase": - charset_chars = "abcdefghijklmnopqrstuvwxyz" - elif charset == "uppercase": - charset_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - elif charset == "alphanumeric": - charset_chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" - else: # all - charset_chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+-=[]{}|;:,.<>?/" + return self.run_bruteforce_crack() + + # 如果所有尝试都失败,返回未成功消息 + logger.info("所有密码尝试均失败") + self.okSignal.emit((False, "未能破解密码,请尝试其他解密方法")) + + except Exception as e: + logger.error(f"PDF破解错误: {str(e)}") + self.okSignal.emit((False, f"PDF破解失败: {str(e)}")) + return + + def run_dict_crack(self): + """使用字典破解密码 - 多线程版本""" + dict_path = self.crack_settings.get("dict_path", "") + if not os.path.exists(dict_path): + self.okSignal.emit((False, "字典文件不存在")) + return + + try: + logger.info(f"使用字典文件多线程破解: {dict_path}") + # 获取线程数 + thread_count = self.crack_settings.get("threads", 4) + logger.info(f"使用 {thread_count} 个线程进行字典破解") + + # 读取字典文件中的密码列表 + passwords = [] + with open(dict_path, 'r', encoding='utf-8', errors='ignore') as f: + for line in f: + pwd = line.strip() + if pwd: # 跳过空行 + passwords.append(pwd) + + if not passwords: + self.okSignal.emit((False, "字典文件为空或格式不正确")) + return - logger.info(f"开始暴力破解,字符集: {charset}, 长度范围: {min_len}-{max_len}") + total_passwords = len(passwords) + logger.info(f"字典中共有 {total_passwords} 个密码") + self.current_pwd_signal.emit(f"正在使用 {thread_count} 个线程破解字典中的 {total_passwords} 个密码...") + + # 创建一个用于状态同步的对象 + class CrackState: + def __init__(self): + self.success = False + self.found_password = None + self.processed_count = 0 + self.lock = threading.Lock() + + crack_state = CrackState() + + # 定义测试密码的函数 + def test_password(pwd): + if crack_state.success: + return # 如果已经成功,就不再测试 - # 使用itertools实现高效的密码生成 - import itertools + try: + with fitz.open(self.input_file.file_path) as pdf: + if pdf.authenticate(pwd): + with crack_state.lock: + if not crack_state.success: # 双重检查 + crack_state.success = True + crack_state.found_password = pwd + logger.info(f"字典破解成功,密码: {pwd}") + except Exception as e: + logger.debug(f"尝试密码 '{pwd}' 失败: {str(e)}") - # 生成所有可能的密码长度 - for length in range(min_len, max_len + 1): - logger.info(f"尝试长度为 {length} 的密码") - self.current_pwd_signal.emit(f"准备破解长度: {length}") - - # 使用笛卡尔积生成指定长度的所有可能组合 - total_combinations = len(charset_chars) ** length - logger.info(f"长度为 {length} 的可能组合数: {total_combinations}") - - # 显示预计时间 - if length > 4 and charset != "digits": - self.current_pwd_signal.emit(f"长度: {length}, 组合数: {total_combinations}, 将耗时较长...") + # 更新处理计数 + with crack_state.lock: + crack_state.processed_count += 1 + progress = int(crack_state.processed_count / total_passwords * 60) + 30 + self.progressSignal.emit(min(progress, 90)) - # 如果长度大于6,给出警告 - if length > 6 and charset != "digits": - self.current_pwd_signal.emit(f"警告: 长度为 {length} 的破解可能非常耗时!") - - # 记录当前组合索引,用于进度计算 - combination_count = 0 - last_progress_update = time.time() + # 每处理100个密码更新一次UI + if crack_state.processed_count % 100 == 0 or crack_state.processed_count == total_passwords: + percentage = int(crack_state.processed_count / total_passwords * 100) + self.current_pwd_signal.emit(f"字典破解: 已尝试 {crack_state.processed_count}/{total_passwords} 个密码 ({percentage}%)") + + # 创建线程池 + with concurrent.futures.ThreadPoolExecutor(max_workers=thread_count) as executor: + # 提交任务 + futures = [] + for pwd in passwords: + if self.isInterruptionRequested(): + break + futures.append(executor.submit(test_password, pwd)) + + # 等待任务完成 + for future in concurrent.futures.as_completed(futures): + if self.isInterruptionRequested() or crack_state.success: + # 如果破解成功或用户请求终止,取消所有未完成的任务 + for f in futures: + f.cancel() + break - # 逐个生成密码尝试 - for pwd_tuple in itertools.product(charset_chars, repeat=length): - if self.isInterruptionRequested(): - logger.info("破解过程被用户终止") - self.okSignal.emit((False, "用户终止了破解过程")) - return - - # 转换为字符串 - pwd = ''.join(pwd_tuple) - - # 更新计数 - combination_count += 1 - - # 每1000次更新一次进度和当前密码显示 - if combination_count % 1000 == 0 or time.time() - last_progress_update > 0.5: - # 计算进度 - progress_percent = (combination_count / total_combinations) * 100 - # 总进度取决于当前长度相对于总长度范围的位置 - total_progress = 30 + min(60 * (length - min_len + progress_percent/100) / (max_len - min_len + 1), 60) - self.progressSignal.emit(min(int(total_progress), 90)) - - # 更新当前尝试的密码 - self.current_pwd_signal.emit(f"暴力破解: {pwd} ({combination_count}/{total_combinations})") - last_progress_update = time.time() - - try: - with fitz.open(self.input_file.file_path) as pdf: - if pdf.authenticate(pwd): - logger.info(f"破解成功,密码: {pwd}") - pdf.save(self.output_path) - self.progressSignal.emit(100) - success_message = f"{os.path.dirname(self.output_path)}\n成功破解密码: {pwd}" - self.okSignal.emit((True, success_message)) - return - except Exception as e: - # 忽略单个密码的错误,继续尝试 - continue + # 获取任务结果(可能产生异常) + try: + future.result() + except Exception as e: + logger.error(f"字典破解线程出错: {str(e)}") + + # 检查是否成功 + if crack_state.success and crack_state.found_password: + # 保存解密后的PDF + with fitz.open(self.input_file.file_path) as pdf: + pdf.authenticate(crack_state.found_password) + pdf.save(self.output_path) - # 如果所有尝试都失败,返回未成功消息 - logger.info("所有密码尝试均失败") - self.okSignal.emit((False, "未能破解密码,请尝试其他解密方法")) + self.progressSignal.emit(100) + success_message = f"{os.path.dirname(self.output_path)}\n成功使用密码: {crack_state.found_password}" + self.okSignal.emit((True, success_message)) + return + + # 如果被终止 + if self.isInterruptionRequested(): + logger.info("字典破解过程被用户终止") + self.okSignal.emit((False, "用户终止了破解过程")) + return + + # 所有密码都尝试过了,但没有成功 + logger.info("字典中所有密码尝试均失败") + self.okSignal.emit((False, "字典中所有密码尝试均失败,请尝试其他解密方法")) except Exception as e: - logger.error(f"PDF破解错误: {str(e)}") - self.okSignal.emit((False, f"PDF破解失败: {str(e)}")) + logger.error(f"字典破解出错: {str(e)}") + self.okSignal.emit((False, f"字典破解失败: {str(e)}")) + + def run_bruteforce_crack(self): + """使用暴力破解方式 - 多线程版本""" + min_len = self.crack_settings.get("min_length", 4) + max_len = self.crack_settings.get("max_length", 8) + charset = self.crack_settings.get("charset", "digits") + thread_count = self.crack_settings.get("threads", 4) + + logger.info(f"使用 {thread_count} 个线程进行暴力破解") + + # 定义字符集 + charset_chars = "" + if charset == "digits": + charset_chars = "0123456789" + elif charset == "lowercase": + charset_chars = "abcdefghijklmnopqrstuvwxyz" + elif charset == "uppercase": + charset_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + elif charset == "alphanumeric": + charset_chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + else: # all + charset_chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+-=[]{}|;:,.<>?/" + + logger.info(f"开始多线程暴力破解,字符集: {charset}, 长度范围: {min_len}-{max_len}") + + import itertools + + # 创建一个用于状态同步的对象 + class CrackState: + def __init__(self): + self.success = False + self.found_password = None + self.current_length = min_len + self.current_count = 0 + self.total_combinations = 0 + self.lock = threading.Lock() + + crack_state = CrackState() + + # 定义密码检查函数 + def check_password(pwd): + if crack_state.success: + return # 如果已经成功,就不再测试 + + try: + with fitz.open(self.input_file.file_path) as pdf: + if pdf.authenticate(pwd): + with crack_state.lock: + if not crack_state.success: # 双重检查 + crack_state.success = True + crack_state.found_password = pwd + logger.info(f"暴力破解成功,密码: {pwd}") + except Exception as e: + logger.debug(f"尝试密码 '{pwd}' 失败: {str(e)}") + + # 更新处理计数 + with crack_state.lock: + crack_state.current_count += 1 + + # 每处理1000个密码或每0.5秒更新一次进度 + if crack_state.current_count % 1000 == 0: + percent = (crack_state.current_count / crack_state.total_combinations * 100) + if crack_state.total_combinations > 0: + length_progress = (crack_state.current_length - min_len) / (max_len - min_len + 1) + total_progress = 30 + min(60 * (length_progress + percent / 100 / (max_len - min_len + 1)), 60) + self.progressSignal.emit(min(int(total_progress), 90)) + + self.current_pwd_signal.emit( + f"暴力破解(长度{crack_state.current_length}): {pwd} " + f"({crack_state.current_count}/{crack_state.total_combinations}, " + f"{thread_count}线程)" + ) + + # 按照密码长度逐一尝试 + for length in range(min_len, max_len + 1): + if self.isInterruptionRequested() or crack_state.success: + break + + crack_state.current_length = length + crack_state.current_count = 0 + crack_state.total_combinations = len(charset_chars) ** length + + logger.info(f"尝试长度为 {length} 的密码,组合总数: {crack_state.total_combinations}") + self.current_pwd_signal.emit(f"准备破解长度: {length},组合总数: {crack_state.total_combinations}...") + + # 如果组合数太多,警告用户 + if crack_state.total_combinations > 10000000: # 1千万 + logger.warning(f"长度 {length} 的组合数超过1千万,可能需要很长时间") + self.current_pwd_signal.emit(f"警告: 长度 {length} 的组合数很大,破解可能需要很长时间!") + + # 分批生成密码并多线程处理 + # 计算合适的批次大小 + batch_size = min(10000, max(1000, crack_state.total_combinations // (thread_count * 10))) + + # 创建密码队列 + password_queue = queue.Queue(maxsize=batch_size * 2) # 队列大小为批次大小的两倍 + + # 生产者线程 - 生成密码并放入队列 + def password_producer(): + for pwd_tuple in itertools.product(charset_chars, repeat=length): + if self.isInterruptionRequested() or crack_state.success: + break + pwd = ''.join(pwd_tuple) + password_queue.put(pwd) + # 添加结束标记 + for _ in range(thread_count): + password_queue.put(None) + + # 启动生产者线程 + producer_thread = threading.Thread(target=password_producer) + producer_thread.daemon = True + producer_thread.start() + + # 消费者函数 - 从队列中获取密码并检查 + def password_consumer(): + while not self.isInterruptionRequested() and not crack_state.success: + pwd = password_queue.get() + if pwd is None: # 结束标记 + break + check_password(pwd) + password_queue.task_done() + + # 启动消费者线程 + consumer_threads = [] + for _ in range(thread_count): + t = threading.Thread(target=password_consumer) + t.daemon = True + t.start() + consumer_threads.append(t) + + # 等待所有密码处理完成或找到密码 + for t in consumer_threads: + t.join() + + # 如果已经找到密码或用户要求终止,就退出循环 + if crack_state.success or self.isInterruptionRequested(): + break + + # 检查最终结果 + if crack_state.success and crack_state.found_password: + # 保存解密后的PDF + with fitz.open(self.input_file.file_path) as pdf: + pdf.authenticate(crack_state.found_password) + pdf.save(self.output_path) + + self.progressSignal.emit(100) + success_message = f"{os.path.dirname(self.output_path)}\n成功破解密码: {crack_state.found_password}" + self.okSignal.emit((True, success_message)) + return + + # 如果被终止 + if self.isInterruptionRequested(): + logger.info("暴力破解过程被用户终止") + self.okSignal.emit((False, "用户终止了破解过程")) return + + # 所有组合都尝试过了,但没有成功 + logger.info("暴力破解尝试所有可能的密码组合均失败") + self.okSignal.emit((False, "所有可能的密码组合尝试均失败,请使用其他方法")) def run_normal_decrypt(self): try: