From dedfc9a95950add6a5fc93ec0d700a9a0e952aaa Mon Sep 17 00:00:00 2001 From: Jeffrey Hsu Date: Fri, 6 Jun 2025 12:07:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=AD=94=E8=BE=A9=E9=A2=98?= =?UTF-8?q?=E7=9B=AE=E9=A1=B5=E9=9D=A2=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/defense/doc.py | 4 +++- module/worker.py | 6 ++++-- template/template.docx | Bin 17595 -> 17595 bytes 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/module/defense/doc.py b/module/defense/doc.py index 3274926..627f1f4 100644 --- a/module/defense/doc.py +++ b/module/defense/doc.py @@ -2,7 +2,7 @@ import pathlib from copy import deepcopy from docx import Document -from docx.shared import Cm +from docx.shared import Cm, Mm from module.schema import Course, Student @@ -14,6 +14,8 @@ class DocPaper: self._filename = filename section = self._doc.sections[0] + section.page_width = Mm(210) + section.page_height = Mm(297) section.top_margin = Cm(2) section.bottom_margin = Cm(2) section.left_margin = Cm(2) diff --git a/module/worker.py b/module/worker.py index 1625ca7..5994a21 100644 --- a/module/worker.py +++ b/module/worker.py @@ -62,12 +62,14 @@ class DTGWorker(QObject): doc = word.Documents.Open(word_file) try: doc.SaveAs(pdf_file, 17) + doc.Close() os.remove(word_file) os.startfile(pdf_file) except Exception as e: - raise Exception("PDF转换失败,但Word文档已生成") from e - finally: doc.Close() + os.startfile(word_file) + raise Exception("PDF转换失败,但Word文档已生成,已打开Word文档") from e + finally: word.Quit() elif self.output_type == 'word': os.startfile(word_file) diff --git a/template/template.docx b/template/template.docx index bd1785f6f83c7f200976d711bab4850fafbfb18f..9f4b907057a3f2ab7889dc77255c25dbeb9e1305 100644 GIT binary patch delta 5101 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 AtpET3