def __init__(self, title, packages=None, debug=None, standard="XD", preface=True): """ :param title: 论文标题 :param packages: 论文需要用到的包(使用Python端创建的对象需要的包会自动添加) :param debug: 暂时无用 :param standard: 论文格式,分为XD和GJS :param preface: 是否需要打印标准页(承诺书和评分),XD暂未添加 """ self.standard = standard if standard == "GJS": if preface: super().__init__(title, packages, debug, documentclass='cumcmthesis') else: super().__init__( title, packages, debug, documentclass='cumcmthesis', document_options=["withoutpreface", "bwprint"]) elif standard == "XD": if packages is None: packages = [["geometry", "a4paper, centering, scale=0.8"]] else: packages.append(["geometry", "a4paper, centering, scale=0.8"]) super().__init__(Command('ha', title), packages, debug) header = PageStyle("header") with header.create(Foot("C")): header.append(NoEscapeStr(r"\thepage")) self.pre_append(header) self.change_document_style("header") self.define([r"\abstractname"], [r"\hb 摘要"], True) self.pre_append( NoEscapeStr( r"\setCJKfamilyfont{zhsong}[AutoFakeBold = {2.17}]{SimSun}" )) self.define([r"\ha", r"\hb", r"\hc", r"\neirong"], [ r"\fontsize{15.75pt}{\baselineskip}\heiti", r"\fontsize{14pt}{\baselineskip}\heiti", r"\fontsize{12pt}{\baselineskip}\heiti", r"\fontsize{12pt}{\baselineskip}\songti", ]) self.pre_append(NoEscapeStr(r"\bibliographystyle{plain}")) self.var_table = table()
def add_header(self): header_text = 'Analysis of ' + self.analysis.analysis_name header = PageStyle('header') with header.create(Head('L')): header.append(header_text) header.append(LineBreak()) with header.create(Foot('R')): header.append(simple_page_number()) self.doc.preamble.append(header) self.doc.change_document_style('header')
def test_headfoot(): # Page styles, headers and footers page_style = PageStyle("NewStyle") page_style.change_thickness("header", "1pt") page_style.change_thickness("footer", "1pt") header = Head("C") header.append("append") footer = Foot("C") footer.append("append") page_style.append(header) page_style.append(footer) repr(header) repr(footer) repr(page_style)
def make_doc(self, foirequest): doc = Document( lmodern=True, geometry_options={ "a4paper": True, "margin": "1in", }, ) # Change font doc.packages.append(Package('fontspec,xunicode,array')) doc.packages.append(Package('sectsty')) doc.preamble.append(NoEscape("\\usepackage{helvet}")) doc.preamble.append( NoEscape("\\sectionfont{\\fontsize{12}{15}\\selectfont}")) # Adjust description list doc.packages.append(Package('enumitem')) doc.preamble.append( NoEscape( "\\setlist[description]{labelindent=0cm,style=multiline,leftmargin=1.5cm}" )) # Hyphenation doc.append(NoEscape("\\lefthyphenmin=5")) doc.append(NoEscape("\\sloppy")) # doc.preamble.append(Command('title', foirequest.title)) # doc.preamble.append(Command('author', foirequest.get_absolute_domain_short_url())) # doc.preamble.append(Command('date', NoEscape('\\today'))) # doc.append(NoEscape('\\maketitle')) # Set up header and footer header = PageStyle("header") with header.create(Foot("L")): header.append(italic(settings.SITE_NAME)) with header.create(Head("C")): header.append(foirequest.title) with header.create(Foot("R")): header.append( str( _('Request #{request_no}').format( request_no=foirequest.pk))) with header.create(Foot("C")): header.append( italic(NoEscape(r'Seite \thepage\ von \pageref{LastPage}'))) doc.preamble.append(header) doc.change_document_style("header") for i, message in enumerate(foirequest.messages): last = i == len(foirequest.messages) - 1 add_message_to_doc(doc, message) if not last: doc.append(NewPage()) return doc
def make_doc(self, foirequest): doc = Document( lmodern=True, geometry_options={ "a4paper": True, "margin": "1in", }, ) # Change font doc.packages.append(Package('fontspec,xunicode,array')) doc.packages.append(Package('sectsty')) doc.preamble.append(NoEscape("\\usepackage{helvet}")) doc.preamble.append(NoEscape("\\sectionfont{\\fontsize{12}{15}\\selectfont}")) # Adjust description list doc.packages.append(Package('enumitem')) doc.preamble.append(NoEscape("\\setlist[description]{labelindent=0cm,style=multiline,leftmargin=1.5cm}")) # Hyphenation doc.append(NoEscape("\\lefthyphenmin=5")) doc.append(NoEscape("\\sloppy")) # doc.preamble.append(Command('title', foirequest.title)) # doc.preamble.append(Command('author', foirequest.get_absolute_domain_short_url())) # doc.preamble.append(Command('date', NoEscape('\\today'))) # doc.append(NoEscape('\\maketitle')) # Set up header and footer header = PageStyle("header") with header.create(Foot("L")): header.append(italic(settings.SITE_NAME)) with header.create(Head("C")): header.append(foirequest.title) with header.create(Foot("R")): header.append(str( _('Request #{request_no}').format(request_no=foirequest.pk))) with header.create(Foot("C")): header.append(italic(NoEscape(r'Seite \thepage\ von \pageref{LastPage}'))) doc.preamble.append(header) doc.change_document_style("header") for i, message in enumerate(foirequest.messages): last = i == len(foirequest.messages) - 1 add_message_to_doc(doc, message) if not last: doc.append(NewPage()) return doc
def generate_header(): # Add document header header = PageStyle("header") # Create left header with header.create(Head("L")): header.append("Weights updated: 24/02/16") header.append(LineBreak()) # Create center header with header.create(Head("C")): header.append("8/6/3 Workout with BB Accessories") # Create right header # with header.create(Head("R")): # header.append(simple_page_number()) return header
def header(self): head_of_page = PageStyle('header', header_thickness=0.5, footer_thickness=0.0) with head_of_page.create(Head('L')): head_of_page.append(self.capacity.branch.scenario['scenario']) self.preamble.append(head_of_page) self.change_document_style('header') with head_of_page.create(Head('C')): head_of_page.append('Caerus Operating') self.preamble.append(head_of_page) self.change_document_style('header') with head_of_page.create(Head('R')): head_of_page.append(simple_page_number()) self.preamble.append(head_of_page) self.change_document_style('header')
def write_header(self, doc): # def write_header(self): # Add document header header = PageStyle("header") # Create left header with header.create(Head("L")): header.append( "Center for Reflected Text Analytics (CRETA)\nUniversity of Stuttgart" ) # header.append(LineBreak()) # header.append("R3") ## Create center header # with header.create(Head("C")): # header.append("Company") # Create right header with header.create(Head("R")): header.append(NoEscape(r'\today')) ## Create left footer # with header.create(Foot("L")): # header.append("Left Footer") ## Create center footer with header.create(Foot("C")): header.append(simple_page_number()) ## Create right footer # with header.create(Foot("R")): # header.append("Right Footer") doc.preamble.append(header) doc.change_document_style("header") # Add Heading with doc.create(MiniPage(align='c')): doc.append(LargeText(bold("rCAT v0.1"))) doc.append(LineBreak()) doc.append(MediumText(bold("Relational Character Analysis Tool"))) return doc
def generate_header(): geometry_options = {"margin": "0.7in"} doc = Document(geometry_options=geometry_options) # Add document header header = PageStyle("header") # Create left header with header.create(Head("L")): header.append("Page date: ") header.append(LineBreak()) header.append("R3") # Create center header with header.create(Head("C")): header.append("Company") # Create right header with header.create(Head("R")): header.append(simple_page_number()) # Create left footer with header.create(Foot("L")): header.append("Left Footer") # Create center footer with header.create(Foot("C")): header.append("Center Footer") # Create right footer with header.create(Foot("R")): header.append("Right Footer") doc.preamble.append(header) doc.change_document_style("header") # Add Heading with doc.create(MiniPage(align='c')): doc.append(LargeText(bold("Title"))) doc.append(LineBreak()) doc.append(MediumText(bold("As at:"))) doc.generate_pdf("header", clean_tex=False)
def generate_header(): geometry_options = {"margin": "0.7in"} doc = Document(geometry_options=geometry_options) # Add document header header = PageStyle("header") # Create left header with header.create(Head("L")): header.append("__") header.append(LineBreak()) header.append("_") # Create center header with header.create(Head("C")): header.append("____") # Create right header with header.create(Head("R")): header.append(simple_page_number()) # Create left footer with header.create(Foot("L")): header.append("Left Footer") # Create center footer with header.create(Foot("C")): header.append("Center Footer") # Create right footer with header.create(Foot("R")): header.append("Right Footer") doc.preamble.append(header) doc.change_document_style("header") # Add Heading with doc.create(MiniPage(align='l')): doc.append(LargeText(bold("INVESTMENT PROPERTY - BUY & HOLD"))) doc.append(LineBreak()) doc.append(MediumText(bold(" "))) doc.generate_pdf("header", clean_tex=False) return print('nice')
def details(): if __name__ == '__main__': image_filename = os.path.join(os.path.dirname(__file__), 'kitten.jpg') logo_file = os.path.join(os.path.dirname(__file__),'sample-logo.png') geometry_options = {"tmargin": "1cm", "lmargin": "3cm"} doc = Document(geometry_options=geometry_options) header = PageStyle("header") with header.create(Head("R")): header.append(simple_page_number()) with header.create(Foot("C")): header.append("Center Footer") first_page = PageStyle("firstpage") with first_page.create(Head("L")) as header_left: with header_left.create(MiniPage(width=NoEscape(r"0.49\textwidth"),pos='c')) as logo_wrapper with doc.create(MiniPage(align='l')): doc.append(LargeText(bold("INVESTMENT PROPERTY - BUY & HOLD"))) doc.append(LineBreak()) doc.append(MediumText(bold(" "))) logo_wrapper.append(StandAloneGraphic(image_options="width=120px", filename=logo_file)) with doc.create(Section('Home Adress')): doc.append('Some regular text and some') doc.append(italic('italic text. ')) doc.append('\nAlso some crazy characters: $&#{}') with doc.create(Subsection('Math that is incorrect')): doc.append(Math(data=['2*3', '=', 9])) with doc.create(Subsection('Table of something')): with doc.create(Tabular('rc|cl')) as table: table.add_hline() table.add_row((1, 2, 3, 4)) table.add_hline(1, 2) table.add_empty_row() table.add_row((4, 5, 6, 7)) a = np.array([[100, 10, 20]]).T M = np.matrix([[2, 3, 4], [0, 0, 1], [0, 0, 2]]) with doc.create(Section('The fancy stuff')): with doc.create(Subsection('Correct matrix equations')): doc.append(Math(data=[Matrix(M), Matrix(a), '=', Matrix(M * a)])) with doc.create(Subsection('Alignat math environment')): with doc.create(Alignat(numbering=False, escape=False)) as agn: agn.append(r'\frac{a}{b} &= 0 \\') agn.extend([Matrix(M), Matrix(a), '&=', Matrix(M * a)]) with doc.create(Subsection('Beautiful graphs')): with doc.create(TikZ()): plot_options = 'height=4cm, width=6cm, grid=major' with doc.create(Axis(options=plot_options)) as plot: plot.append(Plot(name='model', func='-x^5 - 242')) coordinates = [ (-4.77778, 2027.60977), (-3.55556, 347.84069), (-2.33333, 22.58953), (-1.11111, -493.50066), (0.11111, 46.66082), (1.33333, -205.56286), (2.55556, -341.40638), (3.77778, -1169.24780), (5.00000, -3269.56775), ] plot.append(Plot(name='estimate', coordinates=coordinates)) with doc.create(Subsection('Cute kitten pictures')): with doc.create(Figure(position='h!')) as kitten_pic: kitten_pic.add_image(image_filename, width='120px') kitten_pic.add_caption('Look it\'s on its back') doc.generate_pdf('full', clean_tex=False)
def save_latex(self, uiObj, Design_Check, reportsummary, filename, rel_path, Disp_2d_image, Disp_3d_image, module=''): companyname = str(reportsummary["ProfileSummary"]['CompanyName']) companylogo = str(reportsummary["ProfileSummary"]['CompanyLogo']) groupteamname = str(reportsummary["ProfileSummary"]['Group/TeamName']) designer = str(reportsummary["ProfileSummary"]['Designer']) projecttitle = str(reportsummary['ProjectTitle']) subtitle = str(reportsummary['Subtitle']) jobnumber = str(reportsummary['JobNumber']) client = str(reportsummary['Client']) does_design_exist = reportsummary['does_design_exist'] osdagheader = '/ResourceFiles/images/Osdag_header_report.png' # Add document header geometry_options = { "top": "5cm", "hmargin": "2cm", "headheight": "100pt", "footskip": "100pt", "bottom": "5cm" } doc = Document(geometry_options=geometry_options, indent=False) doc.packages.append(Package('amsmath')) doc.packages.append(Package('graphicx')) doc.packages.append(Package('needspace')) doc.append(pyl.Command('fontsize', arguments=[8, 12])) doc.append(pyl.Command('selectfont')) doc.add_color('OsdagGreen', 'RGB', '153,169,36') doc.add_color('PassColor', 'RGB', '153,169,36') doc.add_color('Red', 'RGB', '255,0,0') doc.add_color('Green', 'RGB', '0,200,0') doc.add_color('FailColor', 'HTML', '933A16') header = PageStyle("header") # Create center header with header.create(Head("C")): with header.create(Tabularx('|l|p{4cm}|l|X|')) as table: table.add_hline() # MultiColumn(4) table.add_row(( MultiColumn( 2, align='|c|', data=('' if companylogo is '' else StandAloneGraphic( image_options="height=0.95cm", filename=companylogo))), MultiColumn(2, align='|c|', data=[ 'Created with', StandAloneGraphic( image_options="width=4.0cm,height=1cm", filename=rel_path + osdagheader) ]), )) table.add_hline() table.add_row(('Company Name', companyname, 'Project Title', projecttitle), color='OsdagGreen') table.add_hline() table.add_row( ('Group/Team Name', groupteamname, 'Subtitle', subtitle), color='OsdagGreen') table.add_hline() table.add_row(('Designer', designer, 'Job Number', jobnumber), color='OsdagGreen') table.add_hline() table.add_row( ('Date', time.strftime("%d /%m /%Y"), 'Client', client), color='OsdagGreen') table.add_hline() # Create right footer with header.create(Foot("R")): header.append(NoEscape(r'Page \thepage')) # # doc.preamble.append(header) # doc.change_document_style("header") # Add Heading # with doc.create(MiniPage(align='c')): doc.preamble.append(header) doc.change_document_style("header") with doc.create(Section('Input Parameters')): with doc.create( LongTable('|p{5cm}|p{2.5cm}|p{1.5cm}|p{3cm}|p{3.5cm}|', row_height=1.2)) as table: table.add_hline() for i in uiObj: # row_cells = ('9', MultiColumn(3, align='|c|', data='Multicolumn not on left')) if i == "Selected Section Details" or i == KEY_DISP_ANGLE_LIST or i == KEY_DISP_TOPANGLE_LIST or i == KEY_DISP_CLEAT_ANGLE_LIST: # if type(uiObj[i]) == list: continue if type(uiObj[i]) == dict: table.add_hline() sectiondetails = uiObj[i] image_name = sectiondetails[KEY_DISP_SEC_PROFILE] Img_path = '/ResourceFiles/images/' + image_name + '.png' if (len(sectiondetails)) % 2 == 0: # merge_rows = int(round_up(len(sectiondetails),2)/2 + 2) merge_rows = int((len(sectiondetails) / 2)) + 2 else: merge_rows = round_up((len(sectiondetails) / 2), 2) if (len(sectiondetails)) % 2 == 0: sectiondetails[''] = '' a = list(sectiondetails.keys()) # index=0 for x in range(1, (merge_rows + 1)): # table.add_row("Col.Det.",i,columndetails[i]) if x == 1: table.add_row(( MultiRow( merge_rows, data=StandAloneGraphic( image_options= "width=5cm,height=5cm", filename=rel_path + Img_path)), MultiColumn(2, align='|c|', data=a[x]), MultiColumn(2, align='|c|', data=sectiondetails[a[x]]), )) elif x <= 4: table.add_row(( '', MultiColumn(2, align='|c|', data=NoEscape(a[x])), MultiColumn(2, align='|c|', data=NoEscape( sectiondetails[a[x]])), )) else: table.add_row(( '', NoEscape(a[x]), sectiondetails[a[x]], NoEscape(a[merge_rows + x - 4]), sectiondetails[a[merge_rows + x - 4]], )) table.add_hline(2, 5) elif uiObj[i] == "TITLE": table.add_hline() table.add_row((MultiColumn( 5, align='|c|', data=bold(i), ), )) table.add_hline() elif i == 'Section Size*': table.add_hline() table.add_row(( MultiColumn( 3, align='|c|', data=i, ), MultiColumn(2, align='|c|', data="Ref List of Input Section"), )) table.add_hline() elif len(str(uiObj[i])) > 55 and type( uiObj[i]) != pyl.math.Math: str_len = len(str(uiObj[i])) loop_len = round_up((str_len / 55), 1, 1) for j in range(1, loop_len + 1): b = 55 * j + 1 if j == 1: table.add_row(( MultiColumn(3, align='|c|', data=MultiRow(loop_len, data=i)), MultiColumn(2, align='|c|', data=uiObj[i][0:b]), )) else: table.add_row(( MultiColumn(3, align='|c|', data=MultiRow(loop_len, data="")), MultiColumn(2, align='|c|', data=uiObj[i][b - 55:b]), )) table.add_hline() else: table.add_hline() table.add_row(( MultiColumn(3, align='|c|', data=NoEscape(i)), MultiColumn(2, align='|c|', data=uiObj[i]), )) table.add_hline() for i in uiObj: if i == 'Section Size*' or i == KEY_DISP_ANGLE_LIST or i == KEY_DISP_TOPANGLE_LIST or i == KEY_DISP_CLEAT_ANGLE_LIST: with doc.create(Subsection("List of Input Section")): # with doc.create(LongTable('|p{8cm}|p{8cm}|', row_height=1.2)) as table: with doc.create(Tabularx('|p{4cm}|X|', row_height=1.2)) as table: table.add_hline() table.add_row(( MultiColumn( 1, align='|c|', data=i, ), MultiColumn(1, align='|X|', data=uiObj[i].strip("[]")), )) # str_len = len(uiObj[i]) # loop_len = round_up((str_len/100),1,1) # table.add_hline() # for j in range(1,loop_len+1): # b= 100*j+1 # if j ==1: # table.add_row((MultiColumn(1, align='|c|', data=i, ), # MultiColumn(1, align='|X|', data=uiObj[i][0:b]),)) # else: # table.add_row((MultiColumn(1, align='|c|', data=" ", ), # MultiColumn(1, align='|X|', data=uiObj[i][b-100:b]),)) table.add_hline() doc.append( pyl.Command('Needspace', arguments=NoEscape(r'10\baselineskip'))) doc.append(NewPage()) count = 0 with doc.create(Section('Design Checks')): with doc.create( Tabularx( r'|>{\centering}p{12.5cm}|>{\centering\arraybackslash}X|', row_height=1.2)) as table: table.add_hline() # Fail = TextColor("FailColor", bold("Fail")) # Pass = TextColor("PassColor", bold("Pass")) if does_design_exist != True: table.add_row(bold('Design Status'), color_cell("Red", bold("Fail"))) else: table.add_row(bold('Design Status'), color_cell("OsdagGreen", bold("Pass"))) table.add_hline() for check in Design_Check: if check[0] == 'SubSection': if count >= 1: # doc.append(NewPage()) doc.append( pyl.Command( 'Needspace', arguments=NoEscape(r'10\baselineskip'))) with doc.create(Subsection(check[1])): ######################### # if uiObj== "WELDImage": # table.add_hline() # table.add_row((MultiColumn(5, align='|c|', data=bold(i), ),)) # table.add_hline() # else: ######################### with doc.create(LongTable(check[2], row_height=1.2) ) as table: # todo anjali remove table.add_hline() table.add_row( ('Check', 'Required', 'Provided', 'Remarks'), color='OsdagGreen') table.add_hline() table.end_table_header() table.add_hline() count = count + 1 elif check[0] == "Selected": if count >= 1: # doc.append(NewPage()) doc.append( pyl.Command( 'Needspace', arguments=NoEscape(r'10\baselineskip'))) with doc.create(Subsection(check[1])): with doc.create(LongTable(check[2], row_height=1.2)) as table: table.add_hline() for i in uiObj: # row_cells = ('9', MultiColumn(3, align='|c|', data='Multicolumn not on left')) print(i) if type( uiObj[i] ) == dict and i == 'Selected Section Details': table.add_hline() sectiondetails = uiObj[i] image_name = sectiondetails[ KEY_DISP_SEC_PROFILE] Img_path = '/ResourceFiles/images/' + image_name + '.png' if (len(sectiondetails)) % 2 == 0: # merge_rows = int(round_up(len(sectiondetails),2)/2 + 2) merge_rows = int( round_up((len(sectiondetails) / 2), 1, 0) + 2) else: merge_rows = int( round_up((len(sectiondetails) / 2), 1, 0) + 1) print('Hi', len(sectiondetails) / 2, round_up(len(sectiondetails), 2) / 2, merge_rows) if (len(sectiondetails)) % 2 == 0: sectiondetails[''] = '' a = list(sectiondetails.keys()) # index=0 for x in range(1, (merge_rows + 1)): # table.add_row("Col.Det.",i,columndetails[i]) if x == 1: table.add_row(( MultiRow( merge_rows, data=StandAloneGraphic( image_options= "width=5cm,height=5cm", filename=rel_path + Img_path)), MultiColumn(2, align='|c|', data=NoEscape( a[x])), MultiColumn( 2, align='|c|', data=NoEscape( sectiondetails[a[x]])), )) elif x <= 4: table.add_row(( '', MultiColumn(2, align='|c|', data=NoEscape( a[x])), MultiColumn( 2, align='|c|', data=sectiondetails[a[x]]), )) else: table.add_row(( '', NoEscape(a[x]), sectiondetails[a[x]], NoEscape(a[merge_rows + x - 4]), sectiondetails[a[merge_rows + x - 4]], )) table.add_hline(2, 5) table.add_hline() count = count + 1 else: if check[3] == 'Fail': table.add_row((NoEscape(check[0])), check[1], check[2], TextColor("Red", bold(check[3]))) else: table.add_row((NoEscape(check[0])), check[1], check[2], TextColor("OsdagGreen", bold(check[3]))) table.add_hline() # 2D images if len(Disp_2d_image) != 0: if module == KEY_DISP_BCENDPLATE or module == KEY_DISP_BB_EP_SPLICE: if does_design_exist and sys.platform != 'darwin': doc.append(NewPage()) weld_details = rel_path + Disp_2d_image[0] detailing_details = rel_path + Disp_2d_image[1] stiffener_details = rel_path + Disp_2d_image[2] with doc.create(Section('2D Drawings (Typical)')): with doc.create(Figure()) as image: image.add_image(weld_details, width=NoEscape(r'0.7\textwidth'), placement=NoEscape(r'\centering')) image.add_caption( 'Typical Weld Details -- Beam to End Plate Connection' ) # doc.append(NewPage()) with doc.create(Figure()) as image_2: image_2.add_image( detailing_details, width=NoEscape(r'0.7\textwidth'), placement=NoEscape(r'\centering')) image_2.add_caption('Typical Detailing') # doc.append(NewPage()) with doc.create(Figure()) as image_3: image_3.add_image( stiffener_details, width=NoEscape(r'0.9\textwidth'), placement=NoEscape(r'\centering')) image_3.add_caption('Typical Stiffener Details') # doc.append(NewPage()) elif module == KEY_DISP_BASE_PLATE: if does_design_exist and sys.platform != 'darwin': doc.append(NewPage()) bp_sketch = rel_path + Disp_2d_image[0] bp_detailing = rel_path + Disp_2d_image[1] bp_weld = rel_path + Disp_2d_image[2] bp_anchor = rel_path + Disp_2d_image[3] bp_key = rel_path + Disp_2d_image[4] with doc.create(Section('2D Drawings (Typical)')): with doc.create(Figure()) as image_1: image_1.add_image( bp_sketch, width=NoEscape(r'1.0\textwidth'), placement=NoEscape(r'\centering')) image_1.add_caption('Typical Base Plate Details') # doc.append(NewPage()) with doc.create(Figure()) as image_2: image_2.add_image( bp_detailing, width=NoEscape(r'1.0\textwidth'), placement=NoEscape(r'\centering')) image_2.add_caption('Typical Base Plate Detailing') # doc.append(NewPage()) with doc.create(Figure()) as image_3: image_3.add_image( bp_weld, width=NoEscape(r'1.0\textwidth'), placement=NoEscape(r'\centering')) image_3.add_caption('Typical Weld Details') # doc.append(NewPage()) with doc.create(Figure()) as image_4: image_4.add_image( bp_anchor, width=NoEscape(r'0.5\textwidth'), placement=NoEscape(r'\centering')) image_4.add_caption('Typical Anchor Bolt Details') # doc.append(NewPage()) if len(Disp_2d_image[-1]) > 0: with doc.create(Figure()) as image_5: image_5.add_image( bp_key, width=NoEscape(r'0.9\textwidth'), placement=NoEscape(r'\centering')) image_5.add_caption( 'Typical Shear Key Details') # doc.append(NewPage()) if does_design_exist and sys.platform != 'darwin': doc.append(NewPage()) Disp_top_image = "/ResourceFiles/images/top.png" Disp_side_image = "/ResourceFiles/images/side.png" Disp_front_image = "/ResourceFiles/images/front.png" view_3dimg_path = rel_path + Disp_3d_image view_topimg_path = rel_path + Disp_top_image view_sideimg_path = rel_path + Disp_side_image view_frontimg_path = rel_path + Disp_front_image with doc.create(Section('3D Views')): with doc.create( Tabularx( r'|>{\centering}X|>{\centering\arraybackslash}X|', row_height=1.2)) as table: view_3dimg_path = rel_path + Disp_3d_image view_topimg_path = rel_path + Disp_top_image view_sideimg_path = rel_path + Disp_side_image view_frontimg_path = rel_path + Disp_front_image table.add_hline() table.add_row([ StandAloneGraphic(image_options="height=4cm", filename=view_3dimg_path), StandAloneGraphic(image_options="height=4cm", filename=view_topimg_path) ]) table.add_row('(a) 3D View', '(b) Top View') table.add_hline() table.add_row([ StandAloneGraphic(image_options="height=4cm", filename=view_sideimg_path), StandAloneGraphic(image_options="height=4cm", filename=view_frontimg_path) ]) table.add_row('(c) Side View', '(d) Front View') table.add_hline() # with doc.create(Figure(position='h!')) as view_3D: # view_3dimg_path = rel_path + Disp_3d_image # # view_3D.add_image(filename=view_3dimg_path, width=NoEscape(r'\linewidth')) # # view_3D.add_image(filename=view_3dimg_path,width=NoEscape(r'\linewidth,height=6.5cm')) # # view_3D.add_caption('3D View') with doc.create(Section('Design Log')): doc.append( pyl.Command('Needspace', arguments=NoEscape(r'10\baselineskip'))) logger_msgs = reportsummary['logger_messages'].split('\n') for msg in logger_msgs: if ('WARNING' in msg): colour = 'blue' elif ('INFO' in msg): colour = 'OsdagGreen' elif ('ERROR' in msg): colour = 'red' else: continue doc.append(TextColor(colour, '\n' + msg)) try: doc.generate_pdf(filename, compiler='pdflatex', clean_tex=False) except: pass
def save_latex(self, reportsummary, filename, rel_path, Disp_3d_image): companyname = str(reportsummary["ProfileSummary"]['CompanyName']) companylogo = str(reportsummary["ProfileSummary"]['CompanyLogo']) groupteamname = str(reportsummary["ProfileSummary"]['Group/TeamName']) designer = str(reportsummary["ProfileSummary"]['Designer']) projecttitle = str(reportsummary['ProjectTitle']) subtitle = str(reportsummary['Subtitle']) jobnumber = str(reportsummary['JobNumber']) client = str(reportsummary['Client']) header = PageStyle("header") # Create center header with header.create(Head("C")): with header.create(Tabularx('|l|p{6cm}|l|X|')) as table: table.add_hline() # MultiColumn(4) table.add_row(('Company Name', companyname, 'Project Title', projecttitle), color='OsdagGreen') table.add_hline() table.add_row( ('Group/Team Name', groupteamname, 'Subtitle', subtitle), color='OsdagGreen') table.add_hline() table.add_row(('Designer', designer, 'Job Number', jobnumber), color='OsdagGreen') table.add_hline() table.add_row( ('Date', time.strftime("%d /%m /%Y"), 'Client', client), color='OsdagGreen') table.add_hline() # Create right footer with header.create(Foot("R")): header.append(NoEscape(r'Page \thepage')) geometry_options = { "top": "1.2in", "bottom": "1in", "left": "0.6in", "right": "0.6in", "headsep": "0.8in" } doc = Document(geometry_options=geometry_options, indent=False) doc.packages.append(Package('amsmath')) doc.packages.append(Package('graphicx')) doc.packages.append(Package('needspace')) doc.add_color('OsdagGreen', 'HTML', 'D5DF93') doc.preamble.append(header) doc.change_document_style("header") with doc.create(Section('Design Conclusion')): with doc.create(Tabularx('|X|X|', row_height=1.2)) as table: table.add_hline() table.add_row(('Section Designation', 'Remarks'), color='OsdagGreen') table.add_hline() table.add_row( (reportsummary['Define Section']['Section Designation'], 'Pass')) table.add_hline() with doc.create(Section('Section Details')): with doc.create(Tabularx('|X|X|', row_height=1.2)) as table: table.add_hline() table.add_row( (bold('Section Type'), reportsummary['Define Section']['Section Type'])) table.add_hline() table.add_row( (bold('Section Template'), reportsummary['Define Section']['Section Template'])) table.add_hline() with doc.create(Section('Section Parameters')): with doc.create(Tabularx('|X|X|', row_height=1.2)) as table: for parameter in reportsummary['Define Section'][ 'Section Parameters']: para = reportsummary['Define Section'][ 'Section Parameters'][parameter] table.add_hline() table.add_row((bold(para[0]), para[1])) table.add_hline() labels = [ 'Area, a(cm²)', 'Moment of Inertia', 'I_zz(cm4)', 'I_yy(cm4)', 'Radius of Gyration', 'r_zz(cm)', 'r_yy(cm)', 'Centriod', 'c_z(cm)', 'c_y(cm)', 'Plastic Section modulus', 'Z_pz(cm³)', 'Z_py(cm³)', 'Elastic Section modulus', 'Z_zz(cm³)', 'Z_yy(cm³)', ] values = list(reportsummary['Section Properties'].values()) Properties = [ (labels[0], values[0]), (labels[1], ""), (labels[2], values[1]), (labels[3], values[2]), (labels[4], ""), (labels[5], values[3]), (labels[6], values[4]), (labels[7], ""), (labels[8], values[5]), (labels[9], values[6]), (labels[10], ""), (labels[11], values[7]), (labels[12], values[8]), (labels[13], ""), (labels[14], values[9]), (labels[15], values[10]), ] with doc.create(Section('Section Properties')): with doc.create(Tabularx('|X|X|', row_height=1.2)) as table: for ppty in Properties: table.add_hline() table.add_row((bold(ppty[0]), ppty[1])) table.add_hline() doc.append(NewPage()) if (not 'TRAVIS' in os.environ): with doc.create(Section('3D View')): with doc.create(Figure(position='h!')) as view_3D: view_3dimg_path = rel_path + Disp_3d_image # view_3D.add_image(filename=view_3dimg_path, width=NoEscape(r'\linewidth')) view_3D.add_image(filename=view_3dimg_path) view_3D.add_caption('3D View') try: doc.generate_pdf(filename, compiler='pdflatex', clean_tex=False) except: pass
def generate_report(main_title, name, title, email, payroll): # For saving the report in the Desktop folder dir_output=os.path.join( '~', 'Desktop', 'absconbest_payroll', 'output' ) dir_output=os.path.expanduser(dir_output) geometry_options = { "head": "40pt", "margin": "0.5in", "bottom": "0.6in", "includeheadfoot": True } doc = Document(geometry_options=geometry_options) # Generating # first page style first_page = PageStyle("firstpage") # Header image with first_page.create(Head("L")) as header_left: with header_left.create( MiniPage(width=NoEscape(r"0.49\textwidth"), pos='c') ) as logo_wrapper: logo_file = 'logo.png' logo_wrapper.append( StandAloneGraphic( image_options="width=120px", filename=logo_file ) ) # Add document title with first_page.create(Head("R")) as right_header: with right_header.create(MiniPage( width=NoEscape(r"0.49\textwidth"), pos='c', align='r') ) as title_wrapper: title_wrapper.append(LargeText(bold('Payroll Report'))) title_wrapper.append(LineBreak()) title_wrapper.append(MediumText(bold(main_title))) # Add footer with first_page.create(Foot("C")): first_page.append(simple_page_number()) doc.preamble.append(first_page) #Add employee information with doc.create(Tabu("X[l] X[r]")) as first_page_table: employee = MiniPage(width=NoEscape(r"0.49\textwidth"), pos='h') employee.append(name) employee.append("\n") employee.append(title) employee.append("\n") employee.append(email) #Dummy table branch = MiniPage(width=NoEscape(r"0.49\textwidth"), pos='t!', align='r') # branch.append(bold("1181...")) # branch.append(LineBreak()) # branch.append(bold("TIB Cheque")) first_page_table.add_row([employee, branch]) first_page_table.add_empty_row() doc.change_document_style("firstpage") doc.add_color(name="lightgray", model="gray", description="0.80") #Add payroll table with doc.create(LongTabu("X[l] X[c] X[c] X[c] X[r]", row_height=1.5)) as data_table: data_table.add_row(['Work', 'Rate Per Hour ($)', 'Time in Minutes', 'Time in Hours', 'Wage ($)'], mapper=bold, color="lightgray") data_table.add_empty_row() data_table.add_hline() #Following Pandas' API payroll=payroll.reset_index() for i in range(len(payroll.index)): try: row = [payroll['Work'][i], round(payroll['Rate Per Hour'][i],0), round(payroll['TIM'][i],0), round(payroll['TIH'][i],3), round(payroll['Wage'][i],1)] except TypeError: row = [payroll['Work'][i], 'n/a', round(payroll['TIM'][i],0), round(payroll['TIH'][i],3), round(payroll['Wage'][i],1)] if (i%2)==0: data_table.add_row(row, color="lightgray") else: data_table.add_row(row) # data_table.add_row([payroll['Work'][l_p], # round(payroll['TIM'][l_p],0), # round(payroll['TIH'][l_p],3), # '', # round(payroll['Wage'][l_p],1)] # ) doc.append(NewPage()) doc.generate_pdf( filepath=os.path.join( dir_output, main_title.lower().replace(" ","_").replace(",",""), ), clean_tex=True, clean=True, )
def gen_pdf(data): ''' This function generates a pdf prayer time schedule using latexself. It takes a Tawqeetex object (data) that must be initialized before the call. ''' geometry_options = {"tmargin": "3cm", "bmargin": "2cm", "rmargin": "2cm", "lmargin": "2cm"} doc = Document(geometry_options=geometry_options) # Add packages for arabic text doc.preamble.append(NoEscape(r'\usepackage[T2A,LAE,T1]{fontenc}')) doc.preamble.append(NoEscape(r'\usepackage[arabic, USenglish]{babel}')) # Add document header header = PageStyle("header") # header_thickness=0, footer_thickness=0 # # Create left header # with header.create(Head("L")): # header.append("") # # Create center header # with header.create(Head("C")): # header.append("") # # Create right header # with header.create(Head("R")): # header.append("logo goes here") # Create center footer with header.create(Foot("C")): #NOTE: L and R footer are also available header.append("Generated with tawqeeTeX") # Add Heading doc.preamble.append(header) doc.change_document_style("header") doc.append(NoEscape(r'\begin{center}')) #doc.append(VerticalSpace('20pt')) doc.append(LargeText(bold(get_title_str(data.lang, data.month, data.year)))) doc.append(VerticalSpace('20pt')) doc.append(LineBreak()) doc.append(LargeText(italic(data.city))) doc.append(VerticalSpace('20pt')) doc.append(LineBreak()) doc.append(NoEscape(r'\rowcolors{2}{green!10}{yellow!10}')) doc.append(NoEscape(r'\setlength{\arrayrulewidth}{0.5pt}')) # Create table for the prayer time schedule with doc.create(Tabular('|lc|cccccc|cr|', pos='c', row_height='1.35', col_space='7.5', width=10)) as table: table.add_hline() table.add_row(('', get_month_str(data.lang, data.month), 'Isha', 'Maghrib', 'Asr', 'Dhuhr', 'Shuruq', 'Fajr', NoEscape(r'\AR{' + data.months['hi'] + '}'), ''), color='lightgray!20') table.add_row(('', '', *get_prayers_str(), '', ''), color='lightgray!20') table.add_hline() c = 0 for day, weekday in data.date_gr.items(): # Insert timings table.add_row(get_weekday_str(weekday, data.lang), day, data.isha[c], data.maghrib[c], data.asr[c], data.dhuhr[c], data.sunrise[c], data.fajr[c], data.hi_day[c], NoEscape(r'\AR{' + data.hi_weekday[c] + '}')) table.add_hline() c += 1 doc.append(NoEscape(r'\end{center}')) doc.generate_pdf(data.city + '-' + data.month + '-' + data.year, clean_tex=False, silent=True)
def create(self): try: self.status['text'] = 'Загрузка, подождите' self.root.update() # Настройки отступов, языка geometry_options = { "tmargin": "2cm", "lmargin": "3cm", "rmargin": "1.5cm", "bmargin": "2cm" } doc = Document(geometry_options=geometry_options) doc.packages.add( Package('grffile', options=['encoding', 'filenameencoding=utf8'])) doc.packages.add(Package('babel', options=['russian'])) # Вставляем логотип МИРЭА image_filename = os.path.join(os.path.dirname(__file__), 'логотип.png') with doc.create(Figure(position='h!')) as logo: logo.add_image(image_filename, width='80px') # Обложка doc.change_length(r"\TPHorizModule", "1mm") doc.change_length(r"\TPVertModule", "1mm") with doc.create(MiniPage(width=r"\textwidth")) as page: # Центральная часть обложки with page.create(TextBlock(180, 0, 0)): page.append(Command('centering')) page.append('МИНОБРНАУКИ РОССИИ\n') page.append( 'Федеральное государственное бюджетное образовательное учреждение высшего образования\n' ) page.append( MediumText( bold( '«МИРЭА - Российский Технологический Университет»\n' ))) page.append(LargeText(bold('РТУ МИРЭА\n'))) page.append(LineBreak()) page.append( MediumText( bold( 'Институт комплексной безопасности и специального приборостроения\n' ))) page.append(LineBreak()) page.append( 'Кафедра КБ-8 «Информационное Противоборство»\n') page.append(LineBreak()) page.append(LineBreak()) page.append(LineBreak()) page.append(LargeText('Отчёт\n')) page.append(f'{str(self.entry1.get())}\n') # Правая часть обложки with page.create(TextBlock(80, 88, 120)): if self.your_var.get() == 0: page.append('Выполнил:\n') page.append( f'Студент {str(self.entry2.get())} курса\n') else: page.append('Выполнила:\n') page.append( f'Студентка {str(self.entry2.get())} курса\n') page.append(f'Группа {str(self.entry3.get())}\n') page.append(f'Шифр {str(self.entry4.get())}\n') page.append(f'{str(self.entry5.get())}\n') page.append(LineBreak()) page.append(LineBreak()) if self.var.get() == 0: page.append('Проверил:\n') else: page.append('Проверила:\n') page.append(f'{str(self.entry6.get())}\n') # Нижний колонтитул header = PageStyle("header") with header.create(Foot("C")): header.append(f'Москва, {time.now().timetuple().tm_year}\n') doc.preamble.append(header) doc.change_document_style("header") doc.generate_pdf("title", clean_tex=False) self.status['text'] = 'Готово!' except FileNotFoundError as e: self.status['text'] = str(e)
def setup_header_footer(doc, pdf_opts, display_opts): # Header with title, tagline, page number right, date left # Footer with key to denote someting about drinks title = pdf_opts.title or '@Schubar' if display_opts.prices: tagline = 'Tips never required, always appreciated' tagline = pdf_opts.tagline or 'Tips for your drinks never required, always appreciated' else: tagline = 'Get Fubar at Schubar on the good stuff' tagline = pdf_opts.tagline or 'Get Fubar at Schubar, but, like, in a classy way' hf = PageStyle("schubarheaderfooter", header_thickness=0.4, footer_thickness=0.4) with hf.create(Head('L')): hf.append(TitleText(title)) hf.append(Command('\\')) hf.append(FootnoteText(italic(tagline))) with hf.create(Head('R')): hf.append(FootnoteText(time.strftime("%b %d, %Y"))) if display_opts.origin: with hf.create(Foot('L')): hf.append(superscript("*")) #hf.append(superscript(NoEscape("\dag"))) hf.append(FootnoteText(r"Schubar Original")) with hf.create(Foot('C')): if display_opts.prices: hf.append(HorizontalSpace('12pt')) hf.append( FootnoteText( NoEscape( r"\$ amount shown is recommended tip, calculated from cost of ingredients" ))) with hf.create(Foot('R')): hf.append(FootnoteText(Command('thepage'))) doc.preamble.append(hf) doc.change_document_style("schubarheaderfooter")
def generate_header(self, output="Exam", instructor="Vaccaro", section="English", test_name="Final Exam", version=1): header = PageStyle("header") with header.create(Head("C")): header.append(instructor) header.append(LineBreak()) with header.create(Head("L")): header.append(section) header.append(LineBreak()) header.append(test_name + str(version) if output != 'key' else test_name) with header.create(Head("R")): if (output == "exam"): header.append("Student: _____________") elif (output == "answers"): header.append("Answers v" + str(version)) else: header.append("Key") with header.create(Foot("R")): header.append(simple_page_number()) return header
def _create_header(self, info): style_name = NoEscape('header{}'.format(info['run'])) header = PageStyle(style_name) with header.create(Head('L')): header.append(info['name']) header.append(LineBreak()) header.append('Date: {}'.format(self._date())) with header.create(Head('R')): header.append('Seed: {}'.format(info['seed'])) header.append(LineBreak()) header.append('Run: {}'.format(info['run'])) self._doc.preamble.append(header) self._doc.change_document_style(style_name)