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.
Files changed (406) hide show
  1. babeldoc-0.6.3/.github/workflows/checks.yml +55 -0
  2. {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/workflows/labeler.yml +3 -3
  3. {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/workflows/lint.yml +1 -1
  4. {babeldoc-0.6.1 → babeldoc-0.6.3}/.gitignore +1 -0
  5. {babeldoc-0.6.1 → babeldoc-0.6.3}/PKG-INFO +6 -5
  6. babeldoc-0.6.3/babeldoc/__init__.py +1 -0
  7. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/const.py +1 -1
  8. babeldoc-0.6.3/babeldoc/format/pdf/babelpdf/type3.py +159 -0
  9. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/backend/pdf_creater.py +103 -6
  10. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/frontend/il_creater.py +122 -27
  11. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/frontend/il_creater_active.py +58 -8
  12. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/il_version_1.py +28 -0
  13. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/il_version_1.rnc +4 -0
  14. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/il_version_1.rng +20 -0
  15. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/il_version_1.xsd +4 -0
  16. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/extract_char.py +98 -53
  17. babeldoc-0.6.3/babeldoc/format/pdf/document_il/utils/type3_font_metrics.py +55 -0
  18. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/high_level.py +62 -3
  19. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/native_page_interpreter.py +2 -0
  20. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/prepared_resource_builder.py +5 -1
  21. babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/_cmap_manifest_data.py +603 -0
  22. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/cid_cmap_runtime.py +1 -1
  23. babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/cmap_secure_loader.py +61 -0
  24. babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/cmapdb_runtime.py +86 -0
  25. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/sinks/legacy_ir.py +6 -1
  26. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/text_positioning.py +4 -1
  27. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/tokenizer.py +9 -0
  28. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/parse_shared.py +4 -4
  29. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/main.py +1 -1
  30. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/cmapdb.py +12 -14
  31. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/image.py +8 -2
  32. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/server.py +22 -0
  33. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/generate_font_metadata.py +63 -33
  34. babeldoc-0.6.3/docs/release-notes/v0.6.2.md +16 -0
  35. babeldoc-0.6.3/docs/release-notes/v0.6.3.md +80 -0
  36. {babeldoc-0.6.1 → babeldoc-0.6.3}/pyproject.toml +7 -6
  37. babeldoc-0.6.1/.github/workflows/test.yml +0 -59
  38. babeldoc-0.6.1/babeldoc/__init__.py +0 -1
  39. babeldoc-0.6.1/babeldoc/format/pdf/babelpdf/type3.py +0 -41
  40. {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  41. {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  42. {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/PULL_REQUEST_TEMPLATE/pr_form.yml +0 -0
  43. {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  44. {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/dependabot.yml +0 -0
  45. {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/labels.yml +0 -0
  46. {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/release-drafter.yml +0 -0
  47. {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/workflows/codeql.yml +0 -0
  48. {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/workflows/docs.yml +0 -0
  49. {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/workflows/pr-lint.yml +0 -0
  50. {babeldoc-0.6.1 → babeldoc-0.6.3}/.github/workflows/publish-to-pypi.yml +0 -0
  51. {babeldoc-0.6.1 → babeldoc-0.6.3}/.pre-commit-config.yaml +0 -0
  52. {babeldoc-0.6.1 → babeldoc-0.6.3}/LICENSE +0 -0
  53. {babeldoc-0.6.1 → babeldoc-0.6.3}/README.md +0 -0
  54. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/assets/assets.py +0 -0
  55. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/assets/embedding_assets_metadata.py +0 -0
  56. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/asynchronize/__init__.py +0 -0
  57. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/babeldoc_exception/BabelDOCException.py +0 -0
  58. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/babeldoc_exception/__init__.py +0 -0
  59. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/README.md +0 -0
  60. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/__init__.py +0 -0
  61. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/base_doclayout.py +0 -0
  62. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/doclayout.py +0 -0
  63. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/rpc_doclayout.py +0 -0
  64. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/rpc_doclayout2.py +0 -0
  65. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/rpc_doclayout3.py +0 -0
  66. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/rpc_doclayout4.py +0 -0
  67. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/rpc_doclayout5.py +0 -0
  68. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/rpc_doclayout6.py +0 -0
  69. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/rpc_doclayout7.py +0 -0
  70. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/rpc_doclayout8.py +0 -0
  71. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
  72. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/__init__.py +0 -0
  73. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/__init__.py +0 -0
  74. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/awlt_char.py +0 -0
  75. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/babelpdf/base14.py +0 -0
  76. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/babelpdf/cidfont.py +0 -0
  77. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/babelpdf/cmap.py +0 -0
  78. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/babelpdf/encoding.py +0 -0
  79. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/babelpdf/utils.py +0 -0
  80. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/babelpdf/win_core.py +0 -0
  81. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/converter.py +0 -0
  82. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/__init__.py +0 -0
  83. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/backend/__init__.py +0 -0
  84. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/frontend/__init__.py +0 -0
  85. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/frontend/il_creater_active_support.py +0 -0
  86. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/frontend/inline_image_params.py +0 -0
  87. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/__init__.py +0 -0
  88. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/add_debug_information.py +0 -0
  89. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/automatic_term_extractor.py +0 -0
  90. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/detect_scanned_file.py +0 -0
  91. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/il_translator.py +0 -0
  92. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/il_translator_llm_only.py +0 -0
  93. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/layout_parser.py +0 -0
  94. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/paragraph_finder.py +0 -0
  95. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/remove_descent.py +0 -0
  96. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/styles_and_formulas.py +0 -0
  97. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/table_parser.py +0 -0
  98. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/midend/typesetting.py +0 -0
  99. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/__init__.py +0 -0
  100. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/fontmap.py +0 -0
  101. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/formular_helper.py +0 -0
  102. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/layout_helper.py +0 -0
  103. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/matrix_helper.py +0 -0
  104. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/mupdf_helper.py +0 -0
  105. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/paragraph_helper.py +0 -0
  106. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/spatial_analyzer.py +0 -0
  107. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/style_helper.py +0 -0
  108. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/utils/zstd_helper.py +0 -0
  109. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/document_il/xml_converter.py +0 -0
  110. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/legacy_parse.py +0 -0
  111. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/__init__.py +0 -0
  112. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/active_direct_font_backend.py +0 -0
  113. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/active_font_backend.py +0 -0
  114. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/active_font_resource_runtime.py +0 -0
  115. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/active_font_runtime.py +0 -0
  116. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/active_object_backend.py +0 -0
  117. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/active_object_projection.py +0 -0
  118. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/active_parse_runtime.py +0 -0
  119. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/active_value_access.py +0 -0
  120. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/base_operations.py +0 -0
  121. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/bridge_types.py +0 -0
  122. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/compat/__init__.py +0 -0
  123. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/font_spec_primitives.py +0 -0
  124. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/font_types.py +0 -0
  125. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/glyphs.py +0 -0
  126. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/interpreter.py +0 -0
  127. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/native_page_execution_session.py +0 -0
  128. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/native_parse.py +0 -0
  129. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/object_model.py +0 -0
  130. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/object_parser.py +0 -0
  131. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/page_api.py +0 -0
  132. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/page_content_access.py +0 -0
  133. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/page_content_execution.py +0 -0
  134. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/page_execution_session.py +0 -0
  135. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/page_interpreter.py +0 -0
  136. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/pdf_token_serializer.py +0 -0
  137. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/prepared_page.py +0 -0
  138. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/prepared_page_access.py +0 -0
  139. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/prepared_page_debug_access.py +0 -0
  140. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/prepared_page_execution.py +0 -0
  141. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/pymupdf_candidate_parse.py +0 -0
  142. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/pymupdf_object_access.py +0 -0
  143. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/pymupdf_page_execution_session.py +0 -0
  144. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/pymupdf_page_view_access.py +0 -0
  145. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/pymupdf_prepared_page_access.py +0 -0
  146. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/raw_page_view.py +0 -0
  147. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/resolved_object_access.py +0 -0
  148. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/resource_runtime_types.py +0 -0
  149. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/resources.py +0 -0
  150. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/__init__.py +0 -0
  151. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/cmap_types_runtime.py +0 -0
  152. {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
  153. {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
  154. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/78-H.pickle.gz +0 -0
  155. {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
  156. {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
  157. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/78-V.pickle.gz +0 -0
  158. {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
  159. {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
  160. {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
  161. {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
  162. {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
  163. {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
  164. {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
  165. {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
  166. {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
  167. {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
  168. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Add-H.pickle.gz +0 -0
  169. {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
  170. {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
  171. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Add-V.pickle.gz +0 -0
  172. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/B5-H.pickle.gz +0 -0
  173. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/B5-V.pickle.gz +0 -0
  174. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/B5pc-H.pickle.gz +0 -0
  175. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/B5pc-V.pickle.gz +0 -0
  176. {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
  177. {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
  178. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/CNS1-H.pickle.gz +0 -0
  179. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/CNS1-V.pickle.gz +0 -0
  180. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/CNS2-H.pickle.gz +0 -0
  181. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/CNS2-V.pickle.gz +0 -0
  182. {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
  183. {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
  184. {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
  185. {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
  186. {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
  187. {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
  188. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/EUC-H.pickle.gz +0 -0
  189. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/EUC-V.pickle.gz +0 -0
  190. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Ext-H.pickle.gz +0 -0
  191. {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
  192. {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
  193. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Ext-V.pickle.gz +0 -0
  194. {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
  195. {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
  196. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GB-H.pickle.gz +0 -0
  197. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GB-V.pickle.gz +0 -0
  198. {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
  199. {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
  200. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBK2K-H.pickle.gz +0 -0
  201. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBK2K-V.pickle.gz +0 -0
  202. {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
  203. {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
  204. {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
  205. {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
  206. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBT-H.pickle.gz +0 -0
  207. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/GBT-V.pickle.gz +0 -0
  208. {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
  209. {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
  210. {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
  211. {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
  212. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/H.pickle.gz +0 -0
  213. {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
  214. {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
  215. {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
  216. {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
  217. {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
  218. {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
  219. {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
  220. {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
  221. {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
  222. {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
  223. {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
  224. {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
  225. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Hankaku-H.pickle.gz +0 -0
  226. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Hankaku-V.pickle.gz +0 -0
  227. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Hiragana-H.pickle.gz +0 -0
  228. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Hiragana-V.pickle.gz +0 -0
  229. {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
  230. {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
  231. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/KSC-H.pickle.gz +0 -0
  232. {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
  233. {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
  234. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/KSC-V.pickle.gz +0 -0
  235. {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
  236. {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
  237. {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
  238. {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
  239. {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
  240. {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
  241. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Katakana-H.pickle.gz +0 -0
  242. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Katakana-V.pickle.gz +0 -0
  243. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/NWP-H.pickle.gz +0 -0
  244. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/NWP-V.pickle.gz +0 -0
  245. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/README.txt +0 -0
  246. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/RKSJ-H.pickle.gz +0 -0
  247. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/RKSJ-V.pickle.gz +0 -0
  248. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Roman-H.pickle.gz +0 -0
  249. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/Roman-V.pickle.gz +0 -0
  250. {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
  251. {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
  252. {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
  253. {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
  254. {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
  255. {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
  256. {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
  257. {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
  258. {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
  259. {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
  260. {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
  261. {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
  262. {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
  263. {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
  264. {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
  265. {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
  266. {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
  267. {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
  268. {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
  269. {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
  270. {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
  271. {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
  272. {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
  273. {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
  274. {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
  275. {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
  276. {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
  277. {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
  278. {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
  279. {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
  280. {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
  281. {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
  282. {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
  283. {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
  284. {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
  285. {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
  286. {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
  287. {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
  288. {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
  289. {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
  290. {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
  291. {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
  292. {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
  293. {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
  294. {babeldoc-0.6.1/babeldoc/pdfminer → babeldoc-0.6.3/babeldoc/format/pdf/new_parser/runtime/data}/cmap/V.pickle.gz +0 -0
  295. {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
  296. {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
  297. {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
  298. {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
  299. {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
  300. {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
  301. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/data/fontmetrics.py +0 -0
  302. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/data/glyphlist.py +0 -0
  303. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/data/latin_enc.py +0 -0
  304. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/exceptions_runtime.py +0 -0
  305. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/font_data_runtime.py +0 -0
  306. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/font_encoding_runtime.py +0 -0
  307. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/font_unicode_maps.py +0 -0
  308. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/font_widths.py +0 -0
  309. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/object_primitives_runtime.py +0 -0
  310. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/object_stream_runtime.py +0 -0
  311. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/ps_primitives_runtime.py +0 -0
  312. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/runtime_settings.py +0 -0
  313. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/runtime/to_unicode_parser_runtime.py +0 -0
  314. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/sinks/native_text.py +0 -0
  315. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/state.py +0 -0
  316. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/new_parser/xobject_content_execution.py +0 -0
  317. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/parse_only.py +0 -0
  318. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/pdfinterp.py +0 -0
  319. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/result_merger.py +0 -0
  320. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/split_manager.py +0 -0
  321. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/format/pdf/translation_config.py +0 -0
  322. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/glossary.py +0 -0
  323. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/LICENSE +0 -0
  324. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/__init__.py +0 -0
  325. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/_saslprep.py +0 -0
  326. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/arcfour.py +0 -0
  327. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/ascii85.py +0 -0
  328. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/casting.py +0 -0
  329. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/ccitt.py +0 -0
  330. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/converter.py +0 -0
  331. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/data_structures.py +0 -0
  332. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/encodingdb.py +0 -0
  333. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/fontmetrics.py +0 -0
  334. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/glyphlist.py +0 -0
  335. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/high_level.py +0 -0
  336. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/jbig2.py +0 -0
  337. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/latin_enc.py +0 -0
  338. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/layout.py +0 -0
  339. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/lzw.py +0 -0
  340. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdfcolor.py +0 -0
  341. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdfdevice.py +0 -0
  342. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdfdocument.py +0 -0
  343. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdfexceptions.py +0 -0
  344. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdffont.py +0 -0
  345. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdfinterp.py +0 -0
  346. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdfpage.py +0 -0
  347. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdfparser.py +0 -0
  348. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/pdftypes.py +0 -0
  349. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/psexceptions.py +0 -0
  350. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/psparser.py +0 -0
  351. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/py.typed +0 -0
  352. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/runlength.py +0 -0
  353. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/settings.py +0 -0
  354. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/pdfminer/utils.py +0 -0
  355. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/progress_monitor.py +0 -0
  356. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/__init__.py +0 -0
  357. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/__main__.py +0 -0
  358. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/babeldoc_adapter.py +0 -0
  359. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/protocol.py +0 -0
  360. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/runner.py +0 -0
  361. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/state.py +0 -0
  362. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/translator.py +0 -0
  363. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/watermark_transform.py +0 -0
  364. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/executor/workroot.py +0 -0
  365. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/generate_cmap_metadata.py +0 -0
  366. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/italic_assistance.py +0 -0
  367. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/tools/italic_recognize_tool.py +0 -0
  368. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/translator/__init__.py +0 -0
  369. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/translator/cache.py +0 -0
  370. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/translator/translator.py +0 -0
  371. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/utils/__init__.py +0 -0
  372. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/utils/atomic_integer.py +0 -0
  373. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/utils/memory.py +0 -0
  374. {babeldoc-0.6.1 → babeldoc-0.6.3}/babeldoc/utils/priority_thread_pool_executor.py +0 -0
  375. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/CODE_OF_CONDUCT.md +0 -0
  376. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/CONTRIBUTING.md +0 -0
  377. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/CONTRIBUTOR_REWARD.md +0 -0
  378. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
  379. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
  380. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
  381. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
  382. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
  383. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/ImplementationDetails/README.md +0 -0
  384. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
  385. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
  386. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/README.md +0 -0
  387. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/deploy.sh +0 -0
  388. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/example/demo_glossary.csv +0 -0
  389. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-banner.png +0 -0
  390. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
  391. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
  392. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
  393. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
  394. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-big-logo.png +0 -0
  395. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-contributor_reward_example.png +0 -0
  396. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-preview.gif +0 -0
  397. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
  398. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
  399. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/images/babeldoc-small-logo.png +0 -0
  400. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/index.md +0 -0
  401. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/intro-to-pdf-object.md +0 -0
  402. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/release-notes/v0.6.0.md +0 -0
  403. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/release-notes/v0.6.1.md +0 -0
  404. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/requirements.txt +0 -0
  405. {babeldoc-0.6.1 → babeldoc-0.6.3}/docs/supported_languages.md +0 -0
  406. {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/labels.yml'
9
+ - '.github/workflows/labeler.yml'
10
10
  pull_request:
11
11
  paths:
12
12
  - '.github/labels.yml'
13
- - '.github/workflows/labels.yml'
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
@@ -14,4 +14,4 @@ jobs:
14
14
  - name: Ruff
15
15
  uses: astral-sh/ruff-action@v3
16
16
  - name: AutoCorrect
17
- uses: huacnlee/autocorrect-action@main
17
+ uses: huacnlee/autocorrect-action@bf91ab3904c2908dd8e71312a8a83ed1eb632997 # v2.13.3
@@ -48,4 +48,5 @@ babeldoc/format/playground
48
48
  temp.jpg
49
49
  .serena
50
50
  .codex
51
+ .repomap.tags.cache.v1/
51
52
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: BabelDOC
3
- Version: 0.6.1
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>=36.0.0
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.18.0
28
- Requires-Dist: onnxruntime>=1.16.1
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.25.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"
@@ -6,7 +6,7 @@ import subprocess
6
6
  import threading
7
7
  from pathlib import Path
8
8
 
9
- __version__ = "0.6.1"
9
+ __version__ = "0.6.3"
10
10
 
11
11
  CACHE_FOLDER = Path.home() / ".cache" / "babeldoc"
12
12
 
@@ -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} {char_size:f} Tf 0 1 -1 0 {char.box.x2:f} {char.box.y:f} Tm ".encode(),
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} {char_size:f} Tf "
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
- pdf.xref_set_key(
768
+ cls._set_resource_ref(
769
+ pdf,
680
770
  target_xref,
681
- f"Resources/{resource_kind}/{name}",
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
- op_container,
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
- op_container,
1745
+ pdf[page.page_number].xref,
1649
1746
  stream,
1650
1747
  candidate_resource_xrefs,
1651
1748
  )