BabelDOC 0.2.33__tar.gz → 0.3.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 (98) hide show
  1. {babeldoc-0.2.33 → babeldoc-0.3.1}/PKG-INFO +1 -1
  2. babeldoc-0.3.1/babeldoc/__init__.py +1 -0
  3. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/const.py +1 -1
  4. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/backend/pdf_creater.py +7 -0
  5. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/midend/il_translator.py +8 -2
  6. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/midend/il_translator_llm_only.py +15 -3
  7. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/translator/translator.py +8 -8
  8. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/high_level.py +15 -1
  9. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/main.py +1 -1
  10. {babeldoc-0.2.33 → babeldoc-0.3.1}/pyproject.toml +2 -2
  11. {babeldoc-0.2.33 → babeldoc-0.3.1}/uv.lock +1 -1
  12. babeldoc-0.2.33/babeldoc/__init__.py +0 -1
  13. {babeldoc-0.2.33 → babeldoc-0.3.1}/.cursorignore +0 -0
  14. {babeldoc-0.2.33 → babeldoc-0.3.1}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  15. {babeldoc-0.2.33 → babeldoc-0.3.1}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  16. {babeldoc-0.2.33 → babeldoc-0.3.1}/.github/dependabot.yml +0 -0
  17. {babeldoc-0.2.33 → babeldoc-0.3.1}/.github/labels.yml +0 -0
  18. {babeldoc-0.2.33 → babeldoc-0.3.1}/.github/release-drafter.yml +0 -0
  19. {babeldoc-0.2.33 → babeldoc-0.3.1}/.github/workflows/codeql.yml +0 -0
  20. {babeldoc-0.2.33 → babeldoc-0.3.1}/.github/workflows/docs.yml +0 -0
  21. {babeldoc-0.2.33 → babeldoc-0.3.1}/.github/workflows/labeler.yml +0 -0
  22. {babeldoc-0.2.33 → babeldoc-0.3.1}/.github/workflows/publish-to-pypi.yml +0 -0
  23. {babeldoc-0.2.33 → babeldoc-0.3.1}/.github/workflows/test.yml +0 -0
  24. {babeldoc-0.2.33 → babeldoc-0.3.1}/.gitignore +0 -0
  25. {babeldoc-0.2.33 → babeldoc-0.3.1}/.pre-commit-config.yaml +0 -0
  26. {babeldoc-0.2.33 → babeldoc-0.3.1}/LICENSE +0 -0
  27. {babeldoc-0.2.33 → babeldoc-0.3.1}/README.md +0 -0
  28. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/assets/assets.py +0 -0
  29. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/assets/embedding_assets_metadata.py +0 -0
  30. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/asynchronize/__init__.py +0 -0
  31. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/converter.py +0 -0
  32. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/__init__.py +0 -0
  33. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/babeldoc_exception/BabelDOCException.py +0 -0
  34. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/backend/__init__.py +0 -0
  35. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/frontend/__init__.py +0 -0
  36. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/frontend/il_creater.py +0 -0
  37. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/il_version_1.py +0 -0
  38. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/il_version_1.rnc +0 -0
  39. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/il_version_1.rng +0 -0
  40. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/il_version_1.xsd +0 -0
  41. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/midend/__init__.py +0 -0
  42. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/midend/add_debug_information.py +0 -0
  43. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/midend/detect_scanned_file.py +0 -0
  44. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/midend/layout_parser.py +0 -0
  45. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/midend/paragraph_finder.py +0 -0
  46. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/midend/remove_descent.py +0 -0
  47. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/midend/styles_and_formulas.py +0 -0
  48. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/midend/table_parser.py +0 -0
  49. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/midend/typesetting.py +0 -0
  50. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/translator/__init__.py +0 -0
  51. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/translator/cache.py +0 -0
  52. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/utils/atomic_integer.py +0 -0
  53. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/utils/fontmap.py +0 -0
  54. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/utils/layout_helper.py +0 -0
  55. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/utils/priority_thread_pool_executor.py +0 -0
  56. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/utils/style_helper.py +0 -0
  57. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/document_il/xml_converter.py +0 -0
  58. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/docvision/README.md +0 -0
  59. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/docvision/__init__.py +0 -0
  60. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/docvision/doclayout.py +0 -0
  61. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/docvision/rpc_doclayout.py +0 -0
  62. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/docvision/table_detection/rapidocr.py +0 -0
  63. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/pdfinterp.py +0 -0
  64. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/progress_monitor.py +0 -0
  65. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/result_merger.py +0 -0
  66. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/split_manager.py +0 -0
  67. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/tools/generate_font_metadata.py +0 -0
  68. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/tools/italic_assistance.py +0 -0
  69. {babeldoc-0.2.33 → babeldoc-0.3.1}/babeldoc/translation_config.py +0 -0
  70. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/CODE_OF_CONDUCT.md +0 -0
  71. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/CONTRIBUTING.md +0 -0
  72. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/CONTRIBUTOR_REWARD.md +0 -0
  73. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/ImplementationDetails/AsyncTranslate/AsyncTranslate.md +0 -0
  74. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/ImplementationDetails/ILTranslator/ILTranslator.md +0 -0
  75. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/ImplementationDetails/PDFCreation/PDFCreation.md +0 -0
  76. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/ImplementationDetails/PDFParsing/PDFParsing.md +0 -0
  77. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/ImplementationDetails/ParagraphFinding/ParagraphFinding.md +0 -0
  78. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/ImplementationDetails/README.md +0 -0
  79. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/ImplementationDetails/StylesAndFormulas/StylesAndFormulas.md +0 -0
  80. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/ImplementationDetails/Typesetting/Typesetting.md +0 -0
  81. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/README.md +0 -0
  82. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/deploy.sh +0 -0
  83. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/images/babeldoc-banner.png +0 -0
  84. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.png +0 -0
  85. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/images/babeldoc-big-logo-darkmode-with-transparent-background.svg +0 -0
  86. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/images/babeldoc-big-logo-with-transparent-background.png +0 -0
  87. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/images/babeldoc-big-logo-with-transparent-background.svg +0 -0
  88. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/images/babeldoc-big-logo.png +0 -0
  89. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/images/babeldoc-contributor_reward_example.png +0 -0
  90. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/images/babeldoc-preview.gif +0 -0
  91. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/images/babeldoc-small-logo-with-transparent-background.png +0 -0
  92. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/images/babeldoc-small-logo-with-transparent-background.svg +0 -0
  93. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/images/babeldoc-small-logo.png +0 -0
  94. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/index.md +0 -0
  95. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/intro-to-pdf-object.md +0 -0
  96. {babeldoc-0.2.33 → babeldoc-0.3.1}/docs/requirements.txt +0 -0
  97. {babeldoc-0.2.33 → babeldoc-0.3.1}/mkdocs.yml +0 -0
  98. {babeldoc-0.2.33 → babeldoc-0.3.1}/tests/test_translation_config.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: BabelDOC
3
- Version: 0.2.33
3
+ Version: 0.3.1
4
4
  Summary: Yet Another Document Translator
5
5
  Project-URL: Homepage, https://github.com/funstory-ai/BabelDOC
6
6
  Project-URL: Issues, https://github.com/funstory-ai/BabelDOC/issues
@@ -0,0 +1 @@
1
+ __version__ = "0.3.1"
@@ -3,7 +3,7 @@ import shutil
3
3
  import subprocess
4
4
  from pathlib import Path
5
5
 
6
- __version__ = "0.2.33"
6
+ __version__ = "0.3.1"
7
7
 
8
8
  CACHE_FOLDER = Path.home() / ".cache" / "babeldoc"
9
9
 
@@ -85,12 +85,14 @@ class PDFCreater:
85
85
  original_pdf_path: str,
86
86
  document: il_version_1.Document,
87
87
  translation_config: TranslationConfig,
88
+ mediabox_data: dict,
88
89
  ):
89
90
  self.original_pdf_path = original_pdf_path
90
91
  self.docs = document
91
92
  self.font_path = translation_config.font
92
93
  self.font_mapper = FontMapper(translation_config)
93
94
  self.translation_config = translation_config
95
+ self.mediabox_data = mediabox_data
94
96
 
95
97
  def render_graphic_state(
96
98
  self,
@@ -636,6 +638,10 @@ class PDFCreater:
636
638
 
637
639
  return False
638
640
 
641
+ def restore_media_box(self, doc: pymupdf.Document, mediabox_data: dict) -> None:
642
+ for pageno, mediabox in mediabox_data.items():
643
+ doc.xref_set_key(doc[pageno].xref, "MediaBox", mediabox[1])
644
+
639
645
  def write(
640
646
  self, translation_config: TranslationConfig, check_font_exists: bool = False
641
647
  ) -> TranslateResult:
@@ -776,6 +782,7 @@ class PDFCreater:
776
782
  )
777
783
 
778
784
  pbar.advance()
785
+ self.restore_media_box(pdf, self.mediabox_data)
779
786
  with self.translation_config.progress_monitor.stage_start(
780
787
  SAVE_PDF_STAGE_NAME,
781
788
  2,
@@ -181,6 +181,7 @@ class ILTranslator:
181
181
  for font in xobj.pdf_font:
182
182
  page_xobj_font_map[xobj.xobj_id][font.font_id] = font
183
183
  # self.translate_paragraph(paragraph, pbar,tracker.new_paragraph(), page_font_map, page_xobj_font_map)
184
+ paragraph_token_count = self.calc_token_count(paragraph.unicode)
184
185
  executor.submit(
185
186
  self.translate_paragraph,
186
187
  paragraph,
@@ -188,7 +189,8 @@ class ILTranslator:
188
189
  tracker.new_paragraph(),
189
190
  page_font_map,
190
191
  page_xobj_font_map,
191
- priority=1048576 - self.calc_token_count(paragraph.unicode),
192
+ priority=1048576 - paragraph_token_count,
193
+ paragraph_token_count=paragraph_token_count,
192
194
  )
193
195
 
194
196
  class TranslateInput:
@@ -597,6 +599,7 @@ class ILTranslator:
597
599
  tracker: ParagraphTranslateTracker = None,
598
600
  page_font_map: dict[str, PdfFont] = None,
599
601
  xobj_font_map: dict[int, dict[str, PdfFont]] = None,
602
+ paragraph_token_count: int = 0,
600
603
  ):
601
604
  """Translate a paragraph using pre and post processing functions."""
602
605
  self.translation_config.raise_if_cancelled()
@@ -610,7 +613,10 @@ class ILTranslator:
610
613
  return
611
614
 
612
615
  # Perform translation
613
- translated_text = self.translate_engine.translate(text)
616
+ translated_text = self.translate_engine.translate(
617
+ text,
618
+ rate_limit_params={"paragraph_token_count": paragraph_token_count},
619
+ )
614
620
  translated_text = re.sub(r"[. 。…,]{20,}", ".", translated_text)
615
621
 
616
622
  # Post-translation processing
@@ -179,6 +179,7 @@ class ILTranslatorLLMOnly:
179
179
  self.translation_config.shared_context_cross_split_part.recent_title_paragraph,
180
180
  executor2,
181
181
  priority=1048576 - total_token_count,
182
+ paragraph_token_count=total_token_count,
182
183
  )
183
184
  paragraphs = []
184
185
  total_token_count = 0
@@ -194,6 +195,7 @@ class ILTranslatorLLMOnly:
194
195
  self.translation_config.shared_context_cross_split_part.recent_title_paragraph,
195
196
  executor2,
196
197
  priority=1048576 - total_token_count,
198
+ paragraph_token_count=total_token_count,
197
199
  )
198
200
 
199
201
  def translate_paragraph(
@@ -205,6 +207,7 @@ class ILTranslatorLLMOnly:
205
207
  title_paragraph: PdfParagraph | None = None,
206
208
  local_title_paragraph: PdfParagraph | None = None,
207
209
  executor: PriorityThreadPoolExecutor | None = None,
210
+ paragraph_token_count: int = 0,
208
211
  ):
209
212
  """Translate a paragraph using pre and post processing functions."""
210
213
  self.translation_config.raise_if_cancelled()
@@ -293,7 +296,10 @@ class ILTranslatorLLMOnly:
293
296
  llm_input.append(prompt_template)
294
297
 
295
298
  final_input = "\n".join(llm_input).strip()
296
- llm_output = self.translate_engine.llm_translate(final_input)
299
+ llm_output = self.translate_engine.llm_translate(
300
+ final_input,
301
+ rate_limit_params={"paragraph_token_count": paragraph_token_count},
302
+ )
297
303
  llm_output = llm_output.strip()
298
304
 
299
305
  llm_output = self._clean_json_output(llm_output)
@@ -364,6 +370,9 @@ class ILTranslatorLLMOnly:
364
370
  logger.warning(
365
371
  f"Fallback to simple translation. paragraph id: {inputs[id_][2].debug_id}"
366
372
  )
373
+ paragraph_token_count = self.calc_token_count(
374
+ inputs[id_][2].unicode
375
+ )
367
376
  executor.submit(
368
377
  self.il_translator.translate_paragraph,
369
378
  inputs[id_][2],
@@ -371,7 +380,8 @@ class ILTranslatorLLMOnly:
371
380
  inputs[id_][3],
372
381
  page_font_map,
373
382
  xobj_font_map,
374
- priority=1048576 - self.calc_token_count(paragraph.unicode),
383
+ priority=1048576 - paragraph_token_count,
384
+ paragraph_token_count=paragraph_token_count,
375
385
  )
376
386
 
377
387
  except Exception as e:
@@ -385,6 +395,7 @@ class ILTranslatorLLMOnly:
385
395
  tracker = batch_paragraph.trackers[i]
386
396
  if paragraph.debug_id is None:
387
397
  continue
398
+ paragraph_token_count = self.calc_token_count(paragraph.unicode)
388
399
  executor.submit(
389
400
  self.il_translator.translate_paragraph,
390
401
  paragraph,
@@ -392,7 +403,8 @@ class ILTranslatorLLMOnly:
392
403
  tracker,
393
404
  page_font_map,
394
405
  xobj_font_map,
395
- priority=1048576 - self.calc_token_count(paragraph.unicode),
406
+ priority=1048576 - paragraph_token_count,
407
+ paragraph_token_count=paragraph_token_count,
396
408
  )
397
409
 
398
410
  def _clean_json_output(self, llm_output: str) -> str:
@@ -104,7 +104,7 @@ class BaseTranslator(ABC):
104
104
  """
105
105
  self.cache.add_params(k, v)
106
106
 
107
- def translate(self, text, ignore_cache=False):
107
+ def translate(self, text, ignore_cache=False, rate_limit_params: dict = None):
108
108
  """
109
109
  Translate the text, and the other part should call this method.
110
110
  :param text: text to translate
@@ -117,12 +117,12 @@ class BaseTranslator(ABC):
117
117
  self.translate_cache_call_count += 1
118
118
  return cache
119
119
  _translate_rate_limiter.wait()
120
- translation = self.do_translate(text)
120
+ translation = self.do_translate(text, rate_limit_params)
121
121
  if not (self.ignore_cache or ignore_cache):
122
122
  self.cache.set(text, translation)
123
123
  return translation
124
124
 
125
- def llm_translate(self, text, ignore_cache=False):
125
+ def llm_translate(self, text, ignore_cache=False, rate_limit_params: dict = None):
126
126
  """
127
127
  Translate the text, and the other part should call this method.
128
128
  :param text: text to translate
@@ -135,13 +135,13 @@ class BaseTranslator(ABC):
135
135
  self.translate_cache_call_count += 1
136
136
  return cache
137
137
  _translate_rate_limiter.wait()
138
- translation = self.do_llm_translate(text)
138
+ translation = self.do_llm_translate(text, rate_limit_params)
139
139
  if not (self.ignore_cache or ignore_cache):
140
140
  self.cache.set(text, translation)
141
141
  return translation
142
142
 
143
143
  @abstractmethod
144
- def do_llm_translate(self, text):
144
+ def do_llm_translate(self, text, rate_limit_params: dict = None):
145
145
  """
146
146
  Actual translate text, override this method
147
147
  :param text: text to translate
@@ -150,7 +150,7 @@ class BaseTranslator(ABC):
150
150
  raise NotImplementedError
151
151
 
152
152
  @abstractmethod
153
- def do_translate(self, text):
153
+ def do_translate(self, text, rate_limit_params: dict = None):
154
154
  """
155
155
  Actual translate text, override this method
156
156
  :param text: text to translate
@@ -209,7 +209,7 @@ class OpenAITranslator(BaseTranslator):
209
209
  f"(Attempt {retry_state.attempt_number}/100)"
210
210
  ),
211
211
  )
212
- def do_translate(self, text) -> str:
212
+ def do_translate(self, text, rate_limit_params: dict = None) -> str:
213
213
  response = self.client.chat.completions.create(
214
214
  model=self.model,
215
215
  **self.options,
@@ -241,7 +241,7 @@ class OpenAITranslator(BaseTranslator):
241
241
  f"(Attempt {retry_state.attempt_number}/100)"
242
242
  ),
243
243
  )
244
- def do_llm_translate(self, text):
244
+ def do_llm_translate(self, text, rate_limit_params: dict = None):
245
245
  if text is None:
246
246
  return None
247
247
 
@@ -525,6 +525,17 @@ def do_translate(
525
525
  translation_config.cleanup_temp_files()
526
526
 
527
527
 
528
+ def fix_media_box(doc: Document) -> None:
529
+ mediabox_data = {}
530
+ for page in doc:
531
+ if page.mediabox.x0 != 0 or page.mediabox.y0 != 0:
532
+ x1 = page.mediabox.x1
533
+ y1 = page.mediabox.y1
534
+ mediabox_data[page.number] = doc.xref_get_key(page.xref, "MediaBox")
535
+ doc.xref_set_key(page.xref, "MediaBox", f"[0 0 {x1} {y1}]")
536
+ return mediabox_data
537
+
538
+
528
539
  def _do_translate_single(
529
540
  pm: ProgressMonitor,
530
541
  translation_config: TranslationConfig,
@@ -541,6 +552,7 @@ def _do_translate_single(
541
552
  # Fix null xref in PDF file
542
553
  fix_null_xref(doc_input)
543
554
  doc_input.save(output_path, expand=True, pretty=True)
555
+ del doc_input
544
556
 
545
557
  # Continue with original processing
546
558
  temp_pdf_path = translation_config.get_working_file_path("input.pdf")
@@ -550,6 +562,8 @@ def _do_translate_single(
550
562
  # Fix null xref in PDF file
551
563
  fix_null_xref(doc_pdf2zh)
552
564
 
565
+ mediabox_data = fix_media_box(doc_pdf2zh)
566
+
553
567
  for page in doc_pdf2zh:
554
568
  page.insert_font(resfont, None)
555
569
 
@@ -677,7 +691,7 @@ def _do_translate_single(
677
691
  translation_config.get_working_file_path("typsetting.json"),
678
692
  )
679
693
 
680
- pdf_creater = PDFCreater(temp_pdf_path, docs, translation_config)
694
+ pdf_creater = PDFCreater(temp_pdf_path, docs, translation_config, mediabox_data)
681
695
  result = pdf_creater.write(translation_config)
682
696
  try:
683
697
  if mono_watermark_first_page_doc_bytes:
@@ -23,7 +23,7 @@ from babeldoc.translation_config import TranslationConfig
23
23
  from babeldoc.translation_config import WatermarkOutputMode
24
24
 
25
25
  logger = logging.getLogger(__name__)
26
- __version__ = "0.2.33"
26
+ __version__ = "0.3.1"
27
27
 
28
28
 
29
29
  def create_parser():
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "BabelDOC"
3
- version = "0.2.33"
3
+ version = "0.3.1"
4
4
  description = "Yet Another Document Translator"
5
5
  license = "AGPL-3.0"
6
6
  readme = "README.md"
@@ -148,7 +148,7 @@ pythonpath = [".", "src"]
148
148
  testpaths = ["tests"]
149
149
 
150
150
  [bumpver]
151
- current_version = "0.2.33"
151
+ current_version = "0.3.1"
152
152
  version_pattern = "MAJOR.MINOR.PATCH[.PYTAGNUM]"
153
153
 
154
154
  [bumpver.file_patterns]
@@ -48,7 +48,7 @@ wheels = [
48
48
 
49
49
  [[package]]
50
50
  name = "babeldoc"
51
- version = "0.2.33"
51
+ version = "0.3.1"
52
52
  source = { editable = "." }
53
53
  dependencies = [
54
54
  { name = "bitstring" },
@@ -1 +0,0 @@
1
- __version__ = "0.2.33"
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