latex plugin stability improvement
This commit is contained in:
		
							parent
							
								
									d9ceba959f
								
							
						
					
					
						commit
						b5b8c123e4
					
				@ -198,7 +198,8 @@ def test_Latex():
 | 
				
			|||||||
    # txt = r"2306.17157" # 这个paper有个input命令文件名大小写错误!
 | 
					    # txt = r"2306.17157" # 这个paper有个input命令文件名大小写错误!
 | 
				
			||||||
    # txt = "https://arxiv.org/abs/2205.14135"
 | 
					    # 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"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):
 | 
					    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)
 | 
					        cli_printer.print(cb)   #  print(cb)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -390,14 +390,15 @@ def 编译Latex(chatbot, history, main_file_original, main_file_modified, work_f
 | 
				
			|||||||
            if os.path.exists(pj(work_folder, '..', 'translation')):
 | 
					            if os.path.exists(pj(work_folder, '..', 'translation')):
 | 
				
			||||||
                shutil.copyfile(result_pdf, pj(work_folder, '..', 'translation', 'translate_zh.pdf'))
 | 
					                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
 | 
					            promote_file_to_downloadzone(result_pdf, rename_file=None, chatbot=chatbot)  # promote file to web UI
 | 
				
			||||||
            # # 将两个PDF拼接
 | 
					            # 将两个PDF拼接
 | 
				
			||||||
            # if original_pdf_success: 
 | 
					            if original_pdf_success: 
 | 
				
			||||||
            #     try:
 | 
					                try:
 | 
				
			||||||
            #         concat_pdf = pj(work_folder_modified, f'comparison.pdf')
 | 
					                    from .latex_toolbox import merge_pdfs
 | 
				
			||||||
            #         merge_pdfs(origin_pdf, result_pdf, concat_pdf)
 | 
					                    concat_pdf = pj(work_folder_modified, f'comparison.pdf')
 | 
				
			||||||
            #         promote_file_to_downloadzone(concat_pdf, rename_file=None, chatbot=chatbot)  # promote file to web UI
 | 
					                    merge_pdfs(origin_pdf, result_pdf, concat_pdf)
 | 
				
			||||||
            #     except Exception as e:
 | 
					                    promote_file_to_downloadzone(concat_pdf, rename_file=None, chatbot=chatbot)  # promote file to web UI
 | 
				
			||||||
            #         pass
 | 
					                except Exception as e:
 | 
				
			||||||
 | 
					                    pass
 | 
				
			||||||
            return True # 成功啦
 | 
					            return True # 成功啦
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            if n_fix>=max_try: break
 | 
					            if n_fix>=max_try: break
 | 
				
			||||||
@ -417,46 +418,6 @@ def 编译Latex(chatbot, history, main_file_original, main_file_modified, work_f
 | 
				
			|||||||
    return False # 失败啦
 | 
					    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):
 | 
					def write_html(sp_file_contents, sp_file_result, chatbot, project_folder):
 | 
				
			||||||
    # write html
 | 
					    # write html
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
 | 
				
			|||||||
@ -415,3 +415,42 @@ def compile_latex_with_timeout(command, cwd, timeout=60):
 | 
				
			|||||||
        print("Process timed out!")
 | 
					        print("Process timed out!")
 | 
				
			||||||
        return False
 | 
					        return False
 | 
				
			||||||
    return True
 | 
					    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)
 | 
				
			||||||
 | 
				
			|||||||
@ -18,4 +18,4 @@ openai
 | 
				
			|||||||
numpy
 | 
					numpy
 | 
				
			||||||
arxiv
 | 
					arxiv
 | 
				
			||||||
rich
 | 
					rich
 | 
				
			||||||
pypdf2
 | 
					pypdf2==2.12.1
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user