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:
|
||||||
|
@ -414,4 +414,43 @@ def compile_latex_with_timeout(command, cwd, timeout=60):
|
|||||||
stdout, stderr = process.communicate()
|
stdout, stderr = process.communicate()
|
||||||
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