docvortex 0.4.0__tar.gz → 0.4.1__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 (597) hide show
  1. {docvortex-0.4.0/src/docvortex.egg-info → docvortex-0.4.1}/PKG-INFO +6 -2
  2. {docvortex-0.4.0 → docvortex-0.4.1}/README.md +5 -1
  3. docvortex-0.4.1/src/docvortex/render/_internal/pdf/pagination.py +193 -0
  4. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/pdf/renderer.py +46 -6
  5. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/pdf/styles.py +6 -2
  6. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/pdf/table.py +20 -1
  7. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/version.py +1 -1
  8. {docvortex-0.4.0 → docvortex-0.4.1/src/docvortex.egg-info}/PKG-INFO +6 -2
  9. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex.egg-info/SOURCES.txt +2 -0
  10. docvortex-0.4.1/tests/unittest/test_pdf_pagination.py +251 -0
  11. {docvortex-0.4.0 → docvortex-0.4.1}/LICENSE.md +0 -0
  12. {docvortex-0.4.0 → docvortex-0.4.1}/MANIFEST.in +0 -0
  13. {docvortex-0.4.0 → docvortex-0.4.1}/demo/README.md +0 -0
  14. {docvortex-0.4.0 → docvortex-0.4.1}/demo/demo.py +0 -0
  15. {docvortex-0.4.0 → docvortex-0.4.1}/demo/office_docs/README.md +0 -0
  16. {docvortex-0.4.0 → docvortex-0.4.1}/demo/office_docs/docx_01.doc +0 -0
  17. {docvortex-0.4.0 → docvortex-0.4.1}/demo/office_docs/docx_01.docx +0 -0
  18. {docvortex-0.4.0 → docvortex-0.4.1}/demo/office_docs/pptx_01.ppt +0 -0
  19. {docvortex-0.4.0 → docvortex-0.4.1}/demo/office_docs/pptx_01.pptx +0 -0
  20. {docvortex-0.4.0 → docvortex-0.4.1}/demo/office_docs/rtf_01.rtf +0 -0
  21. {docvortex-0.4.0 → docvortex-0.4.1}/demo/office_docs/xlsx_01.xls +0 -0
  22. {docvortex-0.4.0 → docvortex-0.4.1}/demo/office_docs/xlsx_01.xlsx +0 -0
  23. {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/2407.00079v4_origi-10.pdf +0 -0
  24. {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/IEBM_A_2667169_O-5.pdf +0 -0
  25. {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/caibao1.pdf +0 -0
  26. {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/demo1.pdf +0 -0
  27. {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/demo2.pdf +0 -0
  28. {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/demo3.pdf +0 -0
  29. {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/demo4.pdf +0 -0
  30. {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/demo6.pdf +0 -0
  31. {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/mixed_elements_pages_03_06.pdf +0 -0
  32. {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/mixed_elements_pages_07_10.pdf +0 -0
  33. {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/mixed_elements_pages_11_15.pdf +0 -0
  34. {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/mixed_elements_pages_39_40.pdf +0 -0
  35. {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/small_ocr.pdf +0 -0
  36. {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/207.pdf" +0 -0
  37. {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2072.pdf" +0 -0
  38. {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2073.pdf" +0 -0
  39. {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs//344/270/255/346/226/207/350/256/272/346/226/2074.pdf" +0 -0
  40. {docvortex-0.4.0 → docvortex-0.4.1}/docs/HTML_PROTOCOL.md +0 -0
  41. {docvortex-0.4.0 → docvortex-0.4.1}/docs/JSON_PROTOCOL.md +0 -0
  42. {docvortex-0.4.0 → docvortex-0.4.1}/docs/METADATA.md +0 -0
  43. {docvortex-0.4.0 → docvortex-0.4.1}/docs/PDF_FONTS.md +0 -0
  44. {docvortex-0.4.0 → docvortex-0.4.1}/docs/RENDER_OWNERSHIP.md +0 -0
  45. {docvortex-0.4.0 → docvortex-0.4.1}/docs/sdk-0.4.md +0 -0
  46. {docvortex-0.4.0 → docvortex-0.4.1}/pyproject.toml +0 -0
  47. {docvortex-0.4.0 → docvortex-0.4.1}/schemas/middle-2.0.json +0 -0
  48. {docvortex-0.4.0 → docvortex-0.4.1}/schemas/model-2.0.json +0 -0
  49. {docvortex-0.4.0 → docvortex-0.4.1}/setup.cfg +0 -0
  50. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/__init__.py +0 -0
  51. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/__init__.py +0 -0
  52. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/__init__.py +0 -0
  53. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/__init__.py +0 -0
  54. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/hyperlink.py +0 -0
  55. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/image.py +0 -0
  56. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/markup/__init__.py +0 -0
  57. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/markup/anchors.py +0 -0
  58. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/markup/formula.py +0 -0
  59. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/markup/projector.py +0 -0
  60. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/markup/styles.py +0 -0
  61. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/mathml.py +0 -0
  62. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/names.py +0 -0
  63. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/xycut.py +0 -0
  64. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/contracts.py +0 -0
  65. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/csv.py +0 -0
  66. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/epub/__init__.py +0 -0
  67. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/epub/constants.py +0 -0
  68. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/epub/converter.py +0 -0
  69. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/epub/errors.py +0 -0
  70. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/epub/metadata.py +0 -0
  71. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/epub/package.py +0 -0
  72. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/epub/properties.py +0 -0
  73. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/epub/xhtml.py +0 -0
  74. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/__init__.py +0 -0
  75. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/anchors.py +0 -0
  76. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/constants.py +0 -0
  77. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/converter.py +0 -0
  78. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/document.py +0 -0
  79. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/errors.py +0 -0
  80. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/metadata.py +0 -0
  81. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/resources.py +0 -0
  82. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/selector.py +0 -0
  83. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/models.py +0 -0
  84. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/__init__.py +0 -0
  85. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/assembly.py +0 -0
  86. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/constants.py +0 -0
  87. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/converter.py +0 -0
  88. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/errors.py +0 -0
  89. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/geometry.py +0 -0
  90. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/images.py +0 -0
  91. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/metadata.py +0 -0
  92. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/models.py +0 -0
  93. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/package.py +0 -0
  94. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/path.py +0 -0
  95. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/reading_order.py +0 -0
  96. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/resources.py +0 -0
  97. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/scene.py +0 -0
  98. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/table.py +0 -0
  99. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/text.py +0 -0
  100. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/vector.py +0 -0
  101. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/__init__.py +0 -0
  102. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/__init__.py +0 -0
  103. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/bookmarks.py +0 -0
  104. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/doc_converter.py +0 -0
  105. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/fib.py +0 -0
  106. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/fields.py +0 -0
  107. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/formatting.py +0 -0
  108. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/images.py +0 -0
  109. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/lists.py +0 -0
  110. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/models.py +0 -0
  111. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/parser.py +0 -0
  112. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/pieces.py +0 -0
  113. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/records.py +0 -0
  114. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/sprm.py +0 -0
  115. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/styles.py +0 -0
  116. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/__init__.py +0 -0
  117. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/context.py +0 -0
  118. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/docx_converter.py +0 -0
  119. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/equationxml.py +0 -0
  120. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/fields.py +0 -0
  121. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/formatting_types.py +0 -0
  122. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/main.py +0 -0
  123. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/numbering.py +0 -0
  124. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/office_xml.py +0 -0
  125. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/package_normalizer.py +0 -0
  126. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/resources.py +0 -0
  127. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/styles.py +0 -0
  128. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/tables.py +0 -0
  129. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/equation/__init__.py +0 -0
  130. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/equation/image.py +0 -0
  131. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/equation/latex_dict.py +0 -0
  132. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/equation/mtef.py +0 -0
  133. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/equation/mtef_v5.py +0 -0
  134. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/equation/omml.py +0 -0
  135. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/equation/ooxml.py +0 -0
  136. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/errors.py +0 -0
  137. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/image.py +0 -0
  138. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/legacy/__init__.py +0 -0
  139. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/legacy/binary.py +0 -0
  140. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/legacy/officeart.py +0 -0
  141. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/legacy/ole.py +0 -0
  142. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/limits.py +0 -0
  143. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/metadata.py +0 -0
  144. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/__init__.py +0 -0
  145. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/chart.py +0 -0
  146. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/constants.py +0 -0
  147. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/converters.py +0 -0
  148. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/errors.py +0 -0
  149. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/metadata.py +0 -0
  150. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/models.py +0 -0
  151. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/package.py +0 -0
  152. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/styles.py +0 -0
  153. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/table.py +0 -0
  154. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/text.py +0 -0
  155. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/ooxml_chart.py +0 -0
  156. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/opc.py +0 -0
  157. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/ppt/__init__.py +0 -0
  158. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/ppt/models.py +0 -0
  159. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/ppt/parser.py +0 -0
  160. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/ppt/ppt_converter.py +0 -0
  161. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/ppt/records.py +0 -0
  162. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/ppt/style_text.py +0 -0
  163. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/__init__.py +0 -0
  164. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/context.py +0 -0
  165. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/lists.py +0 -0
  166. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/main.py +0 -0
  167. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/package_normalizer.py +0 -0
  168. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/pptx_converter.py +0 -0
  169. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/resources.py +0 -0
  170. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/shapes.py +0 -0
  171. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/text_styles.py +0 -0
  172. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/titles.py +0 -0
  173. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/rich_text.py +0 -0
  174. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/rtf/__init__.py +0 -0
  175. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/rtf/converter.py +0 -0
  176. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/rtf/lexer.py +0 -0
  177. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/rtf/math.py +0 -0
  178. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/rtf/metadata.py +0 -0
  179. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/rtf/models.py +0 -0
  180. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/rtf/parser.py +0 -0
  181. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/spreadsheet/__init__.py +0 -0
  182. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/spreadsheet/html.py +0 -0
  183. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/spreadsheet/models.py +0 -0
  184. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/spreadsheet/projector.py +0 -0
  185. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/streams.py +0 -0
  186. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/__init__.py +0 -0
  187. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/chart.py +0 -0
  188. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/embedded_chart.py +0 -0
  189. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/models.py +0 -0
  190. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/number_format.py +0 -0
  191. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/parser.py +0 -0
  192. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/records.py +0 -0
  193. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/strings.py +0 -0
  194. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/xls_converter.py +0 -0
  195. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xlsx/__init__.py +0 -0
  196. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xlsx/main.py +0 -0
  197. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xlsx/ooxml_ole.py +0 -0
  198. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xlsx/package_normalizer.py +0 -0
  199. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xlsx/xlsx_converter.py +0 -0
  200. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/__init__.py +0 -0
  201. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_script_geometry.py +0 -0
  202. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/__init__.py +0 -0
  203. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/candidate.py +0 -0
  204. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/contracts.py +0 -0
  205. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/engine.py +0 -0
  206. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/geometry.py +0 -0
  207. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_common.py +0 -0
  208. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_hybrid.py +0 -0
  209. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_multiline.py +0 -0
  210. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/text.py +0 -0
  211. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/text_grid.py +0 -0
  212. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/vector.py +0 -0
  213. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/auxiliary_text.py +0 -0
  214. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/char_geometry.py +0 -0
  215. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/code_blocks.py +0 -0
  216. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/formulas.py +0 -0
  217. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/geometry.py +0 -0
  218. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/graphics.py +0 -0
  219. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/index_blocks.py +0 -0
  220. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/inline/__init__.py +0 -0
  221. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/inline/common.py +0 -0
  222. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/inline/detection.py +0 -0
  223. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/inline/matching.py +0 -0
  224. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/inline/materialize.py +0 -0
  225. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/inline/scripts.py +0 -0
  226. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/inline/types.py +0 -0
  227. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/line_layout.py +0 -0
  228. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/line_merging.py +0 -0
  229. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/models.py +0 -0
  230. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/native_text.py +0 -0
  231. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/pipeline.py +0 -0
  232. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/spatial_text.py +0 -0
  233. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_annotations.py +0 -0
  234. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_constants.py +0 -0
  235. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_detection.py +0 -0
  236. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_filled_grid.py +0 -0
  237. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_geometry.py +0 -0
  238. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_materialization.py +0 -0
  239. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_rows.py +0 -0
  240. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_rules.py +0 -0
  241. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_text_styles.py +0 -0
  242. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/tables.py +0 -0
  243. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/text_assembly/__init__.py +0 -0
  244. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/text_assembly/annotations.py +0 -0
  245. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/text_assembly/assembly.py +0 -0
  246. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/text_assembly/common.py +0 -0
  247. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/text_assembly/footnotes.py +0 -0
  248. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/text_assembly/merging.py +0 -0
  249. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/text_assembly/rows.py +0 -0
  250. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/text_blocks.py +0 -0
  251. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/title_analysis/__init__.py +0 -0
  252. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/title_analysis/body_profile.py +0 -0
  253. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/title_analysis/common.py +0 -0
  254. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/title_analysis/document_profile.py +0 -0
  255. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/title_analysis/lane_titles.py +0 -0
  256. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/title_analysis/page_titles.py +0 -0
  257. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/title_analysis/prototype.py +0 -0
  258. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/title_analysis/structural.py +0 -0
  259. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/titles.py +0 -0
  260. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/typography.py +0 -0
  261. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/visual_annotations.py +0 -0
  262. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/pdf.py +0 -0
  263. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/api.py +0 -0
  264. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/assets/__init__.py +0 -0
  265. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/assets/images.py +0 -0
  266. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/assets/store.py +0 -0
  267. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/cli.py +0 -0
  268. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/codecs/__init__.py +0 -0
  269. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/codecs/html/__init__.py +0 -0
  270. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/codecs/html/contracts.py +0 -0
  271. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/codecs/html/materializer.py +0 -0
  272. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/codecs/html/parser.py +0 -0
  273. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/codecs/html/resources.py +0 -0
  274. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/codecs/json.py +0 -0
  275. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/__init__.py +0 -0
  276. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/inline.py +0 -0
  277. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/links.py +0 -0
  278. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/markup/__init__.py +0 -0
  279. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/markup/anchors.py +0 -0
  280. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/markup/formula.py +0 -0
  281. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/markup/projector.py +0 -0
  282. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/markup/styles.py +0 -0
  283. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/mathml.py +0 -0
  284. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/normalization.py +0 -0
  285. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/spans.py +0 -0
  286. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/table/__init__.py +0 -0
  287. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/table/blocks.py +0 -0
  288. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/table/content.py +0 -0
  289. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/table/document.py +0 -0
  290. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/table/html.py +0 -0
  291. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/table/models.py +0 -0
  292. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/table/rules.py +0 -0
  293. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/table/structure.py +0 -0
  294. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/text.py +0 -0
  295. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/tree.py +0 -0
  296. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/__init__.py +0 -0
  297. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/contracts.py +0 -0
  298. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/detection.py +0 -0
  299. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/filetypes.py +0 -0
  300. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/page_range.py +0 -0
  301. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/__init__.py +0 -0
  302. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/_document.py +0 -0
  303. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/classify.py +0 -0
  304. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/constants.py +0 -0
  305. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/font_runtime.py +0 -0
  306. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/images.py +0 -0
  307. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/metadata.py +0 -0
  308. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/native_annotations.py +0 -0
  309. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/native_contracts.py +0 -0
  310. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/native_coordinates.py +0 -0
  311. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/native_lifecycle.py +0 -0
  312. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/native_objects.py +0 -0
  313. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/native_text_geometry.py +0 -0
  314. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/pdfium.py +0 -0
  315. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/raster.py +0 -0
  316. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/text/__init__.py +0 -0
  317. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/text/_contracts.py +0 -0
  318. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/text/extract.py +0 -0
  319. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/text/geometry.py +0 -0
  320. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/text/groups.py +0 -0
  321. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/visuals.py +0 -0
  322. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/properties.py +0 -0
  323. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/source.py +0 -0
  324. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/errors.py +0 -0
  325. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/export/__init__.py +0 -0
  326. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/export/bundle.py +0 -0
  327. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/export/files.py +0 -0
  328. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/export/middle.py +0 -0
  329. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/__init__.py +0 -0
  330. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/_coordinates.py +0 -0
  331. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/_geometry.py +0 -0
  332. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/_hyperlink.py +0 -0
  333. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/_image.py +0 -0
  334. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/_image_operations.py +0 -0
  335. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/_image_payload.py +0 -0
  336. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/_text.py +0 -0
  337. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/image_encoding.py +0 -0
  338. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/language.py +0 -0
  339. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/type_identity.py +0 -0
  340. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/xml_names.py +0 -0
  341. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/geometry.py +0 -0
  342. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/metadata.py +0 -0
  343. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/options.py +0 -0
  344. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/postprocess/__init__.py +0 -0
  345. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/postprocess/content.py +0 -0
  346. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/postprocess/document.py +0 -0
  347. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/postprocess/lists.py +0 -0
  348. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/postprocess/page_blocks.py +0 -0
  349. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/postprocess/pages.py +0 -0
  350. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/postprocess/paragraphs.py +0 -0
  351. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/postprocess/visual.py +0 -0
  352. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/public_api.py +0 -0
  353. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/__init__.py +0 -0
  354. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/__init__.py +0 -0
  355. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/common/__init__.py +0 -0
  356. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/common/context.py +0 -0
  357. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/common/html_table.py +0 -0
  358. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/common/index.py +0 -0
  359. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/common/list_items.py +0 -0
  360. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/common/planner.py +0 -0
  361. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/docx/__init__.py +0 -0
  362. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/docx/assets.py +0 -0
  363. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/docx/inline.py +0 -0
  364. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/docx/math.py +0 -0
  365. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/docx/renderer.py +0 -0
  366. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/docx/styles.py +0 -0
  367. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/docx/table.py +0 -0
  368. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/epub/__init__.py +0 -0
  369. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/epub/assets.py +0 -0
  370. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/epub/package.py +0 -0
  371. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/epub/renderer.py +0 -0
  372. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/html/__init__.py +0 -0
  373. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/html/inline.py +0 -0
  374. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/html/renderer.py +0 -0
  375. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/html/sanitizer.py +0 -0
  376. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/html/table.py +0 -0
  377. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/latex/__init__.py +0 -0
  378. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/latex/assets.py +0 -0
  379. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/latex/inline.py +0 -0
  380. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/latex/renderer.py +0 -0
  381. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/latex/table.py +0 -0
  382. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/markdown/__init__.py +0 -0
  383. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/markdown/assets.py +0 -0
  384. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/markdown/blocks.py +0 -0
  385. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/markdown/escaping.py +0 -0
  386. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/markdown/inline.py +0 -0
  387. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/markdown/renderer.py +0 -0
  388. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/markdown/table.py +0 -0
  389. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/pdf/__init__.py +0 -0
  390. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/pdf/assets.py +0 -0
  391. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/pdf/formula.py +0 -0
  392. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/pdf/inline.py +0 -0
  393. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/structured_content/__init__.py +0 -0
  394. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/structured_content/renderer.py +0 -0
  395. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/api.py +0 -0
  396. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/contracts.py +0 -0
  397. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/docx.py +0 -0
  398. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/epub.py +0 -0
  399. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/fragments.py +0 -0
  400. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/html.py +0 -0
  401. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/latex.py +0 -0
  402. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/markdown.py +0 -0
  403. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/pdf.py +0 -0
  404. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/structured_content.py +0 -0
  405. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/resources/epub/docvortex.css +0 -0
  406. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/resources/fasttext-langdetect/lid.176.ftz +0 -0
  407. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/resources/fonts/DroidSansFallbackFull.ttf +0 -0
  408. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/resources/fonts/NOTICE +0 -0
  409. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/resources/fonts/manifest.json +0 -0
  410. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/resources/html/docvortex.css +0 -0
  411. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/resources/html/docvortex.min.css +0 -0
  412. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/result.py +0 -0
  413. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/schema.py +0 -0
  414. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/visualization.py +0 -0
  415. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex.egg-info/dependency_links.txt +0 -0
  416. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex.egg-info/entry_points.txt +0 -0
  417. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex.egg-info/requires.txt +0 -0
  418. {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex.egg-info/top_level.txt +0 -0
  419. {docvortex-0.4.0 → docvortex-0.4.1}/tests/benchmarks/flash_pdf.py +0 -0
  420. {docvortex-0.4.0 → docvortex-0.4.1}/tests/benchmarks/pipeline.py +0 -0
  421. {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/evaluate_native_pdf_table_manifest.py +0 -0
  422. {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/flash_layout_block_expectations.json +0 -0
  423. {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/flash_layout_geometry_manifest.json +0 -0
  424. {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/flash_layout_semantic_expectations.json +0 -0
  425. {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/generate_synthetic_pdf_fixtures.py +0 -0
  426. {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/native_pdf_table_cross_page_manifest.json +0 -0
  427. {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/native_pdf_table_demo_manifest.json +0 -0
  428. {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/native_pdf_table_script_truth.json +0 -0
  429. {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/pdf_mixed_font_script_line.json +0 -0
  430. {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/rtf/semantic.rtf +0 -0
  431. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_architecture.py +0 -0
  432. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_benchmark_entrypoint.py +0 -0
  433. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_brand_protocol.py +0 -0
  434. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_complete_pipeline.py +0 -0
  435. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_converter_lifecycle.py +0 -0
  436. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_document_envelope.py +0 -0
  437. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_document_metadata.py +0 -0
  438. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_format_matrix.py +0 -0
  439. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_geometry_api.py +0 -0
  440. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_html_namespace.py +0 -0
  441. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_mixed_font_script_reference.py +0 -0
  442. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_pdf_analysis_api.py +0 -0
  443. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_pdf_font_geometry.py +0 -0
  444. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_pdf_font_runtime.py +0 -0
  445. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_pdf_model_text_normalization.py +0 -0
  446. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_pdf_output_text.py +0 -0
  447. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_pdf_render_pool.py +0 -0
  448. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_pdf_source_row_merging.py +0 -0
  449. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_pdf_symbol_normalization.py +0 -0
  450. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_public_image_api.py +0 -0
  451. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_public_pipeline.py +0 -0
  452. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_refactor_raster.py +0 -0
  453. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_refactor_rendering.py +0 -0
  454. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_refactor_resources.py +0 -0
  455. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_render_ownership.py +0 -0
  456. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_renderer_branding.py +0 -0
  457. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_shared_boundaries.py +0 -0
  458. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_system_font_pdf_pipeline.py +0 -0
  459. {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_validated_geometry.py +0 -0
  460. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_docx_equationxml_test_utils.py +0 -0
  461. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_epub_test_utils.py +0 -0
  462. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_flash_pdf_test_utils.py +0 -0
  463. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_image_mtef_test_utils.py +0 -0
  464. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_legacy_doc_test_utils.py +0 -0
  465. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_legacy_ppt_test_utils.py +0 -0
  466. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_legacy_xls_test_utils.py +0 -0
  467. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_metafile_test_utils.py +0 -0
  468. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_mtef_test_utils.py +0 -0
  469. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_mtef_v5_test_utils.py +0 -0
  470. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_native_test_utils.py +0 -0
  471. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_odf_test_utils.py +0 -0
  472. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_ofd_test_utils.py +0 -0
  473. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_office_image_mtef_test_utils.py +0 -0
  474. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_ooxml_mtef_test_utils.py +0 -0
  475. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_span_test_utils.py +0 -0
  476. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/flash_layout/mixed_text_layout_sample.pdf.xor +0 -0
  477. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/flash_table_annotations_synthetic.pdf +0 -0
  478. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/metabolic_pathway_page_3.pdf +0 -0
  479. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_cjk_layout_synthetic.pdf +0 -0
  480. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/annual_report_fundraising_projects_table.pdf +0 -0
  481. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/annual_report_management_roles_table.pdf +0 -0
  482. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/annual_report_research_projects_table.pdf +0 -0
  483. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/conference_schedule_tables.pdf +0 -0
  484. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/engineering_process_restrictions_table.pdf +0 -0
  485. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/fund_asset_and_transaction_tables.pdf +0 -0
  486. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/fund_manager_profile_table.pdf +0 -0
  487. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/manufacturing_facilities_cross_page_table.pdf +0 -0
  488. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/pollutant_discharge_tables.pdf +0 -0
  489. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/procurement_contract_tables.pdf +0 -0
  490. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/procurement_document_blank_page_tables.pdf +0 -0
  491. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/quarterly_report_financial_tables.pdf +0 -0
  492. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/test.pdf +0 -0
  493. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_backend_architecture.py +0 -0
  494. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_backend_block_object_regressions.py +0 -0
  495. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_docx_assets.py +0 -0
  496. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_docx_complex_fields.py +0 -0
  497. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_docx_math.py +0 -0
  498. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_docx_render.py +0 -0
  499. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_docx_special_char_tables.py +0 -0
  500. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_docx_table.py +0 -0
  501. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_emfplus_integration.py +0 -0
  502. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_epub_backlinks.py +0 -0
  503. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_epub_quoted_note_types.py +0 -0
  504. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_epub_render.py +0 -0
  505. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_csv.py +0 -0
  506. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_docx_equationxml.py +0 -0
  507. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_epub.py +0 -0
  508. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_html.py +0 -0
  509. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_image_mtef.py +0 -0
  510. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_legacy_chart_data.py +0 -0
  511. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_legacy_doc.py +0 -0
  512. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_legacy_doc_mtef.py +0 -0
  513. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_legacy_ppt.py +0 -0
  514. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_legacy_xls.py +0 -0
  515. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_legacy_xls_ppt_mtef.py +0 -0
  516. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_markup_anchors.py +0 -0
  517. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_model.py +0 -0
  518. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_mtef_v5.py +0 -0
  519. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_odf.py +0 -0
  520. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_ofd.py +0 -0
  521. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_office_image_mtef.py +0 -0
  522. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_office_metafile.py +0 -0
  523. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_office_models.py +0 -0
  524. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_office_mtef_v5.py +0 -0
  525. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_office_package_normalizers.py +0 -0
  526. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_office_title_types.py +0 -0
  527. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_ooxml_mtef.py +0 -0
  528. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_auxiliary_text.py +0 -0
  529. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_char_geometry.py +0 -0
  530. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_code_blocks.py +0 -0
  531. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_document_profile.py +0 -0
  532. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_extractor.py +0 -0
  533. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_formulas.py +0 -0
  534. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_graphics.py +0 -0
  535. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_index_blocks.py +0 -0
  536. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_line_metadata.py +0 -0
  537. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_native_text.py +0 -0
  538. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_pipeline.py +0 -0
  539. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_samples.py +0 -0
  540. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_scripts.py +0 -0
  541. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_semantics.py +0 -0
  542. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_tables.py +0 -0
  543. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_text_blocks.py +0 -0
  544. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_titles.py +0 -0
  545. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_visual_annotations.py +0 -0
  546. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_rtf.py +0 -0
  547. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_shared_helpers.py +0 -0
  548. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_spreadsheet_projector.py +0 -0
  549. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_guess_suffix_ole2.py +0 -0
  550. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_html_css_build.py +0 -0
  551. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_html_render.py +0 -0
  552. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_html_security.py +0 -0
  553. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_hybrid_script_source_pdfs.py +0 -0
  554. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_latex_render.py +0 -0
  555. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_markdown_render.py +0 -0
  556. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_middle_json_block_models.py +0 -0
  557. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_middle_json_export.py +0 -0
  558. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_middle_json_validator.py +0 -0
  559. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_model_json.py +0 -0
  560. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_native_pdf_table.py +0 -0
  561. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_native_pdf_table_demo_manifest.py +0 -0
  562. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_native_pdf_table_manifest.py +0 -0
  563. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_native_pdf_table_pipeline.py +0 -0
  564. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_native_pdf_table_scripts.py +0 -0
  565. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_ofd_assembly.py +0 -0
  566. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_ofd_vector_tables.py +0 -0
  567. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_office_demo_exports.py +0 -0
  568. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_office_demo_pages.py +0 -0
  569. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_office_parser_regressions.py +0 -0
  570. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_pdf_classify.py +0 -0
  571. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_pdf_demo_links.py +0 -0
  572. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_pdf_document.py +0 -0
  573. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_pdf_render.py +0 -0
  574. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_pdf_render_diagnostics.py +0 -0
  575. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_pdf_text_styles.py +0 -0
  576. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_pdf_visualization.py +0 -0
  577. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_postprocess_page_blocks.py +0 -0
  578. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_postprocess_pages.py +0 -0
  579. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_postprocess_paragraphs.py +0 -0
  580. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_postprocess_visual.py +0 -0
  581. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_render_api.py +0 -0
  582. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_render_html_table.py +0 -0
  583. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_render_image_renderer.py +0 -0
  584. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_render_list_index_utils.py +0 -0
  585. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_structured_content_render.py +0 -0
  586. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_table_merge.py +0 -0
  587. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_table_merge_cell_merge.py +0 -0
  588. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_text_block_anchor.py +0 -0
  589. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_text_boundary_rules.py +0 -0
  590. {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_text_utils.py +0 -0
  591. {docvortex-0.4.0 → docvortex-0.4.1}/tools/__init__.py +0 -0
  592. {docvortex-0.4.0 → docvortex-0.4.1}/tools/build_html_css.py +0 -0
  593. {docvortex-0.4.0 → docvortex-0.4.1}/tools/calibrate_pdf_geometry.py +0 -0
  594. {docvortex-0.4.0 → docvortex-0.4.1}/tools/capture_baseline.py +0 -0
  595. {docvortex-0.4.0 → docvortex-0.4.1}/tools/capture_platform_layout.py +0 -0
  596. {docvortex-0.4.0 → docvortex-0.4.1}/tools/compare_font_platforms.py +0 -0
  597. {docvortex-0.4.0 → docvortex-0.4.1}/tools/font_geometry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: docvortex
3
- Version: 0.4.0
3
+ Version: 0.4.1
4
4
  Summary: A fast, multi-format document parsing and conversion engine
5
5
  License-Expression: MIT
6
6
  Project-URL: Repository, https://github.com/myhloli/DocVortex
@@ -177,7 +177,11 @@ DocVortex markers and semantic round trips.
177
177
  ## Scope and development
178
178
 
179
179
  PDF output is a semantic reflow of the document, not a lossless reproduction of
180
- the original page drawing instructions. Input support for PPTX/XLSX does not imply
180
+ the original page drawing instructions. Short paragraphs (up to a quarter of the
181
+ content area height) and short tables including annotations (up to half) stay
182
+ together when possible. Longer content can paginate; tables repeat existing
183
+ headers, and images scale to fit while keeping short captions on the same page.
184
+ Input support for PPTX/XLSX does not imply
181
185
  PPTX/XLSX output support. Rust implementation work is a future stage behind these
182
186
  public data and processing boundaries.
183
187
 
@@ -124,7 +124,11 @@ DocVortex markers and semantic round trips.
124
124
  ## Scope and development
125
125
 
126
126
  PDF output is a semantic reflow of the document, not a lossless reproduction of
127
- the original page drawing instructions. Input support for PPTX/XLSX does not imply
127
+ the original page drawing instructions. Short paragraphs (up to a quarter of the
128
+ content area height) and short tables including annotations (up to half) stay
129
+ together when possible. Longer content can paginate; tables repeat existing
130
+ headers, and images scale to fit while keeping short captions on the same page.
131
+ Input support for PPTX/XLSX does not imply
128
132
  PPTX/XLSX output support. Rust implementation work is a future stage behind these
129
133
  public data and processing boundaries.
130
134
 
@@ -0,0 +1,193 @@
1
+ """按实际排版高度保护短语义块,并保留长表格的分页能力。"""
2
+
3
+ from __future__ import annotations
4
+
5
+ from reportlab.pdfgen.canvas import Canvas
6
+ from reportlab.platypus import Flowable, Image, KeepTogether, Paragraph, Table
7
+ from reportlab.platypus.flowables import _Container, _listWrapOn
8
+
9
+ PARAGRAPH_KEEP_RATIO = 0.25
10
+ TABLE_KEEP_RATIO = 0.5
11
+
12
+
13
+ class _FlowableGroup(Flowable):
14
+ """提供可测量的容器,同时允许 ReportLab 将前面的标题与容器绑定。"""
15
+
16
+ def __init__(self, content: list[Flowable]) -> None:
17
+ """保存有序子项,不继承会被标题绑定逻辑排除的内部容器基类。"""
18
+ super().__init__()
19
+ self._content = content
20
+
21
+ def wrap(self, availWidth: float, availHeight: float) -> tuple[float, float]:
22
+ """测量真实高度,使外层标题绑定逻辑可以正确判断剩余空间。"""
23
+ self.width, self.height = _listWrapOn(self._content, availWidth, self.canv)
24
+ return self.width, self.height
25
+
26
+ def getSpaceBefore(self) -> float:
27
+ """把第一个子项的外侧间距交给内容框处理。"""
28
+ return self._content[0].getSpaceBefore()
29
+
30
+ def getSpaceAfter(self) -> float:
31
+ """把最后一个子项的外侧间距交给内容框处理。"""
32
+ return self._content[-1].getSpaceAfter()
33
+
34
+ def drawOn(self, canv: Canvas, x: float, y: float, _sW: float = 0) -> None:
35
+ """复用 ReportLab 容器绘制,保持子项对齐、链接及合并间距。"""
36
+ _Container.drawOn(self, canv, x, y, _sW=_sW)
37
+
38
+
39
+ class _MeasuredKeepTogether(_FlowableGroup):
40
+ """以真实高度参与排版,并在空间不足时委托 KeepTogether 换页。"""
41
+
42
+ def split(self, availWidth: float, availHeight: float) -> list[Flowable]:
43
+ """保留 KeepTogether 对超高内容的降级,避免保护规则导致无限换页。"""
44
+ group = KeepTogether(self._content)
45
+ group._frame = getattr(self, "_frame", None)
46
+ return group.splitOn(self.canv, availWidth, availHeight)
47
+
48
+
49
+ def _measure(content: list[Flowable], width: float, canvas: Canvas) -> float:
50
+ """测量合并相邻间距后的高度,不包含整个容器的外侧间距。"""
51
+ return _listWrapOn(content, width, canvas)[1] if content else 0.0
52
+
53
+
54
+ def _total_height(content: list[Flowable], width: float, canvas: Canvas) -> float:
55
+ """计算用于保护阈值判断的完整高度,包含首尾外侧间距。"""
56
+ if not content:
57
+ return 0.0
58
+ return _measure(content, width, canvas) + content[0].getSpaceBefore() + content[-1].getSpaceAfter()
59
+
60
+
61
+ def protect_paragraphs(content: list[Flowable], *, width: float, height: float, canvas: Canvas) -> list[Flowable]:
62
+ """逐段保护短文本,避免把整个列表绑定为不可分页的大块。"""
63
+ return [
64
+ _MeasuredKeepTogether([item])
65
+ if isinstance(item, Paragraph) and _total_height([item], width, canvas) <= height * PARAGRAPH_KEEP_RATIO
66
+ else item
67
+ for item in content
68
+ ]
69
+
70
+
71
+ def protect_images(content: list[Flowable], *, width: float, height: float, canvas: Canvas) -> list[Flowable]:
72
+ """绑定图片和简短说明,多图超过整页时按图片主体边界降级分页。"""
73
+ if not content:
74
+ return []
75
+ images = [item for item in content if isinstance(item, Image)]
76
+ notes = [item for item in content if not isinstance(item, Image)]
77
+ short_notes = _total_height(notes, width, canvas) <= height * PARAGRAPH_KEEP_RATIO
78
+ if len(images) == 1 and short_notes:
79
+ image = images[0]
80
+ overhead = _total_height(content, width, canvas) - image.drawHeight
81
+ limit = max(1.0, height - overhead)
82
+ if image.drawHeight > limit:
83
+ image.drawWidth *= limit / image.drawHeight
84
+ image.drawHeight = limit
85
+ if short_notes and _total_height(content, width, canvas) <= height + 1e-6:
86
+ return [_MeasuredKeepTogether(content)]
87
+ if len(images) > 1:
88
+ result: list[Flowable] = []
89
+ group: list[Flowable] = []
90
+ has_image = False
91
+ for item in content:
92
+ if isinstance(item, Image) and has_image:
93
+ result.extend(protect_images(group, width=width, height=height, canvas=canvas))
94
+ group = []
95
+ group.append(item)
96
+ has_image = has_image or isinstance(item, Image)
97
+ result.extend(protect_images(group, width=width, height=height, canvas=canvas))
98
+ return result
99
+ if len(images) == 1:
100
+ # 超长脚注不应解除图片与相邻短图注的绑定;只把超出预算的说明放回文本流。
101
+ start = content.index(images[0])
102
+ end = start + 1
103
+ selected_notes: list[Flowable] = []
104
+ while start > 0:
105
+ candidate = [content[start - 1], *selected_notes]
106
+ if _total_height(candidate, width, canvas) > height * PARAGRAPH_KEEP_RATIO:
107
+ break
108
+ selected_notes = candidate
109
+ start -= 1
110
+ while end < len(content):
111
+ candidate = [*selected_notes, content[end]]
112
+ if _total_height(candidate, width, canvas) > height * PARAGRAPH_KEEP_RATIO:
113
+ break
114
+ selected_notes = candidate
115
+ end += 1
116
+ return [
117
+ *protect_paragraphs(content[:start], width=width, height=height, canvas=canvas),
118
+ *protect_images(content[start:end], width=width, height=height, canvas=canvas),
119
+ *protect_paragraphs(content[end:], width=width, height=height, canvas=canvas),
120
+ ]
121
+ return protect_paragraphs(content, width=width, height=height, canvas=canvas)
122
+
123
+
124
+ class _AnnotatedTable(_FlowableGroup):
125
+ """让前置说明跟随表格首段,后置说明跟随最后一段。"""
126
+
127
+ def __init__(self, table: Table, before: list[Flowable], after: list[Flowable]) -> None:
128
+ """保存原生表格及说明,继续由 ReportLab 处理表头与合并单元格。"""
129
+ super().__init__([*before, table, *after])
130
+ self.table = table
131
+ self.before = before
132
+ self.after = after
133
+
134
+ def split(self, availWidth: float, availHeight: float) -> list[Flowable]:
135
+ """分页时只拆表格主体,并为末段保留简短说明所需的高度。"""
136
+ table_height = self.table.wrapOn(self.canv, availWidth, 0xFFFFFF)[1]
137
+ before_height = _measure([*self.before, self.table], availWidth, self.canv) - table_height
138
+ after_height = _measure([self.table, *self.after], availWidth, self.canv) - table_height
139
+ budget = availHeight - before_height
140
+ if table_height <= budget + 1e-6:
141
+ budget -= after_height
142
+ if budget <= 0:
143
+ return []
144
+ # 将容器所在页的位置传给表格,避免在页尾提前拆开普通单元格。
145
+ previous_frame = getattr(self.table, "_frame", None)
146
+ self.table._frame = getattr(self, "_frame", None)
147
+ try:
148
+ parts = self.table.splitOn(self.canv, availWidth, budget)
149
+ finally:
150
+ if previous_frame is None:
151
+ del self.table._frame
152
+ else:
153
+ self.table._frame = previous_frame
154
+ if len(parts) < 2:
155
+ return []
156
+ return [
157
+ _MeasuredKeepTogether([*self.before, *parts[:-1]]),
158
+ _AnnotatedTable(parts[-1], [], self.after),
159
+ ]
160
+
161
+
162
+ def protect_tables(content: list[Flowable], *, width: float, height: float, canvas: Canvas) -> list[Flowable]:
163
+ """保护短表整体,并按表格主体分组处理长表的前后说明。"""
164
+ if not content:
165
+ return []
166
+ if _total_height(content, width, canvas) <= height * TABLE_KEEP_RATIO:
167
+ return [_MeasuredKeepTogether(content)]
168
+ result: list[Flowable] = []
169
+ pending: list[Flowable] = []
170
+ table: Table | None = None
171
+ before: list[Flowable] = []
172
+ for item in [*content, None]:
173
+ if isinstance(item, Table) or item is None:
174
+ if table is not None:
175
+ after = pending
176
+ if _total_height(after, width, canvas) > height * PARAGRAPH_KEEP_RATIO:
177
+ result.append(_AnnotatedTable(table, before, []) if before else table)
178
+ result.extend(protect_paragraphs(after, width=width, height=height, canvas=canvas))
179
+ else:
180
+ result.append(_AnnotatedTable(table, before, after) if before or after else table)
181
+ before = []
182
+ else:
183
+ before = pending
184
+ if _total_height(before, width, canvas) > height * PARAGRAPH_KEEP_RATIO:
185
+ result.extend(protect_paragraphs(before, width=width, height=height, canvas=canvas))
186
+ before = []
187
+ table = item
188
+ pending = []
189
+ else:
190
+ pending.append(item)
191
+ if table is None and before:
192
+ result.extend(protect_paragraphs(before, width=width, height=height, canvas=canvas))
193
+ return result
@@ -15,10 +15,12 @@ from reportlab.lib.styles import ParagraphStyle
15
15
  from reportlab.lib.units import mm
16
16
  from reportlab.pdfgen.canvas import Canvas
17
17
  from reportlab.platypus import (
18
+ BaseDocTemplate,
18
19
  Flowable,
20
+ Frame,
19
21
  Image as ReportLabImage,
20
22
  Paragraph,
21
- SimpleDocTemplate,
23
+ PageTemplate,
22
24
  Spacer,
23
25
  Table,
24
26
  TableStyle,
@@ -73,7 +75,8 @@ from .formula import (
73
75
  split_formula_tag,
74
76
  )
75
77
  from .inline import PdfAnchorRegistry, PdfInlineContext, build_pdf_paragraph, render_plain_text_markup
76
- from .styles import BORDER_COLOR, PAGE_MARGIN, SURFACE_COLOR, build_pdf_styles
78
+ from .pagination import protect_images, protect_paragraphs, protect_tables
79
+ from .styles import BORDER_COLOR, FRAME_PADDING, PAGE_MARGIN, SURFACE_COLOR, build_pdf_styles
77
80
  from .table import PdfTableError, build_pdf_tables
78
81
 
79
82
  _HTML_TABLE_RE = re.compile(r"<table\b", re.IGNORECASE)
@@ -166,8 +169,8 @@ class _PdfRenderer:
166
169
  self.asset_resolver = asset_resolver
167
170
  self.document_title = _resolve_document_title(middle_json, document_title)
168
171
  self.styles = build_pdf_styles()
169
- self.available_width = A4[0] - 2 * PAGE_MARGIN
170
- self.available_height = A4[1] - 2 * PAGE_MARGIN
172
+ self.available_width = A4[0] - 2 * (PAGE_MARGIN + FRAME_PADDING)
173
+ self.available_height = A4[1] - 2 * (PAGE_MARGIN + FRAME_PADDING)
171
174
  self.inline_context = PdfInlineContext(
172
175
  formulas=FormulaRenderer(),
173
176
  anchors=PdfAnchorRegistry(_iter_document_anchors(middle_json)),
@@ -176,6 +179,12 @@ class _PdfRenderer:
176
179
  def render(self) -> bytes:
177
180
  """构造逐页 story,并将确定性 ReportLab 文档序列化为 bytes。"""
178
181
  story: list[Flowable] = []
182
+ measure_canvas = Canvas(BytesIO())
183
+ pagination_options = {
184
+ "width": self.available_width,
185
+ "height": self.available_height,
186
+ "canvas": measure_canvas,
187
+ }
179
188
  planned_pages = build_render_plan(self.middle_json)
180
189
  for planned_blocks in planned_pages:
181
190
  for planned in planned_blocks:
@@ -184,12 +193,25 @@ class _PdfRenderer:
184
193
  if planned.block.type in PAGE_AUXILIARY_BLOCK_TYPES:
185
194
  continue
186
195
  rendered = self._render_planned_block(planned)
196
+ if isinstance(planned.block, (ImageBlock, TableBlock, ChartBlock)):
197
+ # 标题计入图表的首段预算,避免满页图片或长表把标题单独留在前页。
198
+ while story and isinstance(story[-1], Paragraph) and story[-1].getKeepWithNext():
199
+ rendered.insert(0, story.pop())
200
+ if isinstance(planned.block, (TextBlock, RefTextBlock, ListBlock)):
201
+ rendered = protect_paragraphs(rendered, **pagination_options)
202
+ elif isinstance(planned.block, ImageBlock):
203
+ rendered = protect_images(rendered, **pagination_options)
204
+ elif isinstance(planned.block, (TableBlock, ChartBlock)):
205
+ if any(isinstance(item, ReportLabImage) for item in rendered):
206
+ rendered = protect_images(rendered, **pagination_options)
207
+ else:
208
+ rendered = protect_tables(rendered, **pagination_options)
187
209
  story.extend(rendered)
188
210
  if not story:
189
211
  story.append(Spacer(1, 1))
190
212
 
191
213
  output = BytesIO()
192
- document = SimpleDocTemplate(
214
+ document = BaseDocTemplate(
193
215
  output,
194
216
  pagesize=A4,
195
217
  leftMargin=PAGE_MARGIN,
@@ -204,6 +226,24 @@ class _PdfRenderer:
204
226
  invariant=1,
205
227
  pageCompression=1,
206
228
  )
229
+ document.addPageTemplates(
230
+ PageTemplate(
231
+ id="normal",
232
+ frames=[
233
+ Frame(
234
+ PAGE_MARGIN,
235
+ PAGE_MARGIN,
236
+ A4[0] - 2 * PAGE_MARGIN,
237
+ A4[1] - 2 * PAGE_MARGIN,
238
+ leftPadding=FRAME_PADDING,
239
+ rightPadding=FRAME_PADDING,
240
+ topPadding=FRAME_PADDING,
241
+ bottomPadding=FRAME_PADDING,
242
+ id="normal",
243
+ )
244
+ ],
245
+ )
246
+ )
207
247
  document.build(
208
248
  story,
209
249
  canvasmaker=partial(_PdfCanvas, document_title=self.document_title),
@@ -598,7 +638,7 @@ class _PdfRenderer:
598
638
  desired_width = available_width * (block.bbox[2] - block.bbox[0])
599
639
  desired_width = max(min(_MIN_IMAGE_WIDTH, available_width), min(desired_width, available_width))
600
640
  desired_height = desired_width * prepared.height_px / max(prepared.width_px, 1)
601
- max_height = self.available_height
641
+ max_height = self.available_height - 10
602
642
  if desired_height > max_height:
603
643
  scale = max_height / desired_height
604
644
  desired_width *= scale
@@ -14,6 +14,7 @@ from reportlab.pdfbase import cidfonts, pdfmetrics
14
14
  from reportlab.pdfbase.ttfonts import TTFont
15
15
 
16
16
  PAGE_MARGIN = 20 * mm
17
+ FRAME_PADDING = 6.0
17
18
  BODY_FONT = "Helvetica"
18
19
  BODY_BOLD_FONT = "Helvetica-Bold"
19
20
  MONO_FONT = "Courier"
@@ -66,8 +67,8 @@ def build_pdf_styles() -> PdfStyleSet:
66
67
  spaceBefore=0,
67
68
  spaceAfter=7,
68
69
  splitLongWords=True,
69
- allowWidows=1,
70
- allowOrphans=1,
70
+ allowWidows=0,
71
+ allowOrphans=0,
71
72
  )
72
73
  headings = tuple(
73
74
  ParagraphStyle(
@@ -147,6 +148,8 @@ def build_pdf_styles() -> PdfStyleSet:
147
148
  leading=11,
148
149
  spaceBefore=0,
149
150
  spaceAfter=0,
151
+ allowWidows=1,
152
+ allowOrphans=1,
150
153
  )
151
154
  table_header = ParagraphStyle(
152
155
  "DocVortex PDF Table Header",
@@ -192,6 +195,7 @@ __all__ = [
192
195
  "BODY_BOLD_FONT",
193
196
  "BODY_FONT",
194
197
  "BORDER_COLOR",
198
+ "FRAME_PADDING",
195
199
  "HAN_FONT",
196
200
  "JAPANESE_FONT",
197
201
  "KOREAN_FONT",
@@ -30,6 +30,25 @@ class PdfTableError(HtmlTableError):
30
30
  """表示 HTML 表格结构或 PDF 表格几何无法安全物化。"""
31
31
 
32
32
 
33
+ class _PdfLongTable(LongTable):
34
+ """优先按整行分页,仅在新页也放不下时拆分超高行。"""
35
+
36
+ def split(self, availWidth: float, availHeight: float) -> list[Flowable]:
37
+ """先禁用行内拆分尝试分页,页首失败后再启用原有兜底能力。"""
38
+ split_in_row = self.splitInRow
39
+ self.splitInRow = 0
40
+ try:
41
+ parts = super().split(availWidth, availHeight)
42
+ finally:
43
+ self.splitInRow = split_in_row
44
+ for part in parts:
45
+ part.splitInRow = split_in_row
46
+ frame = getattr(self, "_frame", None)
47
+ if not parts and (frame is None or frame._atTop):
48
+ parts = super().split(availWidth, availHeight)
49
+ return parts
50
+
51
+
33
52
  class ParagraphBuilder(Protocol):
34
53
  """定义表格单元格创建富文本 Paragraph 的回调。"""
35
54
 
@@ -127,7 +146,7 @@ def _build_pdf_table(
127
146
  repeat_rows = 0
128
147
  while repeat_rows in grid.header_rows:
129
148
  repeat_rows += 1
130
- table_class = LongTable if depth == 1 else Table
149
+ table_class = _PdfLongTable if depth == 1 else Table
131
150
  table = table_class(
132
151
  data,
133
152
  colWidths=column_widths,
@@ -1,3 +1,3 @@
1
- __version__ = "0.4.0"
1
+ __version__ = "0.4.1"
2
2
 
3
3
  __all__ = ["__version__"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: docvortex
3
- Version: 0.4.0
3
+ Version: 0.4.1
4
4
  Summary: A fast, multi-format document parsing and conversion engine
5
5
  License-Expression: MIT
6
6
  Project-URL: Repository, https://github.com/myhloli/DocVortex
@@ -177,7 +177,11 @@ DocVortex markers and semantic round trips.
177
177
  ## Scope and development
178
178
 
179
179
  PDF output is a semantic reflow of the document, not a lossless reproduction of
180
- the original page drawing instructions. Input support for PPTX/XLSX does not imply
180
+ the original page drawing instructions. Short paragraphs (up to a quarter of the
181
+ content area height) and short tables including annotations (up to half) stay
182
+ together when possible. Longer content can paginate; tables repeat existing
183
+ headers, and images scale to fit while keeping short captions on the same page.
184
+ Input support for PPTX/XLSX does not imply
181
185
  PPTX/XLSX output support. Rust implementation work is a future stage behind these
182
186
  public data and processing boundaries.
183
187
 
@@ -400,6 +400,7 @@ src/docvortex/render/_internal/pdf/__init__.py
400
400
  src/docvortex/render/_internal/pdf/assets.py
401
401
  src/docvortex/render/_internal/pdf/formula.py
402
402
  src/docvortex/render/_internal/pdf/inline.py
403
+ src/docvortex/render/_internal/pdf/pagination.py
403
404
  src/docvortex/render/_internal/pdf/renderer.py
404
405
  src/docvortex/render/_internal/pdf/styles.py
405
406
  src/docvortex/render/_internal/pdf/table.py
@@ -549,6 +550,7 @@ tests/unittest/test_office_parser_regressions.py
549
550
  tests/unittest/test_pdf_classify.py
550
551
  tests/unittest/test_pdf_demo_links.py
551
552
  tests/unittest/test_pdf_document.py
553
+ tests/unittest/test_pdf_pagination.py
552
554
  tests/unittest/test_pdf_render.py
553
555
  tests/unittest/test_pdf_render_diagnostics.py
554
556
  tests/unittest/test_pdf_text_styles.py