改用katex进行渲染,支持离线渲染
This commit is contained in:
211
.idea/workspace.xml
generated
211
.idea/workspace.xml
generated
@@ -5,9 +5,16 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="6b18b44a-df57-4212-a857-9e291ebe5dd2" name="更改" comment="">
|
<list default="true" id="6b18b44a-df57-4212-a857-9e291ebe5dd2" name="更改" comment="">
|
||||||
|
<change afterPath="$PROJECT_DIR$/docutranslate/static/autoRender.js" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/docutranslate/static/katex.css" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/docutranslate/static/katex.js" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/docutranslate/__init__.py" beforeDir="false" afterPath="$PROJECT_DIR$/docutranslate/__init__.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/docutranslate/__init__.py" beforeDir="false" afterPath="$PROJECT_DIR$/docutranslate/__init__.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/docutranslate/app.py" beforeDir="false" afterPath="$PROJECT_DIR$/docutranslate/app.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/docutranslate/static/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/docutranslate/static/index.html" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/docutranslate/template/markdown.html" beforeDir="false" afterPath="$PROJECT_DIR$/docutranslate/template/markdown.html" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/docutranslate/translater.py" beforeDir="false" afterPath="$PROJECT_DIR$/docutranslate/translater.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/docutranslate/translater.py" beforeDir="false" afterPath="$PROJECT_DIR$/docutranslate/translater.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/requirements.txt" beforeDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@@ -17,10 +24,10 @@
|
|||||||
<component name="FileTemplateManagerImpl">
|
<component name="FileTemplateManagerImpl">
|
||||||
<option name="RECENT_TEMPLATES">
|
<option name="RECENT_TEMPLATES">
|
||||||
<list>
|
<list>
|
||||||
<option value="CSS File" />
|
|
||||||
<option value="JavaScript File" />
|
|
||||||
<option value="Python Script" />
|
<option value="Python Script" />
|
||||||
<option value="HTML File" />
|
<option value="HTML File" />
|
||||||
|
<option value="CSS File" />
|
||||||
|
<option value="JavaScript File" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
@@ -38,62 +45,63 @@
|
|||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
<option name="showLibraryContents" value="true" />
|
<option name="showLibraryContents" value="true" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent">{
|
<component name="PropertiesComponent"><![CDATA[{
|
||||||
"keyToString": {
|
"keyToString": {
|
||||||
"DefaultHtmlFileTemplate": "HTML File",
|
"DefaultHtmlFileTemplate": "HTML File",
|
||||||
"JavaScript 调试.output.html (1).executor": "Run",
|
"JavaScript 调试.output.html (1).executor": "Run",
|
||||||
"JavaScript 调试.output.html.executor": "Run",
|
"JavaScript 调试.output.html.executor": "Run",
|
||||||
"JavaScript 调试.regex.md_中文.html.executor": "Run",
|
"JavaScript 调试.regex.md_中文.html.executor": "Run",
|
||||||
"JavaScript 调试.regex_中文.html.executor": "Run",
|
"JavaScript 调试.regex_中文.html.executor": "Run",
|
||||||
"JavaScript 调试.test.html.executor": "Run",
|
"JavaScript 调试.test.html.executor": "Run",
|
||||||
"JavaScript 调试.test2.html.executor": "Run",
|
"JavaScript 调试.test2.html.executor": "Run",
|
||||||
"JavaScript 调试.test2_英文.html.executor": "Run",
|
"JavaScript 调试.test2_英文.html.executor": "Run",
|
||||||
"JavaScript 调试.test4-1_中文.html.executor": "Run",
|
"JavaScript 调试.test4-1_中文.html.executor": "Run",
|
||||||
"JavaScript 调试.互联网认证授权机制.html.executor": "Run",
|
"JavaScript 调试.互联网认证授权机制.html.executor": "Run",
|
||||||
"JavaScript 调试.互联网认证授权机制_英文.html.executor": "Run",
|
"JavaScript 调试.互联网认证授权机制_英文.html.executor": "Run",
|
||||||
"JavaScript 调试.毕业论文_英文.html.executor": "Run",
|
"JavaScript 调试.毕业论文_英文.html.executor": "Run",
|
||||||
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
||||||
"Python 测试.Python 测试 (markdown_mask.py 内).executor": "Run",
|
"Python 测试.Python 测试 (markdown_mask.py 内).executor": "Run",
|
||||||
"Python 测试.markdown_mask.Test.test_basic_link_masking 的 Python 测试.executor": "Run",
|
"Python 测试.markdown_mask.Test.test_basic_link_masking 的 Python 测试.executor": "Run",
|
||||||
"Python 测试.pytest (test_html.py 内).executor": "Run",
|
"Python 测试.pytest (test_html.py 内).executor": "Run",
|
||||||
"Python.1test.executor": "Run",
|
"Python.1test.executor": "Run",
|
||||||
"Python.2test2 (1).executor": "Run",
|
"Python.2test2 (1).executor": "Run",
|
||||||
"Python.PDFtranslater (1).executor": "Run",
|
"Python.3testhtml.executor": "Run",
|
||||||
"Python.PDFtranslater (2).executor": "Run",
|
"Python.PDFtranslater (1).executor": "Run",
|
||||||
"Python.agent.executor": "Debug",
|
"Python.PDFtranslater (2).executor": "Run",
|
||||||
"Python.agent_utils.executor": "Run",
|
"Python.agent.executor": "Debug",
|
||||||
"Python.app (1).executor": "Run",
|
"Python.agent_utils.executor": "Run",
|
||||||
"Python.app.executor": "Run",
|
"Python.app (1).executor": "Run",
|
||||||
"Python.app2.executor": "Run",
|
"Python.app.executor": "Run",
|
||||||
"Python.app_test (1).executor": "Run",
|
"Python.app2.executor": "Run",
|
||||||
"Python.convert.executor": "Run",
|
"Python.app_test (1).executor": "Run",
|
||||||
"Python.converter_docling.executor": "Run",
|
"Python.convert.executor": "Run",
|
||||||
"Python.converter_mineru.executor": "Run",
|
"Python.converter_docling.executor": "Run",
|
||||||
"Python.markdown_splitter.executor": "Debug",
|
"Python.converter_mineru.executor": "Run",
|
||||||
"Python.markdown_utils.executor": "Run",
|
"Python.markdown_splitter.executor": "Debug",
|
||||||
"Python.test.executor": "Run",
|
"Python.markdown_utils.executor": "Run",
|
||||||
"Python.test1.executor": "Run",
|
"Python.test.executor": "Run",
|
||||||
"Python.test2.executor": "Run",
|
"Python.test1.executor": "Run",
|
||||||
"Python.test3.executor": "Run",
|
"Python.test2.executor": "Run",
|
||||||
"Python.test4.executor": "Run",
|
"Python.test3.executor": "Run",
|
||||||
"Python.testhtml.executor": "Run",
|
"Python.test4.executor": "Run",
|
||||||
"Python.translater.executor": "Run",
|
"Python.testhtml.executor": "Run",
|
||||||
"Python.切分测试.executor": "Run",
|
"Python.translater.executor": "Run",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
"Python.切分测试.executor": "Run",
|
||||||
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager": "true",
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
"RunOnceActivity.git.unshallow": "true",
|
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager": "true",
|
||||||
"git-widget-placeholder": "main",
|
"RunOnceActivity.git.unshallow": "true",
|
||||||
"last_opened_file_path": "C:/Users/jxgm/Desktop/translate/docutranslate",
|
"git-widget-placeholder": "dev",
|
||||||
"list.type.of.created.stylesheet": "CSS",
|
"last_opened_file_path": "C:/Users/jxgm/Desktop/translate/docutranslate",
|
||||||
"node.js.detected.package.eslint": "true",
|
"list.type.of.created.stylesheet": "CSS",
|
||||||
"node.js.detected.package.tslint": "true",
|
"node.js.detected.package.eslint": "true",
|
||||||
"node.js.selected.package.eslint": "(autodetect)",
|
"node.js.detected.package.tslint": "true",
|
||||||
"node.js.selected.package.tslint": "(autodetect)",
|
"node.js.selected.package.eslint": "(autodetect)",
|
||||||
"nodejs_package_manager_path": "npm",
|
"node.js.selected.package.tslint": "(autodetect)",
|
||||||
"settings.editor.selected.configurable": "preferences.pluginManager",
|
"nodejs_package_manager_path": "npm",
|
||||||
"vue.rearranger.settings.migration": "true"
|
"settings.editor.selected.configurable": "preferences.pluginManager",
|
||||||
|
"vue.rearranger.settings.migration": "true"
|
||||||
}
|
}
|
||||||
}</component>
|
}]]></component>
|
||||||
<component name="RecentsManager">
|
<component name="RecentsManager">
|
||||||
<key name="CopyFile.RECENT_KEYS">
|
<key name="CopyFile.RECENT_KEYS">
|
||||||
<recent name="C:\Users\jxgm\Desktop\translate\docutranslate" />
|
<recent name="C:\Users\jxgm\Desktop\translate\docutranslate" />
|
||||||
@@ -110,7 +118,7 @@
|
|||||||
<recent name="C:\Users\jxgm\Desktop\FileTranslate\dist\app" />
|
<recent name="C:\Users\jxgm\Desktop\FileTranslate\dist\app" />
|
||||||
</key>
|
</key>
|
||||||
</component>
|
</component>
|
||||||
<component name="RunManager" selected="Python.2test2 (1)">
|
<component name="RunManager" selected="Python.app_test (1)">
|
||||||
<configuration default="true" type="DjangoTestsConfigurationType">
|
<configuration default="true" type="DjangoTestsConfigurationType">
|
||||||
<module name="filetranslate" />
|
<module name="filetranslate" />
|
||||||
<option name="ENV_FILES" value="" />
|
<option name="ENV_FILES" value="" />
|
||||||
@@ -273,27 +281,7 @@
|
|||||||
<option name="OPTIONS" value="" />
|
<option name="OPTIONS" value="" />
|
||||||
<method v="2" />
|
<method v="2" />
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration name="1test" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
<configuration name="test2.html" type="JavascriptDebugType" temporary="true" nameIsGenerated="true" uri="http://localhost:63342/filetranslate/tests/test2.html" useBuiltInWebServerPort="true">
|
||||||
<module name="docutranslate" />
|
|
||||||
<option name="ENV_FILES" value="" />
|
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
|
||||||
<option name="PARENT_ENVS" value="true" />
|
|
||||||
<envs>
|
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
|
||||||
</envs>
|
|
||||||
<option name="SDK_HOME" value="" />
|
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/tests" />
|
|
||||||
<option name="IS_MODULE_SDK" value="true" />
|
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
|
||||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
|
||||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
|
||||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tests/1test.py" />
|
|
||||||
<option name="PARAMETERS" value="" />
|
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
|
||||||
<option name="EMULATE_TERMINAL" value="false" />
|
|
||||||
<option name="MODULE_MODE" value="false" />
|
|
||||||
<option name="REDIRECT_INPUT" value="false" />
|
|
||||||
<option name="INPUT_FILE" value="" />
|
|
||||||
<method v="2" />
|
<method v="2" />
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration name="2test2 (1)" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
<configuration name="2test2 (1)" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||||
@@ -319,6 +307,29 @@
|
|||||||
<option name="INPUT_FILE" value="" />
|
<option name="INPUT_FILE" value="" />
|
||||||
<method v="2" />
|
<method v="2" />
|
||||||
</configuration>
|
</configuration>
|
||||||
|
<configuration name="3testhtml" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||||
|
<module name="docutranslate" />
|
||||||
|
<option name="ENV_FILES" value="" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="PARENT_ENVS" value="true" />
|
||||||
|
<envs>
|
||||||
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
|
</envs>
|
||||||
|
<option name="SDK_HOME" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/tests" />
|
||||||
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||||
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/tests/3testhtml.py" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
|
<option name="MODULE_MODE" value="false" />
|
||||||
|
<option name="REDIRECT_INPUT" value="false" />
|
||||||
|
<option name="INPUT_FILE" value="" />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
<configuration default="true" type="PythonConfigurationType" factoryName="Python">
|
<configuration default="true" type="PythonConfigurationType" factoryName="Python">
|
||||||
<module name="filetranslate" />
|
<module name="filetranslate" />
|
||||||
<option name="ENV_FILES" value="" />
|
<option name="ENV_FILES" value="" />
|
||||||
@@ -365,7 +376,7 @@
|
|||||||
<option name="INPUT_FILE" value="" />
|
<option name="INPUT_FILE" value="" />
|
||||||
<method v="2" />
|
<method v="2" />
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration name="converter_docling" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
<configuration name="translater" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||||
<module name="docutranslate" />
|
<module name="docutranslate" />
|
||||||
<option name="ENV_FILES" value="" />
|
<option name="ENV_FILES" value="" />
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
@@ -374,35 +385,12 @@
|
|||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="" />
|
<option name="SDK_HOME" value="" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/docutranslate/converter" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/docutranslate" />
|
||||||
<option name="IS_MODULE_SDK" value="true" />
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
||||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/docutranslate/converter/converter_docling.py" />
|
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/docutranslate/translater.py" />
|
||||||
<option name="PARAMETERS" value="" />
|
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
|
||||||
<option name="EMULATE_TERMINAL" value="false" />
|
|
||||||
<option name="MODULE_MODE" value="false" />
|
|
||||||
<option name="REDIRECT_INPUT" value="false" />
|
|
||||||
<option name="INPUT_FILE" value="" />
|
|
||||||
<method v="2" />
|
|
||||||
</configuration>
|
|
||||||
<configuration name="converter_mineru" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
|
||||||
<module name="docutranslate" />
|
|
||||||
<option name="ENV_FILES" value="" />
|
|
||||||
<option name="INTERPRETER_OPTIONS" value="" />
|
|
||||||
<option name="PARENT_ENVS" value="true" />
|
|
||||||
<envs>
|
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
|
||||||
</envs>
|
|
||||||
<option name="SDK_HOME" value="" />
|
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/docutranslate/converter" />
|
|
||||||
<option name="IS_MODULE_SDK" value="true" />
|
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
|
||||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
|
||||||
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
|
||||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/docutranslate/converter/converter_mineru.py" />
|
|
||||||
<option name="PARAMETERS" value="" />
|
<option name="PARAMETERS" value="" />
|
||||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||||
<option name="EMULATE_TERMINAL" value="false" />
|
<option name="EMULATE_TERMINAL" value="false" />
|
||||||
@@ -510,11 +498,11 @@
|
|||||||
</configuration>
|
</configuration>
|
||||||
<recent_temporary>
|
<recent_temporary>
|
||||||
<list>
|
<list>
|
||||||
<item itemvalue="Python.2test2 (1)" />
|
|
||||||
<item itemvalue="Python.app_test (1)" />
|
<item itemvalue="Python.app_test (1)" />
|
||||||
<item itemvalue="Python.1test" />
|
<item itemvalue="JavaScript 调试.test2.html" />
|
||||||
<item itemvalue="Python.converter_docling" />
|
<item itemvalue="Python.3testhtml" />
|
||||||
<item itemvalue="Python.converter_mineru" />
|
<item itemvalue="Python.translater" />
|
||||||
|
<item itemvalue="Python.2test2 (1)" />
|
||||||
</list>
|
</list>
|
||||||
</recent_temporary>
|
</recent_temporary>
|
||||||
</component>
|
</component>
|
||||||
@@ -641,13 +629,14 @@
|
|||||||
</breakpoint-manager>
|
</breakpoint-manager>
|
||||||
</component>
|
</component>
|
||||||
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
||||||
<SUITE FILE_PATH="coverage/filetranslate$app_test__1_.coverage" NAME="app_test (1) 覆盖结果" MODIFIED="1748235160651" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tests" />
|
<SUITE FILE_PATH="coverage/filetranslate$app_test__1_.coverage" NAME="app_test (1) 覆盖结果" MODIFIED="1748268183700" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tests" />
|
||||||
<SUITE FILE_PATH="coverage/filetranslate$test.coverage" NAME="test 覆盖结果" MODIFIED="1747472297913" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tests" />
|
<SUITE FILE_PATH="coverage/filetranslate$test.coverage" NAME="test 覆盖结果" MODIFIED="1747472297913" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tests" />
|
||||||
<SUITE FILE_PATH="coverage/filetranslate$convert.coverage" NAME="convert 覆盖结果" MODIFIED="1746963490689" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate/utils" />
|
<SUITE FILE_PATH="coverage/filetranslate$convert.coverage" NAME="convert 覆盖结果" MODIFIED="1746963490689" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate/utils" />
|
||||||
<SUITE FILE_PATH="coverage/PDFtranslate$PDFtranslater__1_.coverage" NAME="PDFtranslater (1) 覆盖结果" MODIFIED="1746633258205" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/pdftranslate_packages" />
|
<SUITE FILE_PATH="coverage/PDFtranslate$PDFtranslater__1_.coverage" NAME="PDFtranslater (1) 覆盖结果" MODIFIED="1746633258205" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/pdftranslate_packages" />
|
||||||
<SUITE FILE_PATH="coverage/filetranslate$pytest__test_html_py__.coverage" NAME="pytest (test_html.py 内) 覆盖结果" MODIFIED="1747554037236" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tests" />
|
<SUITE FILE_PATH="coverage/filetranslate$pytest__test_html_py__.coverage" NAME="pytest (test_html.py 内) 覆盖结果" MODIFIED="1747554037236" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tests" />
|
||||||
<SUITE FILE_PATH="coverage/PDFtranslate$agent_utils.coverage" NAME="agent_utils 覆盖结果" MODIFIED="1746617703678" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/pdftranslate_packages/utils" />
|
<SUITE FILE_PATH="coverage/PDFtranslate$agent_utils.coverage" NAME="agent_utils 覆盖结果" MODIFIED="1746617703678" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/pdftranslate_packages/utils" />
|
||||||
<SUITE FILE_PATH="coverage/filetranslate$app2.coverage" NAME="app2 覆盖结果" MODIFIED="1747108180309" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate" />
|
<SUITE FILE_PATH="coverage/filetranslate$app2.coverage" NAME="app2 覆盖结果" MODIFIED="1747108180309" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate" />
|
||||||
|
<SUITE FILE_PATH="coverage/filetranslate$3testhtml.coverage" NAME="3testhtml 覆盖结果" MODIFIED="1748261775567" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tests" />
|
||||||
<SUITE FILE_PATH="coverage/filetranslate$app.coverage" NAME="app 覆盖结果" MODIFIED="1747448464521" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate" />
|
<SUITE FILE_PATH="coverage/filetranslate$app.coverage" NAME="app 覆盖结果" MODIFIED="1747448464521" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate" />
|
||||||
<SUITE FILE_PATH="coverage/PDFtranslate$markdown_splitter.coverage" NAME="markdown_splitter 覆盖结果" MODIFIED="1746599883603" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/pdftranslate_packages/utils" />
|
<SUITE FILE_PATH="coverage/PDFtranslate$markdown_splitter.coverage" NAME="markdown_splitter 覆盖结果" MODIFIED="1746599883603" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/pdftranslate_packages/utils" />
|
||||||
<SUITE FILE_PATH="coverage/filetranslate$converter_mineru.coverage" NAME="converter_mineru 覆盖结果" MODIFIED="1747726229881" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate/converter" />
|
<SUITE FILE_PATH="coverage/filetranslate$converter_mineru.coverage" NAME="converter_mineru 覆盖结果" MODIFIED="1747726229881" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate/converter" />
|
||||||
@@ -674,7 +663,7 @@
|
|||||||
<SUITE FILE_PATH="coverage/PDFtranslate$markdown_utils.coverage" NAME="markdown_utils 覆盖结果" MODIFIED="1746598797872" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/pdftranslate_packages/utils" />
|
<SUITE FILE_PATH="coverage/PDFtranslate$markdown_utils.coverage" NAME="markdown_utils 覆盖结果" MODIFIED="1746598797872" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/pdftranslate_packages/utils" />
|
||||||
<SUITE FILE_PATH="coverage/filetranslate$test2.coverage" NAME="test2 覆盖结果" MODIFIED="1747553897731" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tests" />
|
<SUITE FILE_PATH="coverage/filetranslate$test2.coverage" NAME="test2 覆盖结果" MODIFIED="1747553897731" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tests" />
|
||||||
<SUITE FILE_PATH="coverage/filetranslate$converter_paddle.coverage" NAME="converter_paddle 覆盖结果" MODIFIED="1747880336763" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate/converter" />
|
<SUITE FILE_PATH="coverage/filetranslate$converter_paddle.coverage" NAME="converter_paddle 覆盖结果" MODIFIED="1747880336763" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate/converter" />
|
||||||
<SUITE FILE_PATH="coverage/filetranslate$translater.coverage" NAME="translater 覆盖结果" MODIFIED="1746843159560" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate" />
|
<SUITE FILE_PATH="coverage/filetranslate$translater.coverage" NAME="translater 覆盖结果" MODIFIED="1748261247946" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate" />
|
||||||
<SUITE FILE_PATH="coverage/filetranslate$docling_utils.coverage" NAME="docling_utils 覆盖结果" MODIFIED="1747710836730" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate/utils" />
|
<SUITE FILE_PATH="coverage/filetranslate$docling_utils.coverage" NAME="docling_utils 覆盖结果" MODIFIED="1747710836730" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/docutranslate/utils" />
|
||||||
<SUITE FILE_PATH="coverage/docutranslate$app_test__1_.coverage" NAME="app_test (1) 覆盖结果" MODIFIED="1747743522496" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tests" />
|
<SUITE FILE_PATH="coverage/docutranslate$app_test__1_.coverage" NAME="app_test (1) 覆盖结果" MODIFIED="1747743522496" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/tests" />
|
||||||
<SUITE FILE_PATH="coverage/PDFtranslate$.coverage" NAME=" 覆盖结果" MODIFIED="1746588350286" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/decorator" />
|
<SUITE FILE_PATH="coverage/PDFtranslate$.coverage" NAME=" 覆盖结果" MODIFIED="1746588350286" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/decorator" />
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
__version__="0.2.27"
|
__version__="0.2.28"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ from pathlib import Path
|
|||||||
from typing import List, Dict, Any, Optional
|
from typing import List, Dict, Any, Optional
|
||||||
from urllib.parse import quote
|
from urllib.parse import quote
|
||||||
|
|
||||||
|
import httpx
|
||||||
import uvicorn
|
import uvicorn
|
||||||
from fastapi import FastAPI, File, Form, UploadFile, Request, HTTPException
|
from fastapi import FastAPI, File, Form, UploadFile, Request, HTTPException
|
||||||
from fastapi.responses import HTMLResponse, JSONResponse, StreamingResponse, FileResponse
|
from fastapi.responses import HTMLResponse, JSONResponse, StreamingResponse, FileResponse
|
||||||
@@ -131,7 +132,12 @@ async def _perform_translation(params: Dict[str, Any], file_contents: bytes, ori
|
|||||||
)
|
)
|
||||||
|
|
||||||
md_content = ft.export_to_markdown()
|
md_content = ft.export_to_markdown()
|
||||||
html_content = ft.export_to_html(title=current_state["original_filename_stem"])
|
try:
|
||||||
|
httpx.head("https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/contrib/auto-render.min.js",timeout=1)
|
||||||
|
html_content = ft.export_to_html(title=current_state["original_filename_stem"], cdn=True)
|
||||||
|
except TimeoutError:
|
||||||
|
translater_logger.info("无法连接cdn,使用本地js进行pdf渲染")
|
||||||
|
html_content = ft.export_to_html(title=current_state["original_filename_stem"], cdn=False)
|
||||||
end_time = time.time()
|
end_time = time.time()
|
||||||
duration = end_time - current_state["task_start_time"]
|
duration = end_time - current_state["task_start_time"]
|
||||||
|
|
||||||
|
|||||||
120
docutranslate/static/autoRender.js
Normal file
120
docutranslate/static/autoRender.js
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
!function (e, t) {
|
||||||
|
"object" == typeof exports && "object" == typeof module ? module.exports = t(require("katex")) : "function" == typeof define && define.amd ? define(["katex"], t) : "object" == typeof exports ? exports.renderMathInElement = t(require("katex")) : e.renderMathInElement = t(e.katex)
|
||||||
|
}("undefined" != typeof self ? self : this, (function (e) {
|
||||||
|
return function () {
|
||||||
|
"use strict";
|
||||||
|
var t = {
|
||||||
|
757: function (t) {
|
||||||
|
t.exports = e
|
||||||
|
}
|
||||||
|
}, n = {};
|
||||||
|
|
||||||
|
function r(e) {
|
||||||
|
var o = n[e];
|
||||||
|
if (void 0 !== o) return o.exports;
|
||||||
|
var i = n[e] = {exports: {}};
|
||||||
|
return t[e](i, i.exports, r), i.exports
|
||||||
|
}
|
||||||
|
|
||||||
|
r.n = function (e) {
|
||||||
|
var t = e && e.__esModule ? function () {
|
||||||
|
return e.default
|
||||||
|
} : function () {
|
||||||
|
return e
|
||||||
|
};
|
||||||
|
return r.d(t, {a: t}), t
|
||||||
|
}, r.d = function (e, t) {
|
||||||
|
for (var n in t) r.o(t, n) && !r.o(e, n) && Object.defineProperty(e, n, {enumerable: !0, get: t[n]})
|
||||||
|
}, r.o = function (e, t) {
|
||||||
|
return Object.prototype.hasOwnProperty.call(e, t)
|
||||||
|
};
|
||||||
|
var o = {};
|
||||||
|
r.d(o, {
|
||||||
|
default: function () {
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var i = r(757), a = r.n(i);
|
||||||
|
const l = function (e, t, n) {
|
||||||
|
let r = n, o = 0;
|
||||||
|
const i = e.length;
|
||||||
|
for (; r < t.length;) {
|
||||||
|
const n = t[r];
|
||||||
|
if (o <= 0 && t.slice(r, r + i) === e) return r;
|
||||||
|
"\\" === n ? r++ : "{" === n ? o++ : "}" === n && o--, r++
|
||||||
|
}
|
||||||
|
return -1
|
||||||
|
}, s = /^\\begin{/;
|
||||||
|
var d = function (e, t) {
|
||||||
|
let n;
|
||||||
|
const r = [],
|
||||||
|
o = new RegExp("(" + t.map((e => e.left.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&"))).join("|") + ")");
|
||||||
|
for (; n = e.search(o), -1 !== n;) {
|
||||||
|
n > 0 && (r.push({type: "text", data: e.slice(0, n)}), e = e.slice(n));
|
||||||
|
const o = t.findIndex((t => e.startsWith(t.left)));
|
||||||
|
if (n = l(t[o].right, e, t[o].left.length), -1 === n) break;
|
||||||
|
const i = e.slice(0, n + t[o].right.length), a = s.test(i) ? i : e.slice(t[o].left.length, n);
|
||||||
|
r.push({type: "math", data: a, rawData: i, display: t[o].display}), e = e.slice(n + t[o].right.length)
|
||||||
|
}
|
||||||
|
return "" !== e && r.push({type: "text", data: e}), r
|
||||||
|
};
|
||||||
|
const c = function (e, t) {
|
||||||
|
const n = d(e, t.delimiters);
|
||||||
|
if (1 === n.length && "text" === n[0].type) return null;
|
||||||
|
const r = document.createDocumentFragment();
|
||||||
|
for (let e = 0; e < n.length; e++) if ("text" === n[e].type) r.appendChild(document.createTextNode(n[e].data)); else {
|
||||||
|
const o = document.createElement("span");
|
||||||
|
let i = n[e].data;
|
||||||
|
t.displayMode = n[e].display;
|
||||||
|
try {
|
||||||
|
t.preProcess && (i = t.preProcess(i)), a().render(i, o, t)
|
||||||
|
} catch (o) {
|
||||||
|
if (!(o instanceof a().ParseError)) throw o;
|
||||||
|
t.errorCallback("KaTeX auto-render: Failed to parse `" + n[e].data + "` with ", o), r.appendChild(document.createTextNode(n[e].rawData));
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
r.appendChild(o)
|
||||||
|
}
|
||||||
|
return r
|
||||||
|
}, f = function (e, t) {
|
||||||
|
for (let n = 0; n < e.childNodes.length; n++) {
|
||||||
|
const r = e.childNodes[n];
|
||||||
|
if (3 === r.nodeType) {
|
||||||
|
let o = r.textContent, i = r.nextSibling, a = 0;
|
||||||
|
for (; i && i.nodeType === Node.TEXT_NODE;) o += i.textContent, i = i.nextSibling, a++;
|
||||||
|
const l = c(o, t);
|
||||||
|
if (l) {
|
||||||
|
for (let e = 0; e < a; e++) r.nextSibling.remove();
|
||||||
|
n += l.childNodes.length - 1, e.replaceChild(l, r)
|
||||||
|
} else n += a
|
||||||
|
} else if (1 === r.nodeType) {
|
||||||
|
const e = " " + r.className + " ";
|
||||||
|
-1 === t.ignoredTags.indexOf(r.nodeName.toLowerCase()) && t.ignoredClasses.every((t => -1 === e.indexOf(" " + t + " "))) && f(r, t)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var p = function (e, t) {
|
||||||
|
if (!e) throw new Error("No element provided to render");
|
||||||
|
const n = {};
|
||||||
|
for (const e in t) t.hasOwnProperty(e) && (n[e] = t[e]);
|
||||||
|
n.delimiters = n.delimiters || [{left: "$$", right: "$$", display: !0}, {
|
||||||
|
left: "\\(",
|
||||||
|
right: "\\)",
|
||||||
|
display: !1
|
||||||
|
}, {left: "\\begin{equation}", right: "\\end{equation}", display: !0}, {
|
||||||
|
left: "\\begin{align}",
|
||||||
|
right: "\\end{align}",
|
||||||
|
display: !0
|
||||||
|
}, {left: "\\begin{alignat}", right: "\\end{alignat}", display: !0}, {
|
||||||
|
left: "\\begin{gather}",
|
||||||
|
right: "\\end{gather}",
|
||||||
|
display: !0
|
||||||
|
}, {left: "\\begin{CD}", right: "\\end{CD}", display: !0}, {
|
||||||
|
left: "\\[",
|
||||||
|
right: "\\]",
|
||||||
|
display: !0
|
||||||
|
}], n.ignoredTags = n.ignoredTags || ["script", "noscript", "style", "textarea", "pre", "code", "option"], n.ignoredClasses = n.ignoredClasses || [], n.errorCallback = n.errorCallback || console.error, n.macros = n.macros || {}, f(e, n)
|
||||||
|
};
|
||||||
|
return o = o.default
|
||||||
|
}()
|
||||||
|
}));
|
||||||
@@ -699,7 +699,7 @@
|
|||||||
try {
|
try {
|
||||||
const response = await fetch("/meta")
|
const response = await fetch("/meta")
|
||||||
let meta = await response.json();
|
let meta = await response.json();
|
||||||
versionDisplay.textContent = `版本号${meta.version}`;
|
versionDisplay.textContent = `版本号:${meta.version}`;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.warn("获取版本号失败", error);
|
console.warn("获取版本号失败", error);
|
||||||
}
|
}
|
||||||
@@ -840,11 +840,7 @@
|
|||||||
return resp.text();
|
return resp.text();
|
||||||
})
|
})
|
||||||
.then(html => {
|
.then(html => {
|
||||||
let finalHtml = html;
|
const blob = new Blob([html], {type: 'text/html'});
|
||||||
if (!html.toLowerCase().includes('/static/pico.css')) {
|
|
||||||
finalHtml = `<link rel="stylesheet" href="/static/pico.css">\n<style>body{padding:1em;}</style>\n${html}`;
|
|
||||||
}
|
|
||||||
const blob = new Blob([finalHtml], {type: 'text/html'});
|
|
||||||
const blobUrl = URL.createObjectURL(blob);
|
const blobUrl = URL.createObjectURL(blob);
|
||||||
translatedPreviewFrame.src = blobUrl;
|
translatedPreviewFrame.src = blobUrl;
|
||||||
translatedPreviewFrame.onload = function () {
|
translatedPreviewFrame.onload = function () {
|
||||||
@@ -882,9 +878,6 @@
|
|||||||
})
|
})
|
||||||
.then(htmlContent => {
|
.then(htmlContent => {
|
||||||
let finalHtml = htmlContent;
|
let finalHtml = htmlContent;
|
||||||
if (!htmlContent.toLowerCase().includes('/static/pico.css')) {
|
|
||||||
finalHtml = `<link rel="stylesheet" href="/static/pico.css">\n<style>body{padding:1em; break-inside: avoid;}</style>\n${htmlContent}`;
|
|
||||||
}
|
|
||||||
iframe.onload = () => {
|
iframe.onload = () => {
|
||||||
iframe.onload = null;
|
iframe.onload = null;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
|||||||
1167
docutranslate/static/katex.css
Normal file
1167
docutranslate/static/katex.css
Normal file
File diff suppressed because it is too large
Load Diff
7738
docutranslate/static/katex.js
Normal file
7738
docutranslate/static/katex.js
Normal file
File diff suppressed because one or more lines are too long
@@ -4,36 +4,37 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>{{title}}</title>
|
<title>{{title}}</title>
|
||||||
{{pico}}
|
{{pico}}
|
||||||
|
{{katexCss}}
|
||||||
|
{{katexJs}}
|
||||||
|
{{autoRender}}
|
||||||
<style>
|
<style>
|
||||||
html {
|
html {
|
||||||
padding: 2vh 10vw;
|
padding: 2vh 10vw;
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
}
|
}
|
||||||
mjx-merror { display: none !important; }
|
|
||||||
</style>
|
</style>
|
||||||
<script>
|
|
||||||
MathJax = {
|
|
||||||
loader: {load: ['[tex]/ams']},
|
|
||||||
tex: {
|
|
||||||
inlineMath: [['$', '$'], ['\\(', '\\)']],
|
|
||||||
displayMath: [['$$', '$$'], ['\\[', '\\]']],
|
|
||||||
processEscapes: true,
|
|
||||||
packages: {'[+]': ['ams']}, // 启用AMS宏包
|
|
||||||
autoload: {color: [], colorv2: ['color']} // 颜色支持
|
|
||||||
},
|
|
||||||
options: {
|
|
||||||
renderActions: {
|
|
||||||
addMenu: [0, '', ''],
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
{{MathJax}}
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
{{markdown}}
|
{{markdown}}
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
|
renderMathInElement(document.body, {
|
||||||
|
delimiters: [
|
||||||
|
{left: '$$', right: '$$', display: true}, // 块级公式
|
||||||
|
{left: '\\[', right: '\\]', display: true}, // 块级公式
|
||||||
|
{left: '$', right: '$', display: false}, // 行内公式
|
||||||
|
{left: '\\(', right: '\\)', display: false} // 行内公式 (常用)
|
||||||
|
],
|
||||||
|
// • rendering keys, e.g.:
|
||||||
|
throwOnError: false
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
{{mermaid}}
|
{{mermaid}}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
securityLevel: 'loose',
|
securityLevel: 'loose',
|
||||||
|
|||||||
@@ -294,22 +294,24 @@ class FileTranslater:
|
|||||||
translater_logger.info(f"文件已写入{full_name.resolve()}")
|
translater_logger.info(f"文件已写入{full_name.resolve()}")
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def export_to_html(self, title="title") -> str:
|
def export_to_html(self, title="title", cdn=True) -> str:
|
||||||
markdowner = markdown2.Markdown(extras=['tables', 'fenced-code-blocks', 'mermaid', "code-friendly"])
|
markdowner = markdown2.Markdown(extras=['tables', 'fenced-code-blocks', 'mermaid', "code-friendly"])
|
||||||
# language=html
|
# language=html
|
||||||
pico=resource_path("static/pico.css")
|
pico = f"<style>{resource_path("static/pico.css").read_text(encoding='utf-8')}</style>"
|
||||||
html = resource_path("template/markdown.html")
|
html = resource_path("template/markdown.html").read_text(encoding='utf-8')
|
||||||
MathJax=resource_path( "static/MathJax.js")
|
katex_css = f"<style>{resource_path("static/katex.css").read_text(encoding='utf-8')}</style>" if not cdn else r"""<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/katex.min.css" integrity="sha384-5TcZemv2l/9On385z///+d7MSYlvIEw9FuZTIdZ14vJLqWphw7e7ZPuOiCHJcFCP" crossorigin="anonymous">"""
|
||||||
mermaid=resource_path( "static/mermaid.js")
|
katex_js = f"<script>{resource_path("static/katex.js").read_text(encoding='utf-8')}</script>" if not cdn else r"""<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/katex.min.js" integrity="sha384-cMkvdD8LoxVzGF/RPUKAcvmm49FQ0oxwDF3BGKtDXcEc+T1b2N+teh/OJfpU0jr6" crossorigin="anonymous"></script>"""
|
||||||
#TODO:实现MathJax本地化
|
auto_render = f'<script>{resource_path("static/autoRender.js").read_text(encoding='utf-8')}</script>' if not cdn else r"""<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/contrib/auto-render.min.js" integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh" crossorigin="anonymous"></script>"""
|
||||||
render = jinja2.Template(html.read_text()).render(
|
mermaid = f'<script>{resource_path("static/mermaid.js").read_text(encoding='utf-8')}</script>'
|
||||||
|
# TODO:实现MathJax本地化
|
||||||
|
render = jinja2.Template(html).render(
|
||||||
title=title,
|
title=title,
|
||||||
pico=f"<style>\n{pico.read_text()}\n</style>",
|
pico=pico,
|
||||||
# markdown=markdowner.convert(self.markdown),
|
katexCss=katex_css,
|
||||||
|
katexJs=katex_js,
|
||||||
|
autoRender=auto_render,
|
||||||
markdown=markdowner.convert(self.markdown.replace("\\", "\\\\")),
|
markdown=markdowner.convert(self.markdown.replace("\\", "\\\\")),
|
||||||
MathJax=r'<script src=" https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-mml-chtml.min.js "></script>',
|
mermaid=mermaid,
|
||||||
# MathJax=f'<script>\n{MathJax.read_text()}\n</script>',
|
|
||||||
mermaid=f"<script>\n{mermaid.read_text()}\n</script>",
|
|
||||||
)
|
)
|
||||||
return render
|
return render
|
||||||
|
|
||||||
|
|||||||
369
requirements.txt
369
requirements.txt
@@ -1,369 +0,0 @@
|
|||||||
# This file was autogenerated by uv via the following command:
|
|
||||||
# uv pip compile pyproject.toml -o requirements.txt
|
|
||||||
altgraph==0.17.4
|
|
||||||
# via pyinstaller
|
|
||||||
annotated-types==0.7.0
|
|
||||||
# via pydantic
|
|
||||||
anyio==4.9.0
|
|
||||||
# via
|
|
||||||
# httpx
|
|
||||||
# starlette
|
|
||||||
# watchfiles
|
|
||||||
attrs==25.3.0
|
|
||||||
# via
|
|
||||||
# jsonlines
|
|
||||||
# jsonschema
|
|
||||||
# referencing
|
|
||||||
beautifulsoup4==4.13.4
|
|
||||||
# via docling
|
|
||||||
certifi==2025.4.26
|
|
||||||
# via
|
|
||||||
# docling
|
|
||||||
# httpcore
|
|
||||||
# httpx
|
|
||||||
# requests
|
|
||||||
charset-normalizer==3.4.2
|
|
||||||
# via requests
|
|
||||||
click==8.1.8
|
|
||||||
# via
|
|
||||||
# docling
|
|
||||||
# rich-toolkit
|
|
||||||
# typer
|
|
||||||
# uvicorn
|
|
||||||
colorama==0.4.6
|
|
||||||
# via
|
|
||||||
# click
|
|
||||||
# tqdm
|
|
||||||
# uvicorn
|
|
||||||
dill==0.4.0
|
|
||||||
# via multiprocess
|
|
||||||
dnspython==2.7.0
|
|
||||||
# via email-validator
|
|
||||||
docling==2.33.0
|
|
||||||
# via docutranslate (pyproject.toml)
|
|
||||||
docling-core==2.31.1
|
|
||||||
# via
|
|
||||||
# docling
|
|
||||||
# docling-ibm-models
|
|
||||||
# docling-parse
|
|
||||||
docling-ibm-models==3.4.3
|
|
||||||
# via docling
|
|
||||||
docling-parse==4.0.1
|
|
||||||
# via docling
|
|
||||||
easyocr==1.7.2
|
|
||||||
# via docling
|
|
||||||
email-validator==2.2.0
|
|
||||||
# via fastapi
|
|
||||||
et-xmlfile==2.0.0
|
|
||||||
# via openpyxl
|
|
||||||
fastapi==0.115.12
|
|
||||||
# via docutranslate (pyproject.toml)
|
|
||||||
fastapi-cli==0.0.7
|
|
||||||
# via fastapi
|
|
||||||
filelock==3.18.0
|
|
||||||
# via
|
|
||||||
# huggingface-hub
|
|
||||||
# torch
|
|
||||||
# transformers
|
|
||||||
filetype==1.2.0
|
|
||||||
# via docling
|
|
||||||
fsspec==2025.5.0
|
|
||||||
# via
|
|
||||||
# huggingface-hub
|
|
||||||
# torch
|
|
||||||
h11==0.16.0
|
|
||||||
# via
|
|
||||||
# httpcore
|
|
||||||
# uvicorn
|
|
||||||
httpcore==1.0.9
|
|
||||||
# via httpx
|
|
||||||
httptools==0.6.4
|
|
||||||
# via uvicorn
|
|
||||||
httpx==0.28.1
|
|
||||||
# via
|
|
||||||
# docutranslate (pyproject.toml)
|
|
||||||
# fastapi
|
|
||||||
huggingface-hub==0.31.4
|
|
||||||
# via
|
|
||||||
# docling
|
|
||||||
# docling-ibm-models
|
|
||||||
# tokenizers
|
|
||||||
# transformers
|
|
||||||
idna==3.10
|
|
||||||
# via
|
|
||||||
# anyio
|
|
||||||
# email-validator
|
|
||||||
# httpx
|
|
||||||
# requests
|
|
||||||
imageio==2.37.0
|
|
||||||
# via scikit-image
|
|
||||||
jinja2==3.1.6
|
|
||||||
# via
|
|
||||||
# fastapi
|
|
||||||
# torch
|
|
||||||
jsonlines==3.1.0
|
|
||||||
# via docling-ibm-models
|
|
||||||
jsonref==1.1.0
|
|
||||||
# via docling-core
|
|
||||||
jsonschema==4.23.0
|
|
||||||
# via docling-core
|
|
||||||
jsonschema-specifications==2025.4.1
|
|
||||||
# via jsonschema
|
|
||||||
latex2mathml==3.78.0
|
|
||||||
# via docling-core
|
|
||||||
lazy-loader==0.4
|
|
||||||
# via scikit-image
|
|
||||||
lxml==5.4.0
|
|
||||||
# via
|
|
||||||
# docling
|
|
||||||
# python-docx
|
|
||||||
# python-pptx
|
|
||||||
markdown-it-py==3.0.0
|
|
||||||
# via rich
|
|
||||||
markdown2==2.5.3
|
|
||||||
# via docutranslate (pyproject.toml)
|
|
||||||
marko==2.1.3
|
|
||||||
# via docling
|
|
||||||
markupsafe==3.0.2
|
|
||||||
# via jinja2
|
|
||||||
mdurl==0.1.2
|
|
||||||
# via markdown-it-py
|
|
||||||
mpire==2.10.2
|
|
||||||
# via semchunk
|
|
||||||
mpmath==1.3.0
|
|
||||||
# via sympy
|
|
||||||
multiprocess==0.70.18
|
|
||||||
# via mpire
|
|
||||||
networkx==3.4.2
|
|
||||||
# via
|
|
||||||
# scikit-image
|
|
||||||
# torch
|
|
||||||
ninja==1.11.1.4
|
|
||||||
# via easyocr
|
|
||||||
numpy==2.2.6
|
|
||||||
# via
|
|
||||||
# docling-ibm-models
|
|
||||||
# easyocr
|
|
||||||
# imageio
|
|
||||||
# opencv-python-headless
|
|
||||||
# pandas
|
|
||||||
# safetensors
|
|
||||||
# scikit-image
|
|
||||||
# scipy
|
|
||||||
# shapely
|
|
||||||
# tifffile
|
|
||||||
# torchvision
|
|
||||||
# transformers
|
|
||||||
opencv-python-headless==4.11.0.86
|
|
||||||
# via
|
|
||||||
# docling-ibm-models
|
|
||||||
# easyocr
|
|
||||||
openpyxl==3.1.5
|
|
||||||
# via docling
|
|
||||||
packaging==25.0
|
|
||||||
# via
|
|
||||||
# huggingface-hub
|
|
||||||
# lazy-loader
|
|
||||||
# pyinstaller
|
|
||||||
# pyinstaller-hooks-contrib
|
|
||||||
# scikit-image
|
|
||||||
# transformers
|
|
||||||
pandas==2.2.3
|
|
||||||
# via
|
|
||||||
# docling
|
|
||||||
# docling-core
|
|
||||||
pefile==2023.2.7
|
|
||||||
# via pyinstaller
|
|
||||||
pillow==11.2.1
|
|
||||||
# via
|
|
||||||
# docling
|
|
||||||
# docling-core
|
|
||||||
# docling-ibm-models
|
|
||||||
# docling-parse
|
|
||||||
# easyocr
|
|
||||||
# imageio
|
|
||||||
# python-pptx
|
|
||||||
# scikit-image
|
|
||||||
# torchvision
|
|
||||||
pluggy==1.6.0
|
|
||||||
# via docling
|
|
||||||
pyclipper==1.3.0.post6
|
|
||||||
# via easyocr
|
|
||||||
pydantic==2.11.4
|
|
||||||
# via
|
|
||||||
# docling
|
|
||||||
# docling-core
|
|
||||||
# docling-ibm-models
|
|
||||||
# docling-parse
|
|
||||||
# fastapi
|
|
||||||
# pydantic-settings
|
|
||||||
pydantic-core==2.33.2
|
|
||||||
# via pydantic
|
|
||||||
pydantic-settings==2.9.1
|
|
||||||
# via docling
|
|
||||||
pygments==2.19.1
|
|
||||||
# via
|
|
||||||
# mpire
|
|
||||||
# rich
|
|
||||||
pyinstaller==6.13.0
|
|
||||||
# via docutranslate (pyproject.toml)
|
|
||||||
pyinstaller-hooks-contrib==2025.4
|
|
||||||
# via pyinstaller
|
|
||||||
pylatexenc==2.10
|
|
||||||
# via docling
|
|
||||||
pypdfium2==4.30.1
|
|
||||||
# via docling
|
|
||||||
python-bidi==0.6.6
|
|
||||||
# via easyocr
|
|
||||||
python-dateutil==2.9.0.post0
|
|
||||||
# via pandas
|
|
||||||
python-docx==1.1.2
|
|
||||||
# via docling
|
|
||||||
python-dotenv==1.1.0
|
|
||||||
# via
|
|
||||||
# pydantic-settings
|
|
||||||
# uvicorn
|
|
||||||
python-multipart==0.0.20
|
|
||||||
# via fastapi
|
|
||||||
python-pptx==1.0.2
|
|
||||||
# via docling
|
|
||||||
pytz==2025.2
|
|
||||||
# via pandas
|
|
||||||
pywin32==310
|
|
||||||
# via
|
|
||||||
# docling-parse
|
|
||||||
# mpire
|
|
||||||
pywin32-ctypes==0.2.3
|
|
||||||
# via pyinstaller
|
|
||||||
pyyaml==6.0.2
|
|
||||||
# via
|
|
||||||
# docling-core
|
|
||||||
# easyocr
|
|
||||||
# huggingface-hub
|
|
||||||
# transformers
|
|
||||||
# uvicorn
|
|
||||||
referencing==0.36.2
|
|
||||||
# via
|
|
||||||
# jsonschema
|
|
||||||
# jsonschema-specifications
|
|
||||||
regex==2024.11.6
|
|
||||||
# via transformers
|
|
||||||
requests==2.32.3
|
|
||||||
# via
|
|
||||||
# docling
|
|
||||||
# huggingface-hub
|
|
||||||
# transformers
|
|
||||||
rich==14.0.0
|
|
||||||
# via
|
|
||||||
# rich-toolkit
|
|
||||||
# typer
|
|
||||||
rich-toolkit==0.14.6
|
|
||||||
# via fastapi-cli
|
|
||||||
rpds-py==0.25.0
|
|
||||||
# via
|
|
||||||
# jsonschema
|
|
||||||
# referencing
|
|
||||||
rtree==1.4.0
|
|
||||||
# via docling
|
|
||||||
safetensors==0.5.3
|
|
||||||
# via
|
|
||||||
# docling-ibm-models
|
|
||||||
# transformers
|
|
||||||
scikit-image==0.25.2
|
|
||||||
# via easyocr
|
|
||||||
scipy==1.15.3
|
|
||||||
# via
|
|
||||||
# docling
|
|
||||||
# easyocr
|
|
||||||
# scikit-image
|
|
||||||
semchunk==2.2.2
|
|
||||||
# via docling-core
|
|
||||||
setuptools==80.8.0
|
|
||||||
# via
|
|
||||||
# pyinstaller
|
|
||||||
# pyinstaller-hooks-contrib
|
|
||||||
# torch
|
|
||||||
shapely==2.1.1
|
|
||||||
# via easyocr
|
|
||||||
shellingham==1.5.4
|
|
||||||
# via typer
|
|
||||||
six==1.17.0
|
|
||||||
# via python-dateutil
|
|
||||||
sniffio==1.3.1
|
|
||||||
# via anyio
|
|
||||||
soupsieve==2.7
|
|
||||||
# via beautifulsoup4
|
|
||||||
starlette==0.46.2
|
|
||||||
# via fastapi
|
|
||||||
sympy==1.14.0
|
|
||||||
# via torch
|
|
||||||
tabulate==0.9.0
|
|
||||||
# via
|
|
||||||
# docling-core
|
|
||||||
# docling-parse
|
|
||||||
tifffile==2025.5.10
|
|
||||||
# via scikit-image
|
|
||||||
tokenizers==0.21.1
|
|
||||||
# via transformers
|
|
||||||
torch==2.7.0
|
|
||||||
# via
|
|
||||||
# docling-ibm-models
|
|
||||||
# easyocr
|
|
||||||
# safetensors
|
|
||||||
# torchvision
|
|
||||||
torchvision==0.22.0
|
|
||||||
# via
|
|
||||||
# docling-ibm-models
|
|
||||||
# easyocr
|
|
||||||
tqdm==4.67.1
|
|
||||||
# via
|
|
||||||
# docling
|
|
||||||
# docling-ibm-models
|
|
||||||
# huggingface-hub
|
|
||||||
# mpire
|
|
||||||
# semchunk
|
|
||||||
# transformers
|
|
||||||
transformers==4.51.3
|
|
||||||
# via
|
|
||||||
# docutranslate (pyproject.toml)
|
|
||||||
# docling-core
|
|
||||||
# docling-ibm-models
|
|
||||||
typer==0.15.4
|
|
||||||
# via
|
|
||||||
# docling
|
|
||||||
# docling-core
|
|
||||||
# fastapi-cli
|
|
||||||
typing-extensions==4.13.2
|
|
||||||
# via
|
|
||||||
# anyio
|
|
||||||
# beautifulsoup4
|
|
||||||
# docling-core
|
|
||||||
# fastapi
|
|
||||||
# huggingface-hub
|
|
||||||
# pydantic
|
|
||||||
# pydantic-core
|
|
||||||
# python-docx
|
|
||||||
# python-pptx
|
|
||||||
# referencing
|
|
||||||
# rich-toolkit
|
|
||||||
# torch
|
|
||||||
# typer
|
|
||||||
# typing-inspection
|
|
||||||
typing-inspection==0.4.0
|
|
||||||
# via
|
|
||||||
# pydantic
|
|
||||||
# pydantic-settings
|
|
||||||
tzdata==2025.2
|
|
||||||
# via pandas
|
|
||||||
urllib3==2.4.0
|
|
||||||
# via requests
|
|
||||||
uvicorn==0.34.2
|
|
||||||
# via
|
|
||||||
# fastapi
|
|
||||||
# fastapi-cli
|
|
||||||
watchfiles==1.0.5
|
|
||||||
# via uvicorn
|
|
||||||
websockets==15.0.1
|
|
||||||
# via uvicorn
|
|
||||||
xlsxwriter==3.2.3
|
|
||||||
# via python-pptx
|
|
||||||
Reference in New Issue
Block a user