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.
- {docvortex-0.4.0/src/docvortex.egg-info → docvortex-0.4.1}/PKG-INFO +6 -2
- {docvortex-0.4.0 → docvortex-0.4.1}/README.md +5 -1
- docvortex-0.4.1/src/docvortex/render/_internal/pdf/pagination.py +193 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/pdf/renderer.py +46 -6
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/pdf/styles.py +6 -2
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/pdf/table.py +20 -1
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/version.py +1 -1
- {docvortex-0.4.0 → docvortex-0.4.1/src/docvortex.egg-info}/PKG-INFO +6 -2
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex.egg-info/SOURCES.txt +2 -0
- docvortex-0.4.1/tests/unittest/test_pdf_pagination.py +251 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/LICENSE.md +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/MANIFEST.in +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/README.md +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/demo.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/office_docs/README.md +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/office_docs/docx_01.doc +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/office_docs/docx_01.docx +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/office_docs/pptx_01.ppt +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/office_docs/pptx_01.pptx +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/office_docs/rtf_01.rtf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/office_docs/xlsx_01.xls +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/office_docs/xlsx_01.xlsx +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/2407.00079v4_origi-10.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/IEBM_A_2667169_O-5.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/caibao1.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/demo1.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/demo2.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/demo3.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/demo4.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/demo6.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/mixed_elements_pages_03_06.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/mixed_elements_pages_07_10.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/mixed_elements_pages_11_15.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/mixed_elements_pages_39_40.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/demo/pdfs/small_ocr.pdf +0 -0
- {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
- {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
- {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
- {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
- {docvortex-0.4.0 → docvortex-0.4.1}/docs/HTML_PROTOCOL.md +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/docs/JSON_PROTOCOL.md +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/docs/METADATA.md +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/docs/PDF_FONTS.md +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/docs/RENDER_OWNERSHIP.md +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/docs/sdk-0.4.md +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/pyproject.toml +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/schemas/middle-2.0.json +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/schemas/model-2.0.json +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/setup.cfg +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/hyperlink.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/image.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/markup/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/markup/anchors.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/markup/formula.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/markup/projector.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/markup/styles.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/mathml.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/names.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/_shared/xycut.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/contracts.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/csv.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/epub/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/epub/constants.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/epub/converter.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/epub/errors.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/epub/metadata.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/epub/package.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/epub/properties.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/epub/xhtml.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/anchors.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/constants.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/converter.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/document.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/errors.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/metadata.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/resources.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/html/selector.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/models.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/assembly.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/constants.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/converter.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/errors.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/geometry.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/images.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/metadata.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/models.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/package.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/path.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/reading_order.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/resources.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/scene.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/table.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/text.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/ofd/vector.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/bookmarks.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/doc_converter.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/fib.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/fields.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/formatting.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/images.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/lists.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/models.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/parser.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/pieces.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/records.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/sprm.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/doc/styles.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/context.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/docx_converter.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/equationxml.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/fields.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/formatting_types.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/main.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/numbering.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/office_xml.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/package_normalizer.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/resources.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/styles.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/docx/tables.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/equation/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/equation/image.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/equation/latex_dict.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/equation/mtef.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/equation/mtef_v5.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/equation/omml.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/equation/ooxml.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/errors.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/image.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/legacy/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/legacy/binary.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/legacy/officeart.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/legacy/ole.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/limits.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/metadata.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/chart.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/constants.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/converters.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/errors.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/metadata.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/models.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/package.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/styles.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/table.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/odf/text.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/ooxml_chart.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/opc.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/ppt/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/ppt/models.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/ppt/parser.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/ppt/ppt_converter.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/ppt/records.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/ppt/style_text.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/context.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/lists.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/main.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/package_normalizer.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/pptx_converter.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/resources.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/shapes.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/text_styles.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/pptx/titles.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/rich_text.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/rtf/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/rtf/converter.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/rtf/lexer.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/rtf/math.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/rtf/metadata.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/rtf/models.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/rtf/parser.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/spreadsheet/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/spreadsheet/html.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/spreadsheet/models.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/spreadsheet/projector.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/streams.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/chart.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/embedded_chart.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/models.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/number_format.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/parser.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/records.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/strings.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xls/xls_converter.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xlsx/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xlsx/main.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xlsx/ooxml_ole.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xlsx/package_normalizer.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/office/xlsx/xlsx_converter.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_script_geometry.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/candidate.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/contracts.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/engine.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/geometry.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_common.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_hybrid.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/sparse_multiline.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/text.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/text_grid.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/_table_recovery/vector.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/auxiliary_text.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/char_geometry.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/code_blocks.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/formulas.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/geometry.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/graphics.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/index_blocks.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/inline/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/inline/common.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/inline/detection.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/inline/matching.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/inline/materialize.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/inline/scripts.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/inline/types.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/line_layout.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/line_merging.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/models.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/native_text.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/pipeline.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/spatial_text.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_annotations.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_constants.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_detection.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_filled_grid.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_geometry.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_materialization.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_rows.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_rules.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/table_text_styles.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/tables.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/text_assembly/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/text_assembly/annotations.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/text_assembly/assembly.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/text_assembly/common.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/text_assembly/footnotes.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/text_assembly/merging.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/text_assembly/rows.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/text_blocks.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/title_analysis/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/title_analysis/body_profile.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/title_analysis/common.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/title_analysis/document_profile.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/title_analysis/lane_titles.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/title_analysis/page_titles.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/title_analysis/prototype.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/title_analysis/structural.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/titles.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/typography.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/native/pdf/visual_annotations.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/analyzers/pdf.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/api.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/assets/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/assets/images.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/assets/store.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/cli.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/codecs/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/codecs/html/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/codecs/html/contracts.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/codecs/html/materializer.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/codecs/html/parser.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/codecs/html/resources.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/codecs/json.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/inline.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/links.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/markup/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/markup/anchors.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/markup/formula.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/markup/projector.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/markup/styles.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/mathml.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/normalization.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/spans.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/table/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/table/blocks.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/table/content.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/table/document.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/table/html.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/table/models.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/table/rules.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/table/structure.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/text.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/content/tree.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/contracts.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/detection.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/filetypes.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/page_range.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/_document.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/classify.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/constants.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/font_runtime.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/images.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/metadata.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/native_annotations.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/native_contracts.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/native_coordinates.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/native_lifecycle.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/native_objects.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/native_text_geometry.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/pdfium.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/raster.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/text/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/text/_contracts.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/text/extract.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/text/geometry.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/text/groups.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/pdf/visuals.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/properties.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/document/source.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/errors.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/export/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/export/bundle.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/export/files.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/export/middle.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/_coordinates.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/_geometry.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/_hyperlink.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/_image.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/_image_operations.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/_image_payload.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/_text.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/image_encoding.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/language.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/type_identity.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/foundation/xml_names.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/geometry.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/metadata.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/options.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/postprocess/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/postprocess/content.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/postprocess/document.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/postprocess/lists.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/postprocess/page_blocks.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/postprocess/pages.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/postprocess/paragraphs.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/postprocess/visual.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/public_api.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/common/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/common/context.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/common/html_table.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/common/index.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/common/list_items.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/common/planner.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/docx/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/docx/assets.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/docx/inline.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/docx/math.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/docx/renderer.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/docx/styles.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/docx/table.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/epub/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/epub/assets.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/epub/package.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/epub/renderer.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/html/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/html/inline.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/html/renderer.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/html/sanitizer.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/html/table.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/latex/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/latex/assets.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/latex/inline.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/latex/renderer.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/latex/table.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/markdown/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/markdown/assets.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/markdown/blocks.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/markdown/escaping.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/markdown/inline.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/markdown/renderer.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/markdown/table.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/pdf/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/pdf/assets.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/pdf/formula.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/pdf/inline.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/structured_content/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/_internal/structured_content/renderer.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/api.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/contracts.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/docx.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/epub.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/fragments.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/html.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/latex.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/markdown.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/pdf.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/render/structured_content.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/resources/epub/docvortex.css +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/resources/fasttext-langdetect/lid.176.ftz +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/resources/fonts/DroidSansFallbackFull.ttf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/resources/fonts/NOTICE +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/resources/fonts/manifest.json +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/resources/html/docvortex.css +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/resources/html/docvortex.min.css +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/result.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/schema.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex/visualization.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex.egg-info/dependency_links.txt +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex.egg-info/entry_points.txt +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex.egg-info/requires.txt +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/src/docvortex.egg-info/top_level.txt +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/benchmarks/flash_pdf.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/benchmarks/pipeline.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/evaluate_native_pdf_table_manifest.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/flash_layout_block_expectations.json +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/flash_layout_geometry_manifest.json +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/flash_layout_semantic_expectations.json +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/generate_synthetic_pdf_fixtures.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/native_pdf_table_cross_page_manifest.json +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/native_pdf_table_demo_manifest.json +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/native_pdf_table_script_truth.json +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/pdf_mixed_font_script_line.json +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/fixtures/rtf/semantic.rtf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_architecture.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_benchmark_entrypoint.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_brand_protocol.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_complete_pipeline.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_converter_lifecycle.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_document_envelope.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_document_metadata.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_format_matrix.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_geometry_api.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_html_namespace.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_mixed_font_script_reference.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_pdf_analysis_api.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_pdf_font_geometry.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_pdf_font_runtime.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_pdf_model_text_normalization.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_pdf_output_text.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_pdf_render_pool.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_pdf_source_row_merging.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_pdf_symbol_normalization.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_public_image_api.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_public_pipeline.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_refactor_raster.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_refactor_rendering.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_refactor_resources.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_render_ownership.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_renderer_branding.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_shared_boundaries.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_system_font_pdf_pipeline.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/test_validated_geometry.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_docx_equationxml_test_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_epub_test_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_flash_pdf_test_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_image_mtef_test_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_legacy_doc_test_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_legacy_ppt_test_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_legacy_xls_test_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_metafile_test_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_mtef_test_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_mtef_v5_test_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_native_test_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_odf_test_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_ofd_test_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_office_image_mtef_test_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_ooxml_mtef_test_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/_span_test_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/flash_layout/mixed_text_layout_sample.pdf.xor +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/flash_table_annotations_synthetic.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/metabolic_pathway_page_3.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_cjk_layout_synthetic.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/annual_report_fundraising_projects_table.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/annual_report_management_roles_table.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/annual_report_research_projects_table.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/conference_schedule_tables.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/engineering_process_restrictions_table.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/fund_asset_and_transaction_tables.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/fund_manager_profile_table.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/manufacturing_facilities_cross_page_table.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/pollutant_discharge_tables.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/procurement_contract_tables.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/procurement_document_blank_page_tables.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/native_pdf_tables/quarterly_report_financial_tables.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/pdfs/test.pdf +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_backend_architecture.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_backend_block_object_regressions.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_docx_assets.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_docx_complex_fields.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_docx_math.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_docx_render.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_docx_special_char_tables.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_docx_table.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_emfplus_integration.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_epub_backlinks.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_epub_quoted_note_types.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_epub_render.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_csv.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_docx_equationxml.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_epub.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_html.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_image_mtef.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_legacy_chart_data.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_legacy_doc.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_legacy_doc_mtef.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_legacy_ppt.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_legacy_xls.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_legacy_xls_ppt_mtef.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_markup_anchors.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_model.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_mtef_v5.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_odf.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_ofd.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_office_image_mtef.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_office_metafile.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_office_models.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_office_mtef_v5.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_office_package_normalizers.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_office_title_types.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_ooxml_mtef.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_auxiliary_text.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_char_geometry.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_code_blocks.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_document_profile.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_extractor.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_formulas.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_graphics.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_index_blocks.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_line_metadata.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_native_text.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_pipeline.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_samples.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_scripts.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_semantics.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_tables.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_text_blocks.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_titles.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_pdf_visual_annotations.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_rtf.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_shared_helpers.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_flash_spreadsheet_projector.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_guess_suffix_ole2.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_html_css_build.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_html_render.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_html_security.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_hybrid_script_source_pdfs.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_latex_render.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_markdown_render.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_middle_json_block_models.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_middle_json_export.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_middle_json_validator.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_model_json.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_native_pdf_table.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_native_pdf_table_demo_manifest.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_native_pdf_table_manifest.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_native_pdf_table_pipeline.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_native_pdf_table_scripts.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_ofd_assembly.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_ofd_vector_tables.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_office_demo_exports.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_office_demo_pages.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_office_parser_regressions.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_pdf_classify.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_pdf_demo_links.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_pdf_document.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_pdf_render.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_pdf_render_diagnostics.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_pdf_text_styles.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_pdf_visualization.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_postprocess_page_blocks.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_postprocess_pages.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_postprocess_paragraphs.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_postprocess_visual.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_render_api.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_render_html_table.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_render_image_renderer.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_render_list_index_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_structured_content_render.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_table_merge.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_table_merge_cell_merge.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_text_block_anchor.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_text_boundary_rules.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tests/unittest/test_text_utils.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tools/__init__.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tools/build_html_css.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tools/calibrate_pdf_geometry.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tools/capture_baseline.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tools/capture_platform_layout.py +0 -0
- {docvortex-0.4.0 → docvortex-0.4.1}/tools/compare_font_platforms.py +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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 .
|
|
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 =
|
|
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=
|
|
70
|
-
allowOrphans=
|
|
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 =
|
|
149
|
+
table_class = _PdfLongTable if depth == 1 else Table
|
|
131
150
|
table = table_class(
|
|
132
151
|
data,
|
|
133
152
|
colWidths=column_widths,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: docvortex
|
|
3
|
-
Version: 0.4.
|
|
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.
|
|
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
|