Ejemplo n.º 1
0
def create_docx_file_from_bodylist(blist, AZSnum, SSOnum, ACTnum, nowdate, docxpath):
    doc = docx.Document(settings.get_docx_templ_path())
    nowdate = nowdate
    bottext = False
    numline = 0

    for i in range(len(doc.paragraphs)):
        if i == 0:
            hd = doc.paragraphs[i]
            hd.paragraph_format.space_after = Pt(10)
            doc.paragraphs[i].text = 'АКТ № ' + ACTnum
            doc.paragraphs[i].style = 'Normal'
            doc.paragraphs[i].alignment = 1
            doc.paragraphs[i].runs[0].bold = True
            doc.paragraphs[i].runs[0].font.name = 'Times New Roman'
            doc.paragraphs[i].runs[0].font.size = Pt(14)
            continue
        if i == 1:
            hd2 = doc.paragraphs[i]
            hd2.paragraph_format.space_after = Pt(10)
            doc.paragraphs[i].style = 'Normal'
            doc.paragraphs[i].add_run('АЗС №' + AZSnum + '	ССО №' + SSOnum + '\t\t\t\t\t\t\t\t' + nowdate)
            doc.paragraphs[i].runs[0].font.name = 'Times New Roman'
            doc.paragraphs[i].runs[0].font.size = Pt(12)
            continue
        if i > 1 and not bottext and numline < len(blist):
            p2 = doc.paragraphs[i]
            run2 = p2.add_run('\t' + blist[numline])
            p2.paragraph_format.alignment = 3
            if blist[numline].find('В связи с чем') != -1:
                bottext = True
                p2.paragraph_format.space_before = Pt(0)
                p2.paragraph_format.space_after = Pt(0)
            else:
                p2.paragraph_format.space_before = Pt(0)
                p2.paragraph_format.space_after = Pt(0)
            p2.paragraph_format.line_spacing = Pt(0)
            run2.font.name = 'Times New Roman'
            run2.font.size = Pt(12)
            numline += 1
            continue
        if i > 1 and bottext and numline < len(blist):
            p3 = doc.paragraphs[i]
            doc.paragraphs[i].style = 'List Paragraph'
            run3 = p3.add_run('— ' + blist[numline])
            run3.font.name = 'Times New Roman'
            run3.font.size = Pt(12)
            p3.paragraph_format.left_indent = Inches(0.8)
            p3.paragraph_format.alignment = 0
            p3.paragraph_format.line_spacing = Pt(0)
            p3.paragraph_format.space_before = Pt(0)
            p3.paragraph_format.space_after = Pt(0)
            numline += 1
            continue
    del_empty_paragraphs(doc, blist)
    doc.save(docxpath)
Ejemplo n.º 2
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        #Обьявление главного сайзера:
        self.mainsizer = wx.BoxSizer(wx.VERTICAL)

        #Блок 1, виджеты для указания пути к папке локальных актов--------------------------------------------------
        self.mainsizer.Add(wx.StaticText(self, wx.ID_ANY, label="Путь к папке с локальными актами:"),
                           flag=wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, border=10)
        self.folderactssizer = wx.BoxSizer(wx.HORIZONTAL)
        self.mainsizer.Add(self.folderactssizer, flag=wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, border=10)
        self.tc_actloc_path = wx.StaticText(self, id=ID_MD_PATHDIRACTLOC, style=wx.ST_ELLIPSIZE_START,
                                            label=settings.get_local_acts_path_folder())
        self.folderactssizer.Add(self.tc_actloc_path, proportion=1)
        self.folderactssizer.Add(wx.Button(self, id=ID_MD_CHOSDIRLOC, label='...'), flag=wx.EXPAND | wx.LEFT, border=10)

        # Блок 2, виджеты для указания пути к папке общих актов------------------------------------------------------
        self.mainsizer.Add(wx.StaticText(self, wx.ID_ANY, label="Путь к папке с общими актами:"),
                           flag=wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, border=10)
        self.folderactssizer2 = wx.BoxSizer(wx.HORIZONTAL)
        self.mainsizer.Add(self.folderactssizer2, flag=wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, border=10)
        self.tc_act_path = wx.StaticText(self, id=ID_MD_PATHDIRACT, style=wx.ST_ELLIPSIZE_START,
                                         label=settings.get_general_acts_path_folder())
        self.folderactssizer2.Add(self.tc_act_path, proportion=1)
        self.folderactssizer2.Add(wx.Button(self, id=ID_MD_CHOSDIR, label='...'), flag=wx.EXPAND | wx.LEFT, border=10)

        #Блок 3, виджеты дляуказания пути к шаблону docx
        self.mainsizer.Add(wx.StaticText(self, wx.ID_ANY, label="Путь к файлу шаблона docx:"),
                           flag=wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, border=10)
        self.tmpldocx_path_sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.mainsizer.Add(self.tmpldocx_path_sizer, flag=wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, border=10)
        self.tc_tmpl_docxfile_path = wx.StaticText(self, id=ID_MD_PATHFILETEMPLDOCX, style=wx.ST_ELLIPSIZE_START,
                                         label=settings.get_docx_templ_path())
        self.tmpldocx_path_sizer.Add(self.tc_tmpl_docxfile_path, proportion=1)
        self.tmpldocx_path_sizer.Add(wx.Button(self, id=ID_MD_CHOSFILETMPLDOCX, label='...'),
                                     flag=wx.EXPAND | wx.LEFT, border=10)

        #Добавление главного сайзера с виджетами в окно
        self.SetSizer(self.mainsizer)

        #Назначение кнопок и функций
        self.Bind(wx.EVT_BUTTON, self.choosediractsloc, id=ID_MD_CHOSDIRLOC)
        self.Bind(wx.EVT_BUTTON, self.choosediracts, id=ID_MD_CHOSDIR)
        self.Bind(wx.EVT_BUTTON, self.choosefiletmpldocx, id=ID_MD_CHOSFILETMPLDOCX)
Ejemplo n.º 3
0
 def createActOn(self, event):
     if "template.docx" not in settings.get_docx_templ_path():
         msgdlg = wx.MessageDialog(self,
                                   "Не найден файл шаблона template.docx",
                                   "Ошибка",
                                   wx.OK | wx.STAY_ON_TOP | wx.CENTRE)
         msgdlg.ShowModal()
         return -1
     if not event.GetId(
     ) == ID_BTN_CRARCT and self.TCTextInputCS.GetNumberOfLines() > 0:
         txtlst = list(
             map(lambda x: x.strip(),
                 self.TCTextInputCS.GetValue().split('\n')))
         progress = wx.ProgressDialog(
             "Создание Акта...",
             "Этап 0 из 6: Инициализация метода создания акта",
             maximum=100,
             parent=self,
             style=wx.PD_AUTO_HIDE | wx.PD_APP_MODAL)
         progress.Update(10, "Этап 1 из 6: Формирование имя акта")
         filenamedocx = \
             f"Акт{self.TCActNumDef.GetValue()}_АЗС{self.TCAZSNumDef.GetValue()}_ССО{self.TCSSONumDef.GetValue()}." \
             f"docx"
         progress.Update(
             20, "Этап 2 из 6: Формирование пути расположения акта")
         docxpath = settings.get_local_acts_path_folder() + filenamedocx
         progress.Update(30, "Этап 3 из 6: Создание docx документа")
         filetools.create_docx_file_from_bodylist(
             txtlst, self.TCAZSNumDef.GetValue(),
             self.TCSSONumDef.GetValue(), self.TCActNumDef.GetValue(),
             self.TCdateNumDef.GetValue(), docxpath)
         progress.Update(60, "Этап 4 из 6: Создание pdf документа")
         filetools.create_pdf_file_from_docx(docxpath)
         progress.Update(80,
                         "Этап 5 из 6: Копирование файлов в общую папку")
         filetools.copy_files_to_general_folder(filenamedocx)
         self.refresh_list_acts(event)
         progress.Update(100, "Этап 6 из 6: Обновление списка актов")
         progress.Destroy()
Ejemplo n.º 4
0
 def openDocxTemplate(self, event):
     os.startfile(os.path.realpath(settings.get_docx_templ_path()))