diff --git a/03.Code/업로드용/converters/hwpx_table_injector.py b/03.Code/업로드용/converters/hwpx_table_injector.py deleted file mode 100644 index 2f29dca..0000000 --- a/03.Code/업로드용/converters/hwpx_table_injector.py +++ /dev/null @@ -1,191 +0,0 @@ -# -*- coding: utf-8 -*- -""" -HWPX - 鍮 - 湲 v2 - -import zipfile -import rePX -from pathlib import Path -import tempfile 鍮 -import shutil -""" -# mm HWPML 蹂 283.46 HWPML units) -MM_TO_HWPML = 7200 / 25.4 # 283.46 - -def inject_table_widths(hwpx_path: str, table_widths_list: list): - """ - HWPX - 鍮 - - - Args: - hwpx_path: HWPX - table_widths_list: [[w1, w2, w3], [w1, w2], ...] (mm - ) - """ - if not table_widths_list: - print(" [INFO] ") - return - - print(f" - 鍮 - ... ({len(table_widths_list)}媛 )") - - # HWPX 異 댁 - temp_dir = Path(tempfile.mkdtemp(prefix="hwpx_table_")) - - with zipfile.ZipFile(hwpx_path, 'r') as zf: - zf.extractall(temp_dir) - - # section*.xml ㅼ - 李얘린 - contents_dir = temp_dir / "Contents" - - table_idx = 0 - total_modified = 0 - - for section_file in sorted(contents_dir.glob("section*.xml")): - with open(section_file, 'r', encoding='utf-8') as f: - content = f.read() - - original_content = content - - # 紐⑤ (...) 李얘린 - tbl_pattern = re.compile(r'(]*>)(.*?)()', re.DOTALL) - - def process_table(match): - nonlocal table_idx, total_modified - - if table_idx >= len(table_widths_list): - return match.group(0) - - tbl_open = match.group(1) - tbl_content = match.group(2) - tbl_close = match.group(3) - - col_widths_mm = table_widths_list[table_idx] - col_widths_hwpml = [int(w * MM_TO_HWPML) for w in col_widths_mm] - - # - 泥 - 鍮 - (hp:sz width="...") - total_width = int(sum(col_widths_mm) * MM_TO_HWPML) - tbl_content = re.sub( - r'(= len(col_widths_hwpml): - return tc_content - - new_width = col_widths_hwpml[col_idx] - - # cellSz width 援 - tc_content = re.sub( - r'(... 釉濡 - tbl_content = re.sub( - r']*>.*?', - replace_cell_width, - tbl_content, - flags=re.DOTALL - ) - - print(f" - # {table_idx + 1}: {col_widths_mm} mm HWPML ") - table_idx += 1 - total_modified += 1 - - return tbl_open + tbl_content + tbl_close - - # 泥 - new_content = tbl_pattern.sub(process_table, content) - - # 蹂寃쎌ы 쇰㈃ - if new_content != original_content: - with open(section_file, 'w', encoding='utf-8') as f: - f.write(new_content) - print(f" {section_file.name} ") - - # ㅼ 異 - repack_hwpx(temp_dir, hwpx_path) - - # - 대 - shutil.rmtree(temp_dir) - - print(f" - 珥 - 鍮 - 猷") - - -def repack_hwpx(source_dir: Path, output_path: str): - """HWPX ㅼ 異""" - import os - import time - - temp_output = output_path + ".tmp" - - with zipfile.ZipFile(temp_output, 'w', zipfile.ZIP_DEFLATED) as zf: - # mimetype 異 吏몃 - mimetype_path = source_dir / "mimetype" - if mimetype_path.exists(): - zf.write(mimetype_path, "mimetype", compress_type=zipfile.ZIP_STORED) - - # 몄 - for root, dirs, files in os.walk(source_dir): - for file in files: - if file == "mimetype": - continue - file_path = Path(root) / file - arcname = file_path.relative_to(source_dir) - zf.write(file_path, arcname) - - # 援 - for attempt in range(3): - try: - if os.path.exists(output_path): - os.remove(output_path) - os.rename(temp_output, output_path) - break - except PermissionError: - time.sleep(0.5) - - -# -ㅽ몄 -if __name__ == "__main__": - test_widths = [ - [18.2, 38.9, 42.8, 70.1], - [19.9, 79.6, 70.5], - [28.7, 81.4, 59.9], - [19.2, 61.4, 89.5], - ] - - hwpx_path = r"C:\Users\User\AppData\Local\Temp\geulbeot_output.hwpx" - inject_table_widths(hwpx_path, test_widths)