import random import uuid import copy import os if "GETFORM" not in globals():GETFORM={} if "POSTFORM" not in globals():POSTFORM={} GETFORM={"path": r"C:\Users\Lenovo\Desktop\Contract\Confidentiality Agreement For Galaxy Vantone Software Development Studio.docx"} class PWMOD(): DOC="!" END="/" ROT="." HTM="" class PyWeb(): def __init__(self): self.Html="" self.Frame={"Code":[]} self.HeadId=self.RanDomId() self.BodyId=self.RanDomId() self.FootId=self.RanDomId() self.MainId=self.RanDomId() self.TopDId=self.RanDomId() self.SetId=self.MainId self._InItFrame() self._InItMET() self._InItEL() def _InItFrame(self): self.INIT_DOCTYPE=_DOCTYPE(self, html=None) self._AddCode(PWMOD.HTM, "head", id=self.HeadId, nend=True) self._AddCode(PWMOD.HTM, "body", id=self.BodyId, nend=True) self._AddCode(PWMOD.HTM, "nav", id=self.TopDId, _class="pw-Top",FrameId=self.BodyId, nend=True) self._AddCode(PWMOD.HTM, "main", id=self.MainId, _class="pw-main", FrameId=self.BodyId, nend=True) self._AddCode(PWMOD.HTM, "footer", id=self.FootId, nend=True, FrameId=self.BodyId) def _InItMET(self): self.AddCSS("/assets/css/gvs-design-public-system.css") self.AddCSS("/PyWeb/style.css") self.AddCSS("/PyWeb/npro/npro.css") self.AddJS("/PyWeb/npro/npro.js") def RanDomId(self): return str(uuid.uuid3(uuid.NAMESPACE_DNS, str(random.randint(0, 10000000000000000000)))).replace("-","") def _SearchChange(self, SearchClass, FrameId, ClassAdd): for i in SearchClass: if "id" in i["KW"] and i["KW"]["id"] == FrameId: _=copy.deepcopy(ClassAdd) i["Child"].append(_) return True else: if self._SearchChange(i["Child"], FrameId=FrameId, ClassAdd=ClassAdd): return True return False def _AddCode(self, StartAdd, Code, IDEcho=False, IntermediateSpecifics = "", FrameId = None, nend=False, id = False, Child=[], **k): IDEcho=(True if id else False) if IDEcho == None else bool(IDEcho) k["id"]=id if id else self.RanDomId() _={"StartAdd": StartAdd, "Code": Code, "NeedEnd": nend, "IntermediateSpecifics": IntermediateSpecifics, "FrameId": FrameId, "IDEcho": IDEcho, "KW": k, "Child": Child} _=copy.deepcopy(_) if FrameId and FrameId != PWMOD.ROT: self._SearchChange(self.Frame["Code"], FrameId=FrameId, ClassAdd=_) return id self.Frame["Code"].append(_) return id def _HorizontalIterations(self, Code, tab=0): _="" for i in Code: if "CHTML" in i["KW"]: _+="%s%s\n" % (" "*tab, i["Code"]) continue a="" for _a in i["KW"]: if _a!= "id" or i["IDEcho"]: if i["KW"][_a]: a+=(" %s="+("%s" if type(i["KW"][_a]) == int else "\"%s\"")) % (_a[1:] if _a[0] == "_" else _a, i["KW"][_a]) continue else: continue a+=" %s" % (_a[1:] if _a[0] == "_" else _a) _+="%s<%s%s%s>%s%s\n" % (" "*tab, i["StartAdd"], i["Code"], a, i["IntermediateSpecifics"], ("<%s%s>" % (PWMOD.END, i["Code"])) if i["NeedEnd"] and i["Child"] == [] else "") if i["Child"]: _+=self._HorizontalIterations(i["Child"], tab=tab+4) _+="%s<%s%s>\n" % (" "*tab, PWMOD.END, i["Code"]) return _ def CID(self, id): if id == False: return {} if id == None or id == True: id=self.RanDomId() return {"id": id} def AddCSS(self, href, rel="stylesheet", type="text/css", IDEcho=False, id=False, FrameId=None): if not FrameId: FrameId = self.HeadId id=self.CID(id) self._AddCode(PWMOD.HTM, "link", IDEcho=IDEcho, FrameId=FrameId, rel=rel, type=type, href=href, **id) def AddJS(self, src=False, IDEcho=False, id=False, FrameId=None): if not FrameId: FrameId = self.HeadId id=self.CID(id) self._AddCode(PWMOD.HTM, "script", IDEcho=IDEcho, FrameId=FrameId, src=src, nend=True, **id) def AddTestCSS(self, IntermediateSpecifics="", IDEcho=False, id=False, FrameId=None): if not FrameId: FrameId = self.HeadId id=self.CID(id) self._AddCode(PWMOD.HTM, "style", IDEcho=IDEcho, FrameId=FrameId, nend=True, IntermediateSpecifics=IntermediateSpecifics, **id) def AddTestJS(self, IntermediateSpecifics="", IDEcho=False, id=False, FrameId=None): if not FrameId: FrameId = self.HeadId id=self.CID(id) self._AddCode(PWMOD.HTM, "script", IDEcho=IDEcho, FrameId=FrameId, nend=True, IntermediateSpecifics=IntermediateSpecifics, **id) def Finish(self): self.Html=self._HorizontalIterations(self.Frame["Code"]) def _InItEL(SetSelf, n=""): if n != "": SetSelf=n SetSelf.p =lambda IntermediateSpecifics="Test p", FrameId=None, nend=True, id=False, Child=[], **k : _p(master=SetSelf, IntermediateSpecifics=IntermediateSpecifics, FrameId=FrameId, nend=nend, id=id, Child=Child, **k) SetSelf.s =lambda IntermediateSpecifics="Test s", FrameId=None, nend=True, id=False, Child=[], **k : _s(master=SetSelf, IntermediateSpecifics=IntermediateSpecifics, FrameId=FrameId, nend=nend, id=id, Child=Child, **k) SetSelf.h1 =lambda IntermediateSpecifics="Test H1", FrameId=None, nend=True, id=False, Child=[], **k : _h(master=SetSelf, size=1, IntermediateSpecifics=IntermediateSpecifics, FrameId=FrameId, nend=nend, id=id, Child=Child, **k) SetSelf.h2 =lambda IntermediateSpecifics="Test H2", FrameId=None, nend=True, id=False, Child=[], **k : _h(master=SetSelf, size=2, IntermediateSpecifics=IntermediateSpecifics, FrameId=FrameId, nend=nend, id=id, Child=Child, **k) SetSelf.h3 =lambda IntermediateSpecifics="Test H3", FrameId=None, nend=True, id=False, Child=[], **k : _h(master=SetSelf, size=3, IntermediateSpecifics=IntermediateSpecifics, FrameId=FrameId, nend=nend, id=id, Child=Child, **k) SetSelf.h4 =lambda IntermediateSpecifics="Test H4", FrameId=None, nend=True, id=False, Child=[], **k : _h(master=SetSelf, size=4, IntermediateSpecifics=IntermediateSpecifics, FrameId=FrameId, nend=nend, id=id, Child=Child, **k) SetSelf.h5 =lambda IntermediateSpecifics="Test H5", FrameId=None, nend=True, id=False, Child=[], **k : _h(master=SetSelf, size=5, IntermediateSpecifics=IntermediateSpecifics, FrameId=FrameId, nend=nend, id=id, Child=Child, **k) SetSelf.div =lambda IntermediateSpecifics="", FrameId=None, nend=True, id=True, Child=[], **k : _div(master=SetSelf, IntermediateSpecifics=IntermediateSpecifics, FrameId=FrameId, nend=nend, id=id, Child=Child, **k) SetSelf.CHtml =lambda Code="", FrameId=None, nend=True, id=True, Child=[], **k : _CHtml(master=SetSelf, Code=Code, FrameId=FrameId, nend=nend, id=id, Child=Child, **k) class _Widget(PyWeb): # 这里需要解释一下,这里是伪继承,实际上没有初始化继承, # 为的是VsCode的高亮 def __init__(self, master=PyWeb, Code="Widget", IntermediateSpecifics="Test EL", FrameId=None, nend=True, id=False, IDEcho=False, Child=[], StartAdd=PWMOD.HTM, **k) -> None: if not FrameId: FrameId = master.SetId id=master.CID(id) self.id = master._AddCode(StartAdd, Code, IDEcho=IDEcho, IntermediateSpecifics=IntermediateSpecifics, FrameId=FrameId, nend=nend, Child=Child, **id, **k) class _p(_Widget): def __init__(self, master=PyWeb, IntermediateSpecifics="Test EL", FrameId=None, nend=True, id=False, IDEcho=False, Child=[], **k) -> None: super().__init__(master=master, Code="p", IDEcho=IDEcho, IntermediateSpecifics=IntermediateSpecifics, FrameId=FrameId, nend=nend, id=id, Child=Child, **k) class _DOCTYPE(_Widget): def __init__(self, master=PyWeb, IntermediateSpecifics="", FrameId=PWMOD.ROT, nend=False, id=False, IDEcho=False, Child=[], **k) -> None: super().__init__(master=master, Code="DOCTYPE", IDEcho=IDEcho, IntermediateSpecifics=IntermediateSpecifics, FrameId=FrameId, nend=nend, id=id, Child=Child, StartAdd=PWMOD.DOC, **k) class _s(_Widget): def __init__(self, master=PyWeb, IntermediateSpecifics="Test S", FrameId=None, nend=True, id=False, IDEcho=False, Child=[], **k) -> None: super().__init__(master=master, Code="s", IDEcho=IDEcho, IntermediateSpecifics=IntermediateSpecifics, FrameId=FrameId, nend=nend, id=id, Child=Child, **k) class _div(_Widget): def __init__(self, master=PyWeb, IntermediateSpecifics="", FrameId=None, nend=True, id=False, IDEcho=False, Child=[], Code="div", **k) -> None: super().__init__(master=master, Code=Code, IDEcho=IDEcho, IntermediateSpecifics=IntermediateSpecifics, FrameId=FrameId, nend=nend, id=id, Child=Child, **k) self.CID, self.SetId, self._AddCode=master.CID, self.id, master._AddCode master._InItEL(self) class _h(_Widget): def __init__(self, master=PyWeb, size=1, IntermediateSpecifics="Test H1~H2", FrameId=None, nend=True, id=False, IDEcho=False, Child=[], **k): super().__init__(master, "h%s" % (size), IntermediateSpecifics=IntermediateSpecifics, FrameId=FrameId, nend=nend, id=id, IDEcho=IDEcho, Child=Child, **k) class _CHtml(_Widget): def __init__(self, master=PyWeb, Code="", FrameId=None, nend=True, id=False, IDEcho=False, Child=[], **k): super().__init__(master, Code, FrameId=FrameId, nend=nend, id=id, IDEcho=IDEcho, Child=Child, CHTML="", **k) class ReadWord(PyWeb): def __init__(self): PyWeb.__init__(self) self.init() self.Finish() def init(self): if "path" not in GETFORM: self.h1("错误异常!!!") self.p("你没有正确地提交get参数 -> \"path\" not in GETFORM.",style="color: #EC1C24;") self.p("事件错误等级: 小",style="color: #EC1C24;") return path=GETFORM.get("path") if not os.path.isfile(path): self.h1("错误异常!!!") self.p("你没有提供正确地path路径 -> \"path\" file not found.",style="color: #EC1C24;") self.p("事件错误等级: 小",style="color: #EC1C24;") return try: html, css = W2H.W2H(path) except: self.h1("错误异常!!!") self.p("处理word文件时出错 -> load \"path\" file back error.",style="color: #EC1C24;") self.p("事件错误等级: 大",style="color: #EC1C24;") return self.AddCSS("/PyWeb/css/sheets-of-paper-a4.css") self.h1(path.split("\\")[-1].split("/")[-1], style="text-align: center;") doc=self.div(_class="document") html="\n".join(html.split("\n")[1:]) page=doc.div(_class="page", contenteditable="true") page.CHtml(html) WebRet=ReadWord()