BabelDOC 0.6.1__tar.gz → 0.6.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- babeldoc-0.6.3/.github/workflows/checks.yml +55 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/workflows/labeler.yml +3 -3
- {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/workflows/lint.yml +1 -1
- {babeldoc-0.6.1 → babeldoc-0.6.3}/.gitignore +1 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/PKG-INFO +6 -5
- babeldoc-0.6.3/babeldoc/__init__.py +1 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/const.py +1 -1
- babeldoc-0.6.3/babeldoc/format/pdf/babelpdf/type3.py +159 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/backend/pdf_creater.py +103 -6
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/frontend/il_creater.py +122 -27
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/frontend/il_creater_active.py +58 -8
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/il_version_1.py +28 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/il_version_1.rnc +4 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/il_version_1.rng +20 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/il_version_1.xsd +4 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/extract_char.py +98 -53
- babeldoc-0.6.3/babeldoc/format/pdf/document_il/utils/type3_font_metrics.py +55 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/high_level.py +62 -3
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/native_page_interpreter.py +2 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/prepared_resource_builder.py +5 -1
- babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/_cmap_manifest_data.py +603 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/cid_cmap_runtime.py +1 -1
- babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/cmap_secure_loader.py +61 -0
- babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/cmapdb_runtime.py +86 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/sinks/legacy_ir.py +6 -1
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/text_positioning.py +4 -1
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/tokenizer.py +9 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/parse_shared.py +4 -4
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/main.py +1 -1
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/cmapdb.py +12 -14
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/image.py +8 -2
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/server.py +22 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/generate_font_metadata.py +63 -33
- babeldoc-0.6.3/docs/release-notes/v0.6.2.md +16 -0
- babeldoc-0.6.3/docs/release-notes/v0.6.3.md +80 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/pyproject.toml +7 -6
- babeldoc-0.6.1/.github/workflows/test.yml +0 -59
- babeldoc-0.6.1/babeldoc/__init__.py +0 -1
- babeldoc-0.6.1/babeldoc/format/pdf/babelpdf/type3.py +0 -41
- {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/PULL_REQUEST_TEMPLATE/pr_form.yml +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/dependabot.yml +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/labels.yml +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/release-drafter.yml +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/workflows/codeql.yml +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/workflows/docs.yml +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/workflows/pr-lint.yml +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/workflows/publish-to-pypi.yml +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/.pre-commit-config.yaml +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/LICENSE +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/README.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/assets/assets.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/assets/embedding_assets_metadata.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/asynchronize/__init__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/babeldoc_exception/BabelDOCException.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/babeldoc_exception/__init__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/README.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/__init__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/base_doclayout.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/doclayout.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/rpc_doclayout.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/rpc_doclayout2.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/rpc_doclayout3.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/rpc_doclayout4.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/rpc_doclayout5.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/rpc_doclayout6.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/rpc_doclayout7.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/rpc_doclayout8.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/__init__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/__init__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/awlt_char.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/babelpdf/base14.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/babelpdf/cidfont.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/babelpdf/cmap.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/babelpdf/encoding.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/babelpdf/utils.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/babelpdf/win_core.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/converter.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/__init__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/backend/__init__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/frontend/__init__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/frontend/il_creater_active_support.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/frontend/inline_image_params.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/__init__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/add_debug_information.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/automatic_term_extractor.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/detect_scanned_file.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/il_translator.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/il_translator_llm_only.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/layout_parser.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/paragraph_finder.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/remove_descent.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/styles_and_formulas.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/table_parser.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/typesetting.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/__init__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/fontmap.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/formular_helper.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/layout_helper.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/matrix_helper.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/mupdf_helper.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/paragraph_helper.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/spatial_analyzer.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/style_helper.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/zstd_helper.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/xml_converter.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/legacy_parse.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/__init__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/active_direct_font_backend.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/active_font_backend.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/active_font_resource_runtime.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/active_font_runtime.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/active_object_backend.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/active_object_projection.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/active_parse_runtime.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/active_value_access.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/base_operations.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/bridge_types.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/compat/__init__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/font_spec_primitives.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/font_types.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/glyphs.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/interpreter.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/native_page_execution_session.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/native_parse.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/object_model.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/object_parser.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/page_api.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/page_content_access.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/page_content_execution.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/page_execution_session.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/page_interpreter.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/pdf_token_serializer.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/prepared_page.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/prepared_page_access.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/prepared_page_debug_access.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/prepared_page_execution.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/pymupdf_candidate_parse.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/pymupdf_object_access.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/pymupdf_page_execution_session.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/pymupdf_page_view_access.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/pymupdf_prepared_page_access.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/raw_page_view.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/resolved_object_access.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/resource_runtime_types.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/resources.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/__init__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/cmap_types_runtime.py +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/78-EUC-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/78-EUC-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/78-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/78-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/78-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/78-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/78ms-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/78ms-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/83pv-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/83pv-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/90ms-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/90ms-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/90msp-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/90msp-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/90pv-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/90pv-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Add-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Add-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Add-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Add-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/B5-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/B5-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/B5pc-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/B5pc-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/CNS-EUC-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/CNS-EUC-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/CNS1-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/CNS1-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/CNS2-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/CNS2-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/ETHK-B5-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/ETHK-B5-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/ETen-B5-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/ETen-B5-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/ETenms-B5-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/ETenms-B5-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/EUC-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/EUC-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Ext-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Ext-RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Ext-RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Ext-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GB-EUC-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GB-EUC-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GB-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GB-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBK-EUC-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBK-EUC-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBK2K-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBK2K-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBKp-EUC-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBKp-EUC-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBT-EUC-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBT-EUC-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBT-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBT-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBTpc-EUC-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBTpc-EUC-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBpc-EUC-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBpc-EUC-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/HKdla-B5-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/HKdla-B5-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/HKdlb-B5-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/HKdlb-B5-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/HKgccs-B5-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/HKgccs-B5-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/HKm314-B5-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/HKm314-B5-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/HKm471-B5-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/HKm471-B5-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/HKscs-B5-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/HKscs-B5-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Hankaku-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Hankaku-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Hiragana-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Hiragana-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/KSC-EUC-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/KSC-EUC-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/KSC-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/KSC-Johab-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/KSC-Johab-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/KSC-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/KSCms-UHC-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/KSCms-UHC-HW-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/KSCms-UHC-HW-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/KSCms-UHC-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/KSCpc-EUC-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/KSCpc-EUC-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Katakana-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Katakana-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/NWP-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/NWP-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/README.txt +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/RKSJ-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/RKSJ-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Roman-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Roman-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniCNS-UCS2-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniCNS-UCS2-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniCNS-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniCNS-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniCNS-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniCNS-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniCNS-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniCNS-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniGB-UCS2-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniGB-UCS2-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniGB-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniGB-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniGB-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniGB-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniGB-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniGB-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJIS-UCS2-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJIS-UCS2-HW-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJIS-UCS2-HW-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJIS-UCS2-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJIS-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJIS-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJIS-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJIS-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJIS-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJIS-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJIS2004-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJIS2004-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJIS2004-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJIS2004-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJIS2004-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJIS2004-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJISX0213-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJISX0213-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJISX02132004-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniJISX02132004-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniKS-UCS2-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniKS-UCS2-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniKS-UTF16-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniKS-UTF16-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniKS-UTF32-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniKS-UTF32-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniKS-UTF8-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/UniKS-UTF8-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/WP-Symbol-H.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/WP-Symbol-V.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/to-unicode-Adobe-CNS1.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/to-unicode-Adobe-GB1.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/to-unicode-Adobe-Japan1.pickle.gz +0 -0
- {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/to-unicode-Adobe-Korea1.pickle.gz +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/data/fontmetrics.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/data/glyphlist.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/data/latin_enc.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/exceptions_runtime.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/font_data_runtime.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/font_encoding_runtime.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/font_unicode_maps.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/font_widths.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/object_primitives_runtime.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/object_stream_runtime.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/ps_primitives_runtime.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/runtime_settings.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/to_unicode_parser_runtime.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/sinks/native_text.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/state.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/xobject_content_execution.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/parse_only.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/pdfinterp.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/result_merger.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/split_manager.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/translation_config.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/glossary.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/LICENSE +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/__init__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/_saslprep.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/arcfour.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/ascii85.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/casting.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/ccitt.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/converter.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/data_structures.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/encodingdb.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/fontmetrics.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/glyphlist.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/high_level.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/jbig2.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/latin_enc.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/layout.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/lzw.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdfcolor.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdfdevice.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdfdocument.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdfexceptions.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdffont.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdfinterp.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdfpage.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdfparser.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdftypes.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/psexceptions.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/psparser.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/py.typed +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/runlength.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/settings.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/utils.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/progress_monitor.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/__init__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/__main__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/babeldoc_adapter.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/protocol.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/runner.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/state.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/translator.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/watermark_transform.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/workroot.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/generate_cmap_metadata.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/italic_assistance.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/italic_recognize_tool.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/translator/__init__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/translator/cache.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/translator/translator.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/utils/__init__.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/utils/atomic_integer.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/utils/memory.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/utils/priority_thread_pool_executor.py +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/CODE_OF_CONDUCT.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/CONTRIBUTING.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/CONTRIBUTOR_REWARD.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/ImplementationDetails/README.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/README.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/deploy.sh +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/example/demo_glossary.csv +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-banner.png +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-big-logo.png +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-contributor_reward_example.png +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-preview.gif +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-small-logo.png +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/index.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/intro-to-pdf-object.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/release-notes/v0.6.0.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/release-notes/v0.6.1.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/requirements.txt +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/supported_languages.md +0 -0
- {babeldoc-0.6.1 → babeldoc-0.6.3}/mkdocs.yml +0 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
name: Checks
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
pull_request:
|
|
6
|
+
branches: ["main"]
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
checks:
|
|
13
|
+
name: Package and lightweight PDF smoke
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v6
|
|
17
|
+
with:
|
|
18
|
+
persist-credentials: false
|
|
19
|
+
|
|
20
|
+
- name: Cache BabelDOC assets
|
|
21
|
+
uses: actions/cache@v5
|
|
22
|
+
with:
|
|
23
|
+
path: ~/.cache/babeldoc
|
|
24
|
+
key: babeldoc-assets-${{ hashFiles('babeldoc/assets/embedding_assets_metadata.py') }}
|
|
25
|
+
|
|
26
|
+
- name: Setup uv with Python 3.12
|
|
27
|
+
uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2
|
|
28
|
+
with:
|
|
29
|
+
python-version: "3.12"
|
|
30
|
+
enable-cache: true
|
|
31
|
+
cache-dependency-glob: "uv.lock"
|
|
32
|
+
activate-environment: true
|
|
33
|
+
|
|
34
|
+
- name: Install dependencies
|
|
35
|
+
run: uv sync
|
|
36
|
+
|
|
37
|
+
- name: Lint
|
|
38
|
+
run: uv run ruff check .
|
|
39
|
+
|
|
40
|
+
- name: Build package
|
|
41
|
+
run: uv build
|
|
42
|
+
|
|
43
|
+
- name: Import and CLI smoke
|
|
44
|
+
run: |
|
|
45
|
+
uv run python -m compileall babeldoc
|
|
46
|
+
uv run babeldoc --help
|
|
47
|
+
|
|
48
|
+
- name: Lightweight no-secret PDF E2E
|
|
49
|
+
run: |
|
|
50
|
+
uv run babeldoc \
|
|
51
|
+
--openai \
|
|
52
|
+
--openai-api-key ci-dummy-key \
|
|
53
|
+
--files examples/ci/test.pdf \
|
|
54
|
+
--only-parse-generate-pdf \
|
|
55
|
+
--skip-scanned-detection
|
|
@@ -6,11 +6,11 @@ on:
|
|
|
6
6
|
- 'main'
|
|
7
7
|
paths:
|
|
8
8
|
- '.github/labels.yml'
|
|
9
|
-
- '.github/workflows/
|
|
9
|
+
- '.github/workflows/labeler.yml'
|
|
10
10
|
pull_request:
|
|
11
11
|
paths:
|
|
12
12
|
- '.github/labels.yml'
|
|
13
|
-
- '.github/workflows/
|
|
13
|
+
- '.github/workflows/labeler.yml'
|
|
14
14
|
|
|
15
15
|
permissions:
|
|
16
16
|
contents: read
|
|
@@ -33,4 +33,4 @@ jobs:
|
|
|
33
33
|
yaml-file: .github/labels.yml
|
|
34
34
|
exclude: |
|
|
35
35
|
help*
|
|
36
|
-
*issue
|
|
36
|
+
*issue
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: BabelDOC
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.3
|
|
4
4
|
Summary: Yet Another Document Translator
|
|
5
5
|
Project-URL: Homepage, https://github.com/funstory-ai/BabelDOC
|
|
6
6
|
Project-URL: Issues, https://github.com/funstory-ai/BabelDOC/issues
|
|
@@ -16,7 +16,7 @@ Requires-Dist: bitstring>=4.3.0
|
|
|
16
16
|
Requires-Dist: chardet>=5.2.0
|
|
17
17
|
Requires-Dist: charset-normalizer>=2.0.0
|
|
18
18
|
Requires-Dist: configargparse>=1.7
|
|
19
|
-
Requires-Dist: cryptography>=
|
|
19
|
+
Requires-Dist: cryptography>=46.0.7
|
|
20
20
|
Requires-Dist: freetype-py>=2.5.1
|
|
21
21
|
Requires-Dist: httpx[socks]>=0.27.0
|
|
22
22
|
Requires-Dist: huggingface-hub>=0.27.0
|
|
@@ -24,15 +24,16 @@ Requires-Dist: hyperscan>=0.7.13
|
|
|
24
24
|
Requires-Dist: levenshtein>=0.27.1
|
|
25
25
|
Requires-Dist: msgpack>=1.1.0
|
|
26
26
|
Requires-Dist: numpy>=2.0.2
|
|
27
|
-
Requires-Dist: onnx>=1.
|
|
28
|
-
Requires-Dist: onnxruntime
|
|
27
|
+
Requires-Dist: onnx>=1.21.0
|
|
28
|
+
Requires-Dist: onnxruntime<1.24,>=1.16.1; python_version < '3.11'
|
|
29
|
+
Requires-Dist: onnxruntime>=1.16.1; python_version >= '3.11'
|
|
29
30
|
Requires-Dist: openai>=1.59.3
|
|
30
31
|
Requires-Dist: opencv-python-headless>=4.10.0.84
|
|
31
32
|
Requires-Dist: orjson>=3.10.14
|
|
32
33
|
Requires-Dist: peewee>=3.17.8
|
|
33
34
|
Requires-Dist: psutil>=7.0.0
|
|
34
35
|
Requires-Dist: pydantic>=2.10.6
|
|
35
|
-
Requires-Dist: pymupdf>=1.
|
|
36
|
+
Requires-Dist: pymupdf>=1.26.7
|
|
36
37
|
Requires-Dist: pyzstd>=0.17.0
|
|
37
38
|
Requires-Dist: rich>=13.9.4
|
|
38
39
|
Requires-Dist: rtree>=1.4.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.6.3"
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import io
|
|
2
|
+
import math
|
|
3
|
+
import re
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
|
|
6
|
+
import pymupdf
|
|
7
|
+
|
|
8
|
+
_PDF_NUMBER_RE = re.compile(r"[+-]?(?:(?:\d+\.\d*)|(?:\.\d+)|(?:\d+))(?:[eE][+-]?\d+)?")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@dataclass(frozen=True, slots=True)
|
|
12
|
+
class Type3FontMetrics:
|
|
13
|
+
font_matrix: tuple[float, float, float, float, float, float]
|
|
14
|
+
font_bbox: tuple[float, float, float, float]
|
|
15
|
+
font_matrix_text: str
|
|
16
|
+
font_bbox_text: str
|
|
17
|
+
em_height: float
|
|
18
|
+
ascent: float
|
|
19
|
+
descent: float
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _parse_number_array(text: str, *, expected_len: int) -> tuple[float, ...] | None:
|
|
23
|
+
values = [float(match.group(0)) for match in _PDF_NUMBER_RE.finditer(text)]
|
|
24
|
+
if len(values) < expected_len:
|
|
25
|
+
return None
|
|
26
|
+
values = values[:expected_len]
|
|
27
|
+
if not all(math.isfinite(value) for value in values):
|
|
28
|
+
return None
|
|
29
|
+
return tuple(values)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def _format_number_array(values: tuple[float, ...]) -> str:
|
|
33
|
+
return " ".join(f"{value:.12g}" for value in values)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _transform_point(
|
|
37
|
+
matrix: tuple[float, float, float, float, float, float],
|
|
38
|
+
point: tuple[float, float],
|
|
39
|
+
) -> tuple[float, float]:
|
|
40
|
+
a, b, c, d, e, f = matrix
|
|
41
|
+
x, y = point
|
|
42
|
+
return a * x + c * y + e, b * x + d * y + f
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _transform_bbox(
|
|
46
|
+
matrix: tuple[float, float, float, float, float, float],
|
|
47
|
+
bbox: tuple[float, float, float, float],
|
|
48
|
+
) -> tuple[float, float, float, float]:
|
|
49
|
+
x0, y0, x1, y1 = bbox
|
|
50
|
+
points = [
|
|
51
|
+
_transform_point(matrix, (x0, y0)),
|
|
52
|
+
_transform_point(matrix, (x0, y1)),
|
|
53
|
+
_transform_point(matrix, (x1, y0)),
|
|
54
|
+
_transform_point(matrix, (x1, y1)),
|
|
55
|
+
]
|
|
56
|
+
xs = [point[0] for point in points]
|
|
57
|
+
ys = [point[1] for point in points]
|
|
58
|
+
return min(xs), min(ys), max(xs), max(ys)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def build_type3_font_metrics(
|
|
62
|
+
font_matrix: tuple[float, ...],
|
|
63
|
+
font_bbox: tuple[float, ...],
|
|
64
|
+
) -> Type3FontMetrics | None:
|
|
65
|
+
if len(font_matrix) < 6 or len(font_bbox) < 4:
|
|
66
|
+
return None
|
|
67
|
+
matrix = tuple(font_matrix[:6])
|
|
68
|
+
bbox = tuple(font_bbox[:4])
|
|
69
|
+
if not all(math.isfinite(value) for value in (*matrix, *bbox)):
|
|
70
|
+
return None
|
|
71
|
+
_, y0, _, y1 = _transform_bbox(matrix, bbox)
|
|
72
|
+
em_height = y1 - y0
|
|
73
|
+
if not math.isfinite(em_height) or em_height <= 0:
|
|
74
|
+
return None
|
|
75
|
+
scale = 1000.0 / em_height
|
|
76
|
+
return Type3FontMetrics(
|
|
77
|
+
font_matrix=matrix,
|
|
78
|
+
font_bbox=bbox,
|
|
79
|
+
font_matrix_text=_format_number_array(matrix),
|
|
80
|
+
font_bbox_text=_format_number_array(bbox),
|
|
81
|
+
em_height=em_height,
|
|
82
|
+
ascent=y1 * scale,
|
|
83
|
+
descent=y0 * scale,
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def get_type3_font_metrics(doc, obj: int) -> Type3FontMetrics | None:
|
|
88
|
+
try:
|
|
89
|
+
font_matrix_text = doc.xref_get_key(obj, "FontMatrix")[1]
|
|
90
|
+
font_bbox_text = doc.xref_get_key(obj, "FontBBox")[1]
|
|
91
|
+
except Exception:
|
|
92
|
+
return None
|
|
93
|
+
font_matrix = _parse_number_array(font_matrix_text, expected_len=6)
|
|
94
|
+
font_bbox = _parse_number_array(font_bbox_text, expected_len=4)
|
|
95
|
+
if font_matrix is None or font_bbox is None:
|
|
96
|
+
return None
|
|
97
|
+
return build_type3_font_metrics(font_matrix, font_bbox)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def normalize_type3_bbox_to_1000_em(
|
|
101
|
+
bbox: tuple[float, float, float, float],
|
|
102
|
+
metrics: Type3FontMetrics,
|
|
103
|
+
) -> tuple[float, float, float, float]:
|
|
104
|
+
scale = 1000.0 / metrics.em_height
|
|
105
|
+
return tuple(value * scale for value in bbox)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def merge_bbox(bbox_list, factor=1):
|
|
109
|
+
if bbox_list:
|
|
110
|
+
base = bbox_list[0]
|
|
111
|
+
for bbox in bbox_list[1:]:
|
|
112
|
+
base.include_rect(bbox)
|
|
113
|
+
x0, y0, x1, y1 = [v / factor for v in tuple(base)]
|
|
114
|
+
return x0, -y1, x1, -y0
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def get_type3_bbox(
|
|
118
|
+
doc,
|
|
119
|
+
obj,
|
|
120
|
+
*,
|
|
121
|
+
normalize_to_1000_em: bool = False,
|
|
122
|
+
metrics: Type3FontMetrics | None = None,
|
|
123
|
+
):
|
|
124
|
+
bbox_list = [(0, 0, 0, 0)] * 256
|
|
125
|
+
first = int(doc.xref_get_key(obj, "FirstChar")[1])
|
|
126
|
+
last = int(doc.xref_get_key(obj, "LastChar")[1])
|
|
127
|
+
normalize_metrics = None
|
|
128
|
+
if normalize_to_1000_em:
|
|
129
|
+
metrics = metrics or get_type3_font_metrics(doc, obj)
|
|
130
|
+
normalize_metrics = metrics
|
|
131
|
+
factor = 1
|
|
132
|
+
else:
|
|
133
|
+
factor_text = doc.xref_get_key(obj, "FontMatrix")[1]
|
|
134
|
+
factor = 1
|
|
135
|
+
if factor_m := re.search(_PDF_NUMBER_RE, factor_text):
|
|
136
|
+
factor = float(factor_m.group(0))
|
|
137
|
+
page = doc.new_page(width=10, height=10)
|
|
138
|
+
doc.xref_set_key(page.xref, "Resources", "<<>>")
|
|
139
|
+
doc.xref_set_key(page.xref, "Resources/Font", f"<</T0 {obj} 0 R>>")
|
|
140
|
+
text = doc.get_new_xref()
|
|
141
|
+
doc.update_object(text, "<<>>")
|
|
142
|
+
for x in range(first, last + 1):
|
|
143
|
+
doc.update_stream(text, b"1 0 0 1 0 10 cm BT /T0 1 Tf <%02X> Tj ET" % x)
|
|
144
|
+
doc.xref_set_key(page.xref, "Contents", f"{text} 0 R")
|
|
145
|
+
char_data = page.get_svg_image(text_as_path=True)
|
|
146
|
+
char_doc = pymupdf.Document(stream=io.BytesIO(char_data.encode("U8")))
|
|
147
|
+
char_bbox = []
|
|
148
|
+
for element in char_doc:
|
|
149
|
+
for item in element.get_drawings():
|
|
150
|
+
char_bbox.append(item["rect"])
|
|
151
|
+
if char_bbox_merged := merge_bbox(char_bbox, factor):
|
|
152
|
+
if normalize_metrics is not None:
|
|
153
|
+
char_bbox_merged = normalize_type3_bbox_to_1000_em(
|
|
154
|
+
char_bbox_merged,
|
|
155
|
+
normalize_metrics,
|
|
156
|
+
)
|
|
157
|
+
bbox_list[x] = char_bbox_merged
|
|
158
|
+
doc.delete_page(-1)
|
|
159
|
+
return bbox_list
|
|
@@ -20,6 +20,9 @@ from babeldoc.format.pdf.document_il import PdfOriginalPath
|
|
|
20
20
|
from babeldoc.format.pdf.document_il import il_version_1
|
|
21
21
|
from babeldoc.format.pdf.document_il.utils.fontmap import FontMapper
|
|
22
22
|
from babeldoc.format.pdf.document_il.utils.matrix_helper import matrix_to_bytes
|
|
23
|
+
from babeldoc.format.pdf.document_il.utils.type3_font_metrics import (
|
|
24
|
+
inverse_type3_font_size_for_tf,
|
|
25
|
+
)
|
|
23
26
|
from babeldoc.format.pdf.document_il.utils.zstd_helper import zstd_decompress
|
|
24
27
|
from babeldoc.format.pdf.new_parser.pdf_token_serializer import serialize_pdf_token
|
|
25
28
|
from babeldoc.format.pdf.translation_config import TranslateResult
|
|
@@ -86,6 +89,7 @@ class CharacterRenderUnit(RenderUnit):
|
|
|
86
89
|
|
|
87
90
|
char_size = char.pdf_style.font_size
|
|
88
91
|
font_id = char.pdf_style.font_id
|
|
92
|
+
tf_font_size = self._font_size_for_pdf_tf(char_size, font_id, context)
|
|
89
93
|
|
|
90
94
|
# Get encoding length map based on xobj_id
|
|
91
95
|
if self.xobj_id in context.xobj_encoding_length_map:
|
|
@@ -106,11 +110,11 @@ class CharacterRenderUnit(RenderUnit):
|
|
|
106
110
|
|
|
107
111
|
if char.vertical:
|
|
108
112
|
draw_op.append(
|
|
109
|
-
f"BT /{font_id} {
|
|
113
|
+
f"BT /{font_id} {tf_font_size:f} Tf 0 1 -1 0 {char.box.x2:f} {char.box.y:f} Tm ".encode(),
|
|
110
114
|
)
|
|
111
115
|
else:
|
|
112
116
|
text_draw_op = (
|
|
113
|
-
f"BT /{font_id} {
|
|
117
|
+
f"BT /{font_id} {tf_font_size:f} Tf "
|
|
114
118
|
f"1 0 0 1 {char.box.x:f} {char.box.y:f} Tm "
|
|
115
119
|
)
|
|
116
120
|
draw_op.append(text_draw_op.encode())
|
|
@@ -130,6 +134,28 @@ class CharacterRenderUnit(RenderUnit):
|
|
|
130
134
|
)
|
|
131
135
|
draw_op.append(b" Tj ET Q \n")
|
|
132
136
|
|
|
137
|
+
def _font_size_for_pdf_tf(
|
|
138
|
+
self,
|
|
139
|
+
char_size: float,
|
|
140
|
+
font_id: str,
|
|
141
|
+
context: "RenderContext",
|
|
142
|
+
) -> float:
|
|
143
|
+
get_scoped_font = getattr(context, "get_scoped_font", None)
|
|
144
|
+
font = (
|
|
145
|
+
get_scoped_font(font_id, self.xobj_id)
|
|
146
|
+
if callable(get_scoped_font)
|
|
147
|
+
else None
|
|
148
|
+
)
|
|
149
|
+
if font is None:
|
|
150
|
+
xobj_font_map = getattr(context, "xobj_font_map", {})
|
|
151
|
+
if self.xobj_id in xobj_font_map:
|
|
152
|
+
font = xobj_font_map[self.xobj_id].get(font_id)
|
|
153
|
+
if font is None:
|
|
154
|
+
font = getattr(context, "page_font_map", {}).get(font_id)
|
|
155
|
+
if font is None:
|
|
156
|
+
return char_size
|
|
157
|
+
return inverse_type3_font_size_for_tf(font, char_size)
|
|
158
|
+
|
|
133
159
|
|
|
134
160
|
class FormRenderUnit(RenderUnit):
|
|
135
161
|
"""Render unit for PDF forms."""
|
|
@@ -358,6 +384,8 @@ class RenderContext:
|
|
|
358
384
|
all_encoding_length_map: dict[str, int],
|
|
359
385
|
xobj_available_fonts: dict[str, set[str]],
|
|
360
386
|
xobj_encoding_length_map: dict[str, dict[str, int]],
|
|
387
|
+
page_font_map: dict[str, il_version_1.PdfFont],
|
|
388
|
+
xobj_font_map: dict[str, dict[str, il_version_1.PdfFont]],
|
|
361
389
|
ctm_for_ops: bytes,
|
|
362
390
|
check_font_exists: bool = False,
|
|
363
391
|
):
|
|
@@ -368,9 +396,22 @@ class RenderContext:
|
|
|
368
396
|
self.all_encoding_length_map = all_encoding_length_map
|
|
369
397
|
self.xobj_available_fonts = xobj_available_fonts
|
|
370
398
|
self.xobj_encoding_length_map = xobj_encoding_length_map
|
|
399
|
+
self.page_font_map = page_font_map
|
|
400
|
+
self.xobj_font_map = xobj_font_map
|
|
371
401
|
self.ctm_for_ops = ctm_for_ops
|
|
372
402
|
self.check_font_exists = check_font_exists
|
|
373
403
|
|
|
404
|
+
def get_scoped_font(
|
|
405
|
+
self,
|
|
406
|
+
font_id: str,
|
|
407
|
+
xobj_id: str | None = None,
|
|
408
|
+
) -> il_version_1.PdfFont | None:
|
|
409
|
+
if xobj_id in self.xobj_font_map:
|
|
410
|
+
scoped_font = self.xobj_font_map[xobj_id].get(font_id)
|
|
411
|
+
if scoped_font is not None:
|
|
412
|
+
return scoped_font
|
|
413
|
+
return self.page_font_map.get(font_id)
|
|
414
|
+
|
|
374
415
|
|
|
375
416
|
def to_int(src):
|
|
376
417
|
return int(re.search(r"\d+", src).group(0))
|
|
@@ -622,7 +663,15 @@ class PDFCreater:
|
|
|
622
663
|
)
|
|
623
664
|
|
|
624
665
|
@staticmethod
|
|
666
|
+
def _parse_xref_ref(value: str) -> int | None:
|
|
667
|
+
match = re.match(r"^\s*(\d+)\s+0\s+R\s*$", value)
|
|
668
|
+
if match is None:
|
|
669
|
+
return None
|
|
670
|
+
return int(match.group(1))
|
|
671
|
+
|
|
672
|
+
@classmethod
|
|
625
673
|
def _find_resource_ref(
|
|
674
|
+
cls,
|
|
626
675
|
pdf: pymupdf.Document,
|
|
627
676
|
candidate_resource_xrefs: list[int],
|
|
628
677
|
resource_kind: str,
|
|
@@ -640,6 +689,46 @@ class PDFCreater:
|
|
|
640
689
|
return value
|
|
641
690
|
return None
|
|
642
691
|
|
|
692
|
+
@classmethod
|
|
693
|
+
def _set_resource_ref(
|
|
694
|
+
cls,
|
|
695
|
+
pdf: pymupdf.Document,
|
|
696
|
+
target_xref: int,
|
|
697
|
+
resource_kind: str,
|
|
698
|
+
name: str,
|
|
699
|
+
resource_ref: str,
|
|
700
|
+
) -> None:
|
|
701
|
+
resource_key = f"Resources/{resource_kind}/{name}"
|
|
702
|
+
try:
|
|
703
|
+
pdf.xref_set_key(target_xref, resource_key, resource_ref)
|
|
704
|
+
return
|
|
705
|
+
except Exception as exc:
|
|
706
|
+
if "has indirects" not in str(exc):
|
|
707
|
+
raise
|
|
708
|
+
direct_set_error = exc
|
|
709
|
+
|
|
710
|
+
resources_type, resources_value = pdf.xref_get_key(
|
|
711
|
+
target_xref,
|
|
712
|
+
"Resources",
|
|
713
|
+
)
|
|
714
|
+
resources_xref = (
|
|
715
|
+
cls._parse_xref_ref(resources_value) if resources_type == "xref" else None
|
|
716
|
+
)
|
|
717
|
+
if resources_xref is None:
|
|
718
|
+
raise direct_set_error
|
|
719
|
+
|
|
720
|
+
kind_type, kind_value = pdf.xref_get_key(resources_xref, resource_kind)
|
|
721
|
+
kind_xref = cls._parse_xref_ref(kind_value) if kind_type == "xref" else None
|
|
722
|
+
if kind_xref is not None:
|
|
723
|
+
pdf.xref_set_key(kind_xref, name, resource_ref)
|
|
724
|
+
return
|
|
725
|
+
|
|
726
|
+
pdf.xref_set_key(
|
|
727
|
+
resources_xref,
|
|
728
|
+
f"{resource_kind}/{name}",
|
|
729
|
+
resource_ref,
|
|
730
|
+
)
|
|
731
|
+
|
|
643
732
|
@classmethod
|
|
644
733
|
def _ensure_stream_named_resources(
|
|
645
734
|
cls,
|
|
@@ -676,9 +765,11 @@ class PDFCreater:
|
|
|
676
765
|
)
|
|
677
766
|
if resource_ref is None:
|
|
678
767
|
continue
|
|
679
|
-
|
|
768
|
+
cls._set_resource_ref(
|
|
769
|
+
pdf,
|
|
680
770
|
target_xref,
|
|
681
|
-
|
|
771
|
+
resource_kind,
|
|
772
|
+
name,
|
|
682
773
|
resource_ref,
|
|
683
774
|
)
|
|
684
775
|
|
|
@@ -1554,6 +1645,8 @@ class PDFCreater:
|
|
|
1554
1645
|
xobj_draw_ops = {}
|
|
1555
1646
|
xobj_encoding_length_map = {}
|
|
1556
1647
|
available_font_list = self.get_available_font_list(pdf, page)
|
|
1648
|
+
page_font_map = {f.font_id: f for f in page.pdf_font}
|
|
1649
|
+
xobj_font_map = {}
|
|
1557
1650
|
page_encoding_length_map: dict[str | None, int | None] = {
|
|
1558
1651
|
f.font_id: f.encoding_length for f in page.pdf_font
|
|
1559
1652
|
}
|
|
@@ -1566,6 +1659,8 @@ class PDFCreater:
|
|
|
1566
1659
|
)
|
|
1567
1660
|
except Exception:
|
|
1568
1661
|
pass
|
|
1662
|
+
xobj_font_map[xobj.xobj_id] = page_font_map.copy()
|
|
1663
|
+
xobj_font_map[xobj.xobj_id].update({f.font_id: f for f in xobj.pdf_font})
|
|
1569
1664
|
xobj_encoding_length_map[xobj.xobj_id] = {
|
|
1570
1665
|
f.font_id: f.encoding_length for f in xobj.pdf_font
|
|
1571
1666
|
}
|
|
@@ -1594,6 +1689,8 @@ class PDFCreater:
|
|
|
1594
1689
|
all_encoding_length_map=all_encoding_length_map,
|
|
1595
1690
|
xobj_available_fonts=xobj_available_fonts,
|
|
1596
1691
|
xobj_encoding_length_map=xobj_encoding_length_map,
|
|
1692
|
+
page_font_map=page_font_map,
|
|
1693
|
+
xobj_font_map=xobj_font_map,
|
|
1597
1694
|
ctm_for_ops=ctm_for_ops,
|
|
1598
1695
|
check_font_exists=check_font_exists,
|
|
1599
1696
|
)
|
|
@@ -1639,13 +1736,13 @@ class PDFCreater:
|
|
|
1639
1736
|
stream = draw_op.tobytes()
|
|
1640
1737
|
self._ensure_stream_extgstate_resources(
|
|
1641
1738
|
pdf,
|
|
1642
|
-
|
|
1739
|
+
pdf[page.page_number].xref,
|
|
1643
1740
|
stream,
|
|
1644
1741
|
candidate_resource_xrefs,
|
|
1645
1742
|
)
|
|
1646
1743
|
self._ensure_stream_shading_resources(
|
|
1647
1744
|
pdf,
|
|
1648
|
-
|
|
1745
|
+
pdf[page.page_number].xref,
|
|
1649
1746
|
stream,
|
|
1650
1747
|
candidate_resource_xrefs,
|
|
1651
1748
|
)
|