BabelDOC 0.1.30__tar.gz → 0.1.32__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {babeldoc-0.1.30 → babeldoc-0.1.32}/PKG-INFO +1 -1
- babeldoc-0.1.32/babeldoc/__init__.py +1 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/const.py +1 -1
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/frontend/il_creater.py +30 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/midend/styles_and_formulas.py +1 -1
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/main.py +1 -1
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/CONTRIBUTING.md +2 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/pyproject.toml +2 -2
- {babeldoc-0.1.30 → babeldoc-0.1.32}/uv.lock +1 -1
- babeldoc-0.1.30/babeldoc/__init__.py +0 -1
- {babeldoc-0.1.30 → babeldoc-0.1.32}/.cursorignore +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/.github/dependabot.yml +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/.github/labels.yml +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/.github/release-drafter.yml +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/.github/workflows/codeql.yml +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/.github/workflows/docs.yml +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/.github/workflows/labeler.yml +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/.github/workflows/publish-to-pypi.yml +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/.github/workflows/test.yml +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/.gitignore +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/.pre-commit-config.yaml +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/LICENSE +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/README.md +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/assets/assets.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/assets/embedding_assets_metadata.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/asynchronize/__init__.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/converter.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/__init__.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/babeldoc_exception/BabelDOCException.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/backend/__init__.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/backend/pdf_creater.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/frontend/__init__.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/il_version_1.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/il_version_1.rnc +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/il_version_1.rng +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/il_version_1.xsd +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/midend/__init__.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/midend/add_debug_information.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/midend/detect_scanned_file.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/midend/il_translator.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/midend/layout_parser.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/midend/paragraph_finder.py +2 -2
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/midend/remove_descent.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/midend/typesetting.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/translator/__init__.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/translator/cache.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/translator/translator.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/utils/fontmap.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/utils/layout_helper.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/utils/style_helper.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/xml_converter.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/docvision/README.md +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/docvision/__init__.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/docvision/doclayout.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/docvision/rpc_doclayout.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/high_level.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/pdfinterp.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/progress_monitor.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/tools/generate_font_metadata.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/translation_config.py +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/CODE_OF_CONDUCT.md +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/CONTRIBUTOR_REWARD.md +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/ImplementationDetails/README.md +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/README.md +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/deploy.sh +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/images/babeldoc-banner.png +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/images/babeldoc-big-logo.png +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/images/babeldoc-contributor_reward_example.png +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/images/babeldoc-preview.gif +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/images/babeldoc-small-logo.png +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/index.md +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/intro-to-pdf-object.md +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/docs/requirements.txt +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/mkdocs.yml +0 -0
- {babeldoc-0.1.30 → babeldoc-0.1.32}/tests/test_translation_config.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.32"
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import base64
|
|
2
2
|
import logging
|
|
3
3
|
import re
|
|
4
|
+
from functools import wraps
|
|
4
5
|
|
|
5
6
|
import pdfminer.pdfinterp
|
|
6
7
|
import pymupdf
|
|
@@ -8,6 +9,9 @@ from pdfminer.layout import LTChar
|
|
|
8
9
|
from pdfminer.layout import LTFigure
|
|
9
10
|
from pdfminer.pdffont import PDFCIDFont
|
|
10
11
|
from pdfminer.pdffont import PDFFont
|
|
12
|
+
from pdfminer.pdfpage import PDFPage as PDFMinerPDFPage
|
|
13
|
+
from pdfminer.pdftypes import PDFObjRef as PDFMinerPDFObjRef
|
|
14
|
+
from pdfminer.pdftypes import resolve1 as pdftypes_resolve1
|
|
11
15
|
from pdfminer.psparser import PSLiteral
|
|
12
16
|
|
|
13
17
|
from babeldoc.document_il import il_version_1
|
|
@@ -16,6 +20,26 @@ from babeldoc.translation_config import TranslationConfig
|
|
|
16
20
|
logger = logging.getLogger(__name__)
|
|
17
21
|
|
|
18
22
|
|
|
23
|
+
def create_hook(func, hook):
|
|
24
|
+
@wraps(func)
|
|
25
|
+
def wrapper(*args, **kwargs):
|
|
26
|
+
hook(*args, **kwargs)
|
|
27
|
+
return func(*args, **kwargs)
|
|
28
|
+
|
|
29
|
+
return wrapper
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def hook_pdfminer_pdf_page_init(*args):
|
|
33
|
+
attrs = args[3]
|
|
34
|
+
while isinstance(attrs["MediaBox"], PDFMinerPDFObjRef):
|
|
35
|
+
attrs["MediaBox"] = pdftypes_resolve1(attrs["MediaBox"])
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
PDFMinerPDFPage.__init__ = create_hook(
|
|
39
|
+
PDFMinerPDFPage.__init__, hook_pdfminer_pdf_page_init
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
|
|
19
43
|
class ILCreater:
|
|
20
44
|
stage_name = "Parse PDF and Create Intermediate Representation"
|
|
21
45
|
|
|
@@ -313,6 +337,12 @@ class ILCreater:
|
|
|
313
337
|
pdf_style=pdf_style,
|
|
314
338
|
xobj_id=char.xobj_id,
|
|
315
339
|
)
|
|
340
|
+
if pdf_style.font_size == 0.0:
|
|
341
|
+
logger.warning(
|
|
342
|
+
"Font size is 0.0 for character %s. Skip it.",
|
|
343
|
+
char_unicode,
|
|
344
|
+
)
|
|
345
|
+
return
|
|
316
346
|
self.current_page.pdf_character.append(pdf_char)
|
|
317
347
|
|
|
318
348
|
def create_il(self):
|
|
@@ -479,7 +479,7 @@ class StylesAndFormulas:
|
|
|
479
479
|
return bool(re.match(r"^[0-9, ]+$", text))
|
|
480
480
|
|
|
481
481
|
def is_formulas_font(self, font_name: str) -> bool:
|
|
482
|
-
pattern2 = r"^(Cambria|Cambria-BoldItalic|Cambria-Bold|Cambria-Italic|EUAlbertina.+|NimbusRomNo9L.+)$"
|
|
482
|
+
pattern2 = r"^(Cambria|Cambria-BoldItalic|Cambria-Bold|Cambria-Italic|EUAlbertina.+|NimbusRomNo9L.+|GlosaMath.+)$"
|
|
483
483
|
if self.translation_config.formular_font_pattern:
|
|
484
484
|
pattern = self.translation_config.formular_font_pattern
|
|
485
485
|
else:
|
|
@@ -39,6 +39,8 @@ Please pay special attention to:
|
|
|
39
39
|
> You can contact the maintainers in the pdf2zh discussion group.
|
|
40
40
|
>
|
|
41
41
|
> We welcome pull requests and will review your contributions.
|
|
42
|
+
>
|
|
43
|
+
> Sometimes we may not choose to accept your PR, but instead implement the related code ourselves. Please don't be offended if we implement the related code from scratch.
|
|
42
44
|
|
|
43
45
|
|
|
44
46
|
1. Fork this repository and clone it locally.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "BabelDOC"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.32"
|
|
4
4
|
description = "Yet Another Document Translator"
|
|
5
5
|
license = "AGPL-3.0"
|
|
6
6
|
readme = "README.md"
|
|
@@ -133,7 +133,7 @@ pythonpath = [".", "src"]
|
|
|
133
133
|
testpaths = ["tests"]
|
|
134
134
|
|
|
135
135
|
[bumpver]
|
|
136
|
-
current_version = "0.1.
|
|
136
|
+
current_version = "0.1.32"
|
|
137
137
|
version_pattern = "MAJOR.MINOR.PATCH[.PYTAGNUM]"
|
|
138
138
|
|
|
139
139
|
[bumpver.file_patterns]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.30"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.1.30 → babeldoc-0.1.32}/babeldoc/document_il/babeldoc_exception/BabelDOCException.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.1.30 → babeldoc-0.1.32}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.1.30 → babeldoc-0.1.32}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.1.30 → babeldoc-0.1.32}/docs/images/babeldoc-big-logo-with-transparent-background.png
RENAMED
|
File without changes
|
{babeldoc-0.1.30 → babeldoc-0.1.32}/docs/images/babeldoc-big-logo-with-transparent-background.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{babeldoc-0.1.30 → babeldoc-0.1.32}/docs/images/babeldoc-small-logo-with-transparent-background.png
RENAMED
|
File without changes
|
{babeldoc-0.1.30 → babeldoc-0.1.32}/docs/images/babeldoc-small-logo-with-transparent-background.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|