From 21c12d3b4529a7ea07ae884298da15870606b72b Mon Sep 17 00:00:00 2001 From: xunbu Date: Wed, 21 May 2025 11:02:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A9=BA=E7=99=BD=E5=88=86?= =?UTF-8?q?=E5=9D=97=E9=80=A0=E6=88=90=E7=BF=BB=E8=AF=91=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/workspace.xml | 17 +++--------- docutranslate/agents/agent.py | 1 + docutranslate/static/index.html | 34 +++++++++++++----------- docutranslate/utils/markdown_splitter.py | 22 +++++++++------ 4 files changed, 37 insertions(+), 37 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 1a0c10e..3a286b4 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -5,19 +5,10 @@ - - - - - - - - + - - - + @@ -631,7 +622,7 @@ - + diff --git a/docutranslate/agents/agent.py b/docutranslate/agents/agent.py index 24a9e89..b4f8d48 100644 --- a/docutranslate/agents/agent.py +++ b/docutranslate/agents/agent.py @@ -84,6 +84,7 @@ class Agent: result = response.json()["choices"][0]["message"]["content"] return result except httpx.HTTPStatusError as e: + print(f"prompt:{prompt}\nsystem_prompt:{system_prompt}") raise Exception(f"AI请求错误 (async): {e.response.status_code} - {e.response.text}") from e except httpx.RequestError as e: raise Exception(f"AI请求连接错误 (async): {e}") from e diff --git a/docutranslate/static/index.html b/docutranslate/static/index.html index 309ee7b..722159e 100644 --- a/docutranslate/static/index.html +++ b/docutranslate/static/index.html @@ -600,22 +600,24 @@ .then(htmlContent => { iframe.onload = () => { iframe.onload = null; - try { - const iframeWindow = iframe.contentWindow; - if (!iframeWindow) throw new Error("无法访问打印框架。"); - iframeWindow.document.title = currentFileName + '_translated.pdf'; - iframeWindow.focus(); - iframeWindow.print(); - } catch (err) { - console.error('打印PDF出错:', err); - statusMsg.textContent = '无法直接生成PDF。请预览HTML后,使用浏览器的打印功能 (Ctrl+P) 保存。'; - statusMsg.className = 'error-message'; - } finally { - setTimeout(() => { - downloadPdfBtn.disabled = false; - downloadPdfBtn.textContent = '下载 PDF'; - }, 2000); - } + setTimeout(() => { + try { + const iframeWindow = iframe.contentWindow; + if (!iframeWindow) throw new Error("无法访问打印框架。"); + iframeWindow.document.title = currentFileName + '_translated.pdf'; + iframeWindow.focus(); + iframeWindow.print(); + } catch (err) { + console.error('打印PDF出错:', err); + statusMsg.textContent = '无法直接生成PDF。请预览HTML后,使用浏览器的打印功能 (Ctrl+P) 保存。'; + statusMsg.className = 'error-message'; + } finally { + setTimeout(() => { + downloadPdfBtn.disabled = false; + downloadPdfBtn.textContent = '下载 PDF'; + }, 2000); + } + }, 500) }; iframe.srcdoc = htmlContent; }) diff --git a/docutranslate/utils/markdown_splitter.py b/docutranslate/utils/markdown_splitter.py index 63ec8f3..807049f 100644 --- a/docutranslate/utils/markdown_splitter.py +++ b/docutranslate/utils/markdown_splitter.py @@ -11,10 +11,12 @@ class MarkdownBlockSplitter: max_block_size: 每个块的最大字符数 """ self.max_block_size = max_block_size + @staticmethod - def _get_bytes(text:str)->int: + def _get_bytes(text: str) -> int: return len(text.encode('utf-8')) + #TODO: 修复分块有时候会有空白块的问题 def split_markdown(self, markdown_text: str) -> List[str]: """ 将Markdown文本分割成指定大小的块 @@ -230,18 +232,22 @@ def split_markdown_text(markdown_text, max_block_size=5000): 可以通过''.join(chunks)重建的Markdown块列表 """ splitter = MarkdownBlockSplitter(max_block_size=max_block_size) - return splitter.split_markdown(markdown_text) + chunks = splitter.split_markdown(markdown_text) + #过滤空白块 + chunks=[chunk for chunk in chunks if chunk.strip()] + return chunks -def join_markdown_texts(markdown_texts:list[str])->str: - result="" +def join_markdown_texts(markdown_texts: list[str]) -> str: + result = "" for text in markdown_texts: - #只有表格会收到多余空行的影响 + # 只有表格会收到多余空行的影响 if text.lstrip().startswith("|"): - result=result+"\n"+text + result = result + "\n" + text else: - result+="\n\n"+text + result += "\n\n" + text return result + if __name__ == '__main__': - pass \ No newline at end of file + pass