def addEducation(self, year, grad, major): self.doc.append(Command("begin", ["rSection", "Education"])) self.doc.append(Command("EducationEntry", year)) self.doc.append(LineBreak()) self.doc.append("Bachelor of Science in " + major) self.doc.append(LineBreak()) self.doc.append("Projected graduation date: June " + grad) self.doc.append(Command("end", "rSection"))
def constroiCorpo(self): with self.documento.create(Tabu("X[l] X[r]")) as first_page_table: customer = MiniPage(width=NoEscape(r"0.49\textwidth"), pos='h') customer.append(bold("Nome fantasia: ")) customer.append(self.usuarioModel.nomeFantasia) customer.append("\n") customer.append(bold("CNPJ: ")) customer.append(mascaraCNPJ(self.usuarioModel.cnpj)) customer.append("\n") customer.append(bold("Endereço: ")) if self.usuarioModel.endereco == 'None': customer.append('---') else: customer.append(self.usuarioModel.endereco) # Add branch information branch = MiniPage(width=NoEscape(r"0.49\textwidth"), pos='t!', align='r') branch.append(f"Total de clientes: {self.totalClientes}") branch.append(LineBreak()) branch.append(f"Total de clientes Ativos: {self.clientesAtivos}") branch.append(LineBreak()) branch.append( f"Média de clientes ativos: {round((self.clientesAtivos / self.totalClientes)*100)} % " ) branch.append(LineBreak()) first_page_table.add_row([customer, branch]) first_page_table.add_empty_row() self.documento.change_document_style("firstpage") with self.documento.create( LongTabu("X[1.5l] X[2l] X[r] X[r] X[r]", row_height=1.5)) as data_table: data_table.add_row([ "Última atualização", "Nome do cliente", "Turma", "credits($)", "balance($)" ], mapper=bold, color="lightgray") data_table.add_empty_row() data_table.add_hline() for i, cliente in enumerate(self.clientesList): clienteRow = list() clienteRow.append(mascaraMeses(cliente[13])) clienteRow.append(cliente[1] + ' ' + cliente[2]) clienteRow.append('Teste 1') clienteRow.append('Teste 2') clienteRow.append('Teste 3') if (i % 2) == 0: data_table.add_row(clienteRow, color="lightgray") else: data_table.add_row(clienteRow)
def addProjects(self, projects): self.doc.append(Command("begin", ["rSection", "Projects"])) for i in range(len(projects)): self.doc.append(Command("BoldHeading", projects[i][0])) self.doc.append(LineBreak()) self.doc.append(projects[i][1]) if i < len(projects) - 1: self.doc.append(LineBreak()) self.doc.append(LineBreak()) self.doc.append(Command("end", "rSection"))
def create_comp_table(self): self.append(LineBreak()) self.append(Command("scriptsize")) total_concp = 0 with self.create( Tabu(r"|X[2]|X[c]|X[c]|X[c]|X[c]|X[c]|X[c]|X[c]|", to=r"\textwidth", width=8)) as data_table: data_table.add_hline() data_table.add_row( [ "Компонент", "Сод., \%", "$C_i$", "$X_i$", "$Z_i$", "$\lg W_i$", "$W_i$", "$K_i$" ], #mapper=bold, color="gray", escape=False) data_table.add_hline() for key, val in self.components.items(): data_table.add_row([ key, val['concp'], val['concr'], val['xi'], val['zi'], val['lgw'], val['w'], val['k'] ]) total_concp += float(val['concp']) data_table.add_hline() data_table.add_row(("Компонентов учтено", str(total_concp) + " %", MultiColumn(6, align='r|', data=''))) data_table.add_hline() data_table.add_row([ MultiColumn(7, align='|r|', data='Показатель К степени опасности отхода:'), self.k ]) data_table.add_hline() data_table.add_row((MultiColumn(7, align='|r|', data='Класс опасности отхода:'), self.safety_class)) data_table.add_hline() self.append(Command("normalsize")) self.append(Command("bigskip")) self.append(LineBreak())
def constroiCabecalho(self): self.firstPage = PageStyle('firstpage') with self.firstPage.create(Head("L")) as header_left: with header_left.create( MiniPage(width=NoEscape(r"0.3\textwidth"), pos='l')) as logo_wrapper: with logo_wrapper.create( Tabularx('X X', width_argument=NoEscape( r"0.5\textwidth"))) as logo: logo.add_row([MultiColumn(2, align='c')]) logo_file = os.path.join(os.getcwd(), 'Telas', 'Imagens', 'nautilusDash.png') imagem = StandAloneGraphic(image_options="width=36px", filename=logo_file) textLogo = MiniPage(width=NoEscape(r"0.6\textwidth"), content_pos='t', align='l') textLogo.append(LargeText(bold('Nautilus'))) textLogo.append(LineBreak()) textLogo.append('Navegue sem medo') textLogo.append(LineBreak()) textLogo.append('\n') logo.add_row([imagem, textLogo]) with self.firstPage.create(Head("C")) as headerCenter: with headerCenter.create( MiniPage(width=NoEscape(r"0.4\textwidth"), pos='c')) as centro: centro.append(LargeText(bold('Relatório geral de clientes'))) # Add document title with self.firstPage.create(Head("R")) as right_header: with right_header.create( MiniPage(width=NoEscape(r"0.3\textwidth"), pos='R', align='r')) as title_wrapper: title_wrapper.append( LargeText(bold(self.usuarioModel.nomeEmpresa))) title_wrapper.append(LineBreak()) title_wrapper.append( MediumText(mascaraMeses(data=datetime.date.today())))
def print_component_data(self, name, props): self.append(LineBreak()) self.append(f'Первичные показатели опасности компонента: {name}') self.append(LineBreak()) self.append(LineBreak()) self.append(Command("scriptsize")) if len(props) < 6: Binf = 1 elif 6 <= len(props) <= 8: Binf = 2 elif 8 < len(props) <= 10: Binf = 3 else: Binf = 4 with self.create( Tabu(r"|X[3]|X[c]|X[c]|X[c]|", to=r"\textwidth", width=4)) as data_table: data_table.add_hline() data_table.add_row([ "Показатель опасности", "Значения показателя", "Балл", "Источник информации" ], mapper=bold, color="lightgray") data_table.add_hline() for prop in props: sources = "" for litsource in prop['literature_source']: self.litsources[litsource['name']] = litsource['latexpart'] sources += "\\" + f'cite{{{litsource["name"]}}}' data_table.add_row([ prop['name'], prop['value'], prop['score'], NoEscape(sources) ]) data_table.add_hline() data_table.add_row(("Показатель информационного обеспечения", MultiColumn(3, align='l|', data=Math(data=f"Binf={Binf}", inline=True)))) data_table.add_hline() self.append(Command("normalsize")) self.append(LineBreak())
def add_left_column(doc): with column_with_margin(doc) as page: with page.create(Center()) as c: c.append( StandAloneGraphic(image_options="width=130px", filename=os.path.join(BASE_DIR, "logo.png"))) add_space_plus_new_line(c, 1.5) c.append(MediumText(bold("Triple Verified Grading Report"))) add_space_plus_new_line(c, 0.7) c.append(MediumText("No.: G00000013")) add_space_plus_new_line(c, 0.5) table = Tabular("l l", row_height=1.3) qr_code = StandAloneGraphic(image_options="width=50px", filename=os.path.join( BASE_DIR, "qr_code.png")) table.add_row(MultiRow(3, data=qr_code), "View digital report at:") table.add_row( "", hyperlink("https://www.gradia.net/verify/G00000013", "gradia.net/verify")) table.add_row("", "and also on the blockchain") page.append(table) # we want to match this with the center line add_space_plus_new_line(page, 2.5) make_heading_divider(page, "report details") table = Tabular("l l", row_height=1.5, col_space="1em") table.add_row("Origin Testing", bold("Natural")) table.add_row("Shape & Cutting", bold("Round Brilliant")) table.add_row("Measurements", bold("2.89 - 2.92 x 1.802")) page.append(table) add_space_plus_new_line(page, 2) make_heading_divider(page, "diamond attributes") table = Tabular("l l l l", row_height=1.5, col_space="1em") table.add_row("Carat", "Color", "Clarity", "Fluoresence") table.add_row(bold("0.09"), bold("F"), bold("VS2"), bold("None")) page.append(table) add_space_plus_new_line(page, 1.5) table = Tabular("l l l", row_height=1.5, col_space="1em") table.add_row("Cut", "Polish", "Symmetry") table.add_row(bold("Very Good"), bold("Very Good"), bold("Good")) page.append(table) add_space_plus_new_line(page, 2) make_heading_divider(page, "comments") page.append(bold("This is a sample report.")) page.append(LineBreak()) page.append(bold("This is a second sentence."))
def print_component_data(self, props): with self.create( Tabu(r"|X[c]|X[c]|X[c]|X[c]|", to=r"\textwidth", width=4)) as data_table: data_table.add_hline() data_table.add_row([ "Показатель опасности", "Значения показателя", "Балл", "Источник информации" ], mapper=bold, color="lightgray") data_table.add_hline() for name, value in props.items(): data_table.add_row( [name, value['value'], value['score'], value['litsource']]) data_table.add_hline() self.append(LineBreak())
def fill_document(self): """Add a section, a subsection and some text to the document.""" self.append(Section('Протокол расчета класса опасности отхода')) self.create_head("Наименование отхода:", self.name) self.append(Command("bigskip")) self.append(LineBreak()) if self.fkko: self.create_head("Код ФККО (2020):", self.fkko) self.append(Command("bigskip")) self.append(LineBreak()) self.append("Расчет класса опасности отхода выполнен в соответствии с \ <<Критериями отнесения отходов к I-V классам опасности по степени негативного воздействия на окружающую среду>>, \ утвержденными приказом МПР России от 04 декабря 2014 г. № 536.") self.append(Command("bigskip")) self.append(Command("noindent")) self.create_comp_table() self.append("Показатель ") self.append(Math(data="K", inline=True)) self.append( " степени опасности отхода для окружающей среды рассчитывается по следующей формуле:" ) self.append(Math(data="K=K_1+K_2+\dots +K_n,", escape=False)) self.append("где ") self.append( Math(data="K_1, K_2, \ldots, K_n", inline=True, escape=False)) self.append( NoEscape( " --- показатели степени опасности отдельных компонентов отхода для окружающей среды, " )) self.append(Math(data="n ", inline=True)) self.append(NoEscape(" --- количество компонентов отхода.")) self.append(LineBreak()) self.append( "Отнесение отходов к классу опасности расчетным методом по показателю\ степени опасности отхода для окружающей среды осуществляется в соответствии с таблицей:" ) self.append(LineBreak()) self.append(Command("bigskip")) self.append(LineBreak()) self.append(Command("noindent")) with self.create(Tabu(r"|X[c]|X[c]|", to=r"\textwidth", width=2)) as data_table: data_table.add_hline() data_table.add_row([ "Класс опасности отхода", "Степень опасности отхода для окружающей среды" ], mapper=bold, color="lightgray") data_table.add_hline() data_table.add_row(["I", "$10^4 \leq K < 10^6 $"], escape=False) data_table.add_hline() data_table.add_row(["II", "$10^3 \leq K < 10^4 $"], escape=False) data_table.add_hline() data_table.add_row(["III", "$10^2 \leq K < 10^3 $"], escape=False) data_table.add_hline() data_table.add_row(["IV", "$10 \leq K < 10^2 $"], escape=False) data_table.add_hline() data_table.add_row(["V", "$K < 10 $"], escape=False) data_table.add_hline() self.append(Command("bigskip")) self.append(LineBreak()) self.append( NoEscape( r"""Степень опасности компонента отхода для окружающей среды $K_i$ рассчитывается как отношение концентрации компонента отхода $C_i$ к коэффициенту его степени опасности для окружающей среды $W_i$: $$K_i = \frac{C_i}{W_i},$$ где $C_i$ --- концентрация $i$--тогo компонента в отходе [мг/кг]; $W_i$ --- коэффициент степени опасности $i$-того компонента отхода для окружающей среды. """)) if len(self.safe_components) == 1: string = f"В соответствии с компонент {self.safe_components[0]['name'].lower()} относится" elif len(self.safe_components) > 1: comps = "" for comp in self.safe_components[:-1]: comps = comps + comp["name"] + ", " comps += self.safe_components[-1]["name"] string = f"В соответствии с компоненты: {comps.lower()} относятся" else: string = "" if string: self.append( NoEscape( string + r""" к практически неопасным компонентам со средним баллом $X_i$, равным 4 и, следовательно, коэффициентом степени опасности для ОПС $W_i$, равным $10^6$.""" )) self.append(LineBreak()) self.append( """Для определения коэффициента степени опасности компонента отхода \ для окружающей среды по каждому компоненту отхода устанавливаются степени их \ опасности для окружающей среды для различных компонентов природной среды.""" ) self.append(LineBreak()) for name, data in self.components.items(): if data['props']: self.append(LineBreak()) self.append( f"Первичные показатели опасности компонента: {name}") self.append(LineBreak()) self.print_component_data(data['props']) self.append(Command("bigskip")) self.generate_pdf(f'/tmp/temp{self.filename}', clean_tex=False)
def create_comp_table(self): self.append(LineBreak()) self.append(Command("scriptsize")) total_concp = 0 has_known_components = False # flag that the waste has components #has_soil_components = False with self.create( Tabu(r"|X[2.2]|X[c]|X[c]|X[c]|X[c]|X[c]|X[c]|X[c]|", to=r"\textwidth", width=8)) as data_table: data_table.add_hline() data_table.add_row( [ "Компонент", "Сод., \%", "$C_i$, мг/кг", "$X_i$", "$Z_i$", "$\lg W_i$", "$W_i$, мг/кг", "$K_i$" ], #mapper=bold, color="gray", escape=False) data_table.add_hline() for compnt in self.components: concp = float(compnt['concp']) concr = float(compnt['concr']) k = float(compnt['k']) name = compnt['component']['name'] x = compnt['component']['get_x'] z = compnt['component']['get_z'] log_w = compnt['component']['get_log_w'] w = compnt['component']['get_w'] x_lit_source = compnt['component']['x_value_lit_source'] binf = compnt['component']['Binf'] if compnt['component']['props']: self.props[name] = compnt['component']['props'] # land_concentration = compnt['component']['land_concentration'] # land_concentration_lit_source = compnt['component']['land_concentration_lit_source'] if x_lit_source: name = NoEscape(name + r"\footnotemark[1]") has_known_components = True # elif val['has_soil_c']: # key2 = NoEscape(key + r"\footnotemark[2]") # if has_soil_components: # key2 = NoEscape(key + r"\footnotemark[2]") # has_soil_components = True # else: # key2=key data_table.add_row([ name, "%.2f" % concp, "%.0f" % concr, "%.2f" % x, "%.2f" % z, "%.2f" % log_w, "%.0f" % w, "%.1f" % k ]) total_concp += concp data_table.add_hline() data_table.add_row( ("Компонентов учтено", "%.0f" % total_concp + " %", MultiColumn(6, align='r|', data=''))) data_table.add_hline() data_table.add_row([ MultiColumn(7, align='|r|', data='Показатель К степени опасности отхода:'), "%.1f" % self.k ]) data_table.add_hline() data_table.add_row((MultiColumn(7, align='|r|', data='Класс опасности отхода:'), self.safety_class)) data_table.add_hline() if has_known_components: self.append( NoEscape( r"\footnotetext[1]{Данные приведены согласно приказу Министерства природных ресурсов и экологии РФ от 4 декабря 2014 г. N 536}" )) # if has_soil_components: # self.append(NoEscape(r"\footnotetext[2]{Концентрация не превышает содержание в основных типах почв, принято W=10\textsuperscript{6} (МПР 536)}")) self.append(Command("normalsize")) self.append(Command("bigskip")) self.append(LineBreak())
def fill_document(self): """Add a section, a subsection and some text to the document.""" self.append(Section('Протокол расчета класса опасности отхода')) self.create_head("Наименование отхода:", self.name) self.append(Command("bigskip")) self.append(LineBreak()) if self.fkko: self.create_head("Код ФККО:", self.fkko) self.append(Command("bigskip")) self.append(LineBreak()) self.append("Расчет класса опасности отхода выполнен в соответствии с \ <<Критериями отнесения отходов к I-V классам опасности по степени негативного воздействия на окружающую среду>>, \ утвержденными приказом МПР России от 04 декабря 2014 г. № 536.") self.append(Command("bigskip")) self.append(Command("noindent")) self.create_comp_table() self.append("Показатель ") self.append(Math(data="K", inline=True)) self.append( " степени опасности отхода для окружающей среды рассчитывается по следующей формуле:" ) self.append(Math(data="K=K_1+K_2+\dots +K_n,", escape=False)) self.append("где ") self.append( Math(data="K_1, K_2, \ldots, K_n", inline=True, escape=False)) self.append( NoEscape( " --- показатели степени опасности отдельных компонентов отхода для окружающей среды, " )) self.append(Math(data=" n ", inline=True)) self.append(NoEscape(" --- количество компонентов отхода.")) self.append(LineBreak()) self.append( "Отнесение отходов к классу опасности расчетным методом по показателю\ степени опасности отхода для окружающей среды осуществляется в соответствии с таблицей:" ) self.append(LineBreak()) self.append(Command("bigskip")) self.append(LineBreak()) self.append(Command("noindent")) with self.create(Tabu(r"|X[c]|X[c]|", to=r"\textwidth", width=2)) as data_table: data_table.add_hline() data_table.add_row([ "Класс опасности отхода", "Степень опасности отхода для окружающей среды" ], mapper=bold, color="lightgray") data_table.add_hline() data_table.add_row(["I", "$10^4 \leq K < 10^6 $"], escape=False) data_table.add_hline() data_table.add_row(["II", "$10^3 \leq K < 10^4 $"], escape=False) data_table.add_hline() data_table.add_row(["III", "$10^2 \leq K < 10^3 $"], escape=False) data_table.add_hline() data_table.add_row(["IV", "$10 < K < 10^2 $"], escape=False) data_table.add_hline() data_table.add_row(["V", "$K \leq 10 $"], escape=False) data_table.add_hline() self.append(Command("bigskip")) self.append(LineBreak()) self.append( NoEscape( r"""Степень опасности компонента отхода для окружающей среды $K_i$ рассчитывается как отношение концентрации компонента отхода $C_i$ к коэффициенту его степени опасности для окружающей среды $W_i$: $$K_i = \frac{C_i}{W_i},$$ где $C_i$ --- концентрация $i$--тогo компонента в отходе [мг/кг]; $W_i$ --- коэффициент степени опасности $i$-того компонента отхода для окружающей среды, [мг/кг]. """)) self.append(LineBreak()) self.append( """Для определения коэффициента степени опасности компонента отхода \ для окружающей среды по каждому компоненту отхода устанавливаются степени их \ опасности для окружающей среды для различных компонентов природной среды.""" ) self.append(LineBreak()) for name, props in self.props.items(): self.print_component_data(name, props) self.create_bibliography() self.append(Command("bigskip")) self.print_shortcuts()
def add_space_plus_new_line(doc, ems): doc.append(VerticalSpace(f"{ems}em")) doc.append(LineBreak())