From b5b8c123e444fe212f63dd6bfcebb36ec360444d Mon Sep 17 00:00:00 2001 From: qingxu fu <505030475@qq.com> Date: Thu, 20 Jul 2023 19:39:22 +0800 Subject: [PATCH] latex plugin stability improvement --- crazy_functions/crazy_functions_test.py | 3 +- crazy_functions/latex_fns/latex_actions.py | 57 ++++------------------ crazy_functions/latex_fns/latex_toolbox.py | 41 +++++++++++++++- requirements.txt | 2 +- 4 files changed, 52 insertions(+), 51 deletions(-) diff --git a/crazy_functions/crazy_functions_test.py b/crazy_functions/crazy_functions_test.py index 94f4dd0..1d418da 100644 --- a/crazy_functions/crazy_functions_test.py +++ b/crazy_functions/crazy_functions_test.py @@ -198,7 +198,8 @@ def test_Latex(): # txt = r"2306.17157" # 这个paper有个input命令文件名大小写错误! # txt = "https://arxiv.org/abs/2205.14135" # txt = r"C:\Users\fuqingxu\arxiv_cache\2205.14135\workfolder" - txt = r"C:\Users\fuqingxu\arxiv_cache\2205.14135\workfolder" + # txt = r"C:\Users\fuqingxu\arxiv_cache\2205.14135\workfolder" + txt = r"2210.03629" for cookies, cb, hist, msg in (Latex翻译中文并重新编译PDF)(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port): cli_printer.print(cb) # print(cb) diff --git a/crazy_functions/latex_fns/latex_actions.py b/crazy_functions/latex_fns/latex_actions.py index ab07516..28dfd66 100644 --- a/crazy_functions/latex_fns/latex_actions.py +++ b/crazy_functions/latex_fns/latex_actions.py @@ -390,14 +390,15 @@ def 编译Latex(chatbot, history, main_file_original, main_file_modified, work_f if os.path.exists(pj(work_folder, '..', 'translation')): shutil.copyfile(result_pdf, pj(work_folder, '..', 'translation', 'translate_zh.pdf')) promote_file_to_downloadzone(result_pdf, rename_file=None, chatbot=chatbot) # promote file to web UI - # # 将两个PDF拼接 - # if original_pdf_success: - # try: - # concat_pdf = pj(work_folder_modified, f'comparison.pdf') - # merge_pdfs(origin_pdf, result_pdf, concat_pdf) - # promote_file_to_downloadzone(concat_pdf, rename_file=None, chatbot=chatbot) # promote file to web UI - # except Exception as e: - # pass + # 将两个PDF拼接 + if original_pdf_success: + try: + from .latex_toolbox import merge_pdfs + concat_pdf = pj(work_folder_modified, f'comparison.pdf') + merge_pdfs(origin_pdf, result_pdf, concat_pdf) + promote_file_to_downloadzone(concat_pdf, rename_file=None, chatbot=chatbot) # promote file to web UI + except Exception as e: + pass return True # 成功啦 else: if n_fix>=max_try: break @@ -417,46 +418,6 @@ def 编译Latex(chatbot, history, main_file_original, main_file_modified, work_f return False # 失败啦 - -def merge_pdfs(pdf1_path, pdf2_path, output_path): - import PyPDF2 - # Open the first PDF file - with open(pdf1_path, 'rb') as pdf1_file: - pdf1_reader = PyPDF2.PdfReader(pdf1_file) - # Open the second PDF file - with open(pdf2_path, 'rb') as pdf2_file: - pdf2_reader = PyPDF2.PdfReader(pdf2_file) - # Create a new PDF file to store the merged pages - output_writer = PyPDF2.PdfWriter() - # Determine the number of pages in each PDF file - num_pages = max(pdf1_reader.pages.__len__(), pdf2_reader.pages.__len__()) - # Merge the pages from the two PDF files - for page_num in range(num_pages): - # Add the page from the first PDF file - if page_num < pdf1_reader.pages.__len__(): - page1 = pdf1_reader.pages[page_num] - else: - page1 = PyPDF2.PageObject.create_blank_page(pdf1_reader) - # Add the page from the second PDF file - if page_num < pdf2_reader.pages.__len__(): - page2 = pdf2_reader.pages[page_num] - else: - page2 = PyPDF2.PageObject.create_blank_page(pdf1_reader) - # Create a new empty page with double width - new_page = PyPDF2.PageObject.create_blank_page( - width=2 * max(page1.mediabox.width, page2.mediabox.width), - height=max(page1.mediabox.height, page2.mediabox.height) - ) - page1.add_transformation(PyPDF2.Transformation().translate(0, 0)); new_page.merge_page(page1) - page2.add_transformation(PyPDF2.Transformation().translate(page1.mediabox.width, 0)); new_page.merge_page(page2) - - output_writer.add_page(new_page) - # Save the merged PDF file - with open(output_path, 'wb') as output_file: - output_writer.write(output_file) - - - def write_html(sp_file_contents, sp_file_result, chatbot, project_folder): # write html try: diff --git a/crazy_functions/latex_fns/latex_toolbox.py b/crazy_functions/latex_fns/latex_toolbox.py index 0825044..a0c889a 100644 --- a/crazy_functions/latex_fns/latex_toolbox.py +++ b/crazy_functions/latex_fns/latex_toolbox.py @@ -414,4 +414,43 @@ def compile_latex_with_timeout(command, cwd, timeout=60): stdout, stderr = process.communicate() print("Process timed out!") return False - return True \ No newline at end of file + return True + + + +def merge_pdfs(pdf1_path, pdf2_path, output_path): + import PyPDF2 + Percent = 0.8 + # Open the first PDF file + with open(pdf1_path, 'rb') as pdf1_file: + pdf1_reader = PyPDF2.PdfFileReader(pdf1_file) + # Open the second PDF file + with open(pdf2_path, 'rb') as pdf2_file: + pdf2_reader = PyPDF2.PdfFileReader(pdf2_file) + # Create a new PDF file to store the merged pages + output_writer = PyPDF2.PdfFileWriter() + # Determine the number of pages in each PDF file + num_pages = max(pdf1_reader.numPages, pdf2_reader.numPages) + # Merge the pages from the two PDF files + for page_num in range(num_pages): + # Add the page from the first PDF file + if page_num < pdf1_reader.numPages: + page1 = pdf1_reader.getPage(page_num) + else: + page1 = PyPDF2.PageObject.createBlankPage(pdf1_reader) + # Add the page from the second PDF file + if page_num < pdf2_reader.numPages: + page2 = pdf2_reader.getPage(page_num) + else: + page2 = PyPDF2.PageObject.createBlankPage(pdf1_reader) + # Create a new empty page with double width + new_page = PyPDF2.PageObject.createBlankPage( + width = int(int(page1.mediaBox.getWidth()) + int(page2.mediaBox.getWidth()) * Percent), + height = max(page1.mediaBox.getHeight(), page2.mediaBox.getHeight()) + ) + new_page.mergeTranslatedPage(page1, 0, 0) + new_page.mergeTranslatedPage(page2, int(int(page1.mediaBox.getWidth())-int(page2.mediaBox.getWidth())* (1-Percent)), 0) + output_writer.addPage(new_page) + # Save the merged PDF file + with open(output_path, 'wb') as output_file: + output_writer.write(output_file) diff --git a/requirements.txt b/requirements.txt index 828cedd..a31bb1c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,4 +18,4 @@ openai numpy arxiv rich -pypdf2 +pypdf2==2.12.1