def ConvertImageToPDF(image_path, docx_path, dest_path, wordapp): if os.path.exists(dest_path): return try: doc = Document() #以默认模板建立文档对象 doc.add_picture(image_path, width=Inches(6), height=Inches(8)) except Exception as e: if os.path.exists(docx_path): os.remove(docx_path) if os.path.exists(dest_path): os.remove(dest_path) print('Error:' + image_path, e) return doc.save(docx_path) #wdFormatDocument = 0 #wdFormatDocument97 = 0 #wdFormatDocumentDefault = 16 #wdFormatDOSText = 4 #wdFormatDOSTextLineBreaks = 5 #wdFormatEncodedText = 7 #wdFormatFilteredHTML = 10 #wdFormatFlatXML = 19 #wdFormatFlatXMLMacroEnabled = 20 #wdFormatFlatXMLTemplate = 21 #wdFormatFlatXMLTemplateMacroEnabled = 22 #wdFormatHTML = 8 wdFormatPDF = 17 #wdFormatRTF = 6 #wdFormatTemplate = 1 #wdFormatTemplate97 = 1 #wdFormatText = 2 #wdFormatTextLineBreaks = 3 #wdFormatUnicodeText = 7 #wdFormatWebArchive = 9 #wdFormatXML = 11 #wdFormatXMLDocument = 12 #wdFormatXMLDocumentMacroEnabled = 13 #wdFormatXMLTemplate = 14 #wdFormatXMLTemplateMacroEnabled = 15 #wdFormatXPS = 18 #wordapp.Visible = True #doc = wordapp.Documents.Add() doc = wordapp.Documents.Open(docx_path) # 插入文字 range = doc.Range(0, 0) #range.InsertBefore('6b.jpg') #doc.SaveAs('6b.docx') #doc.SaveAs('6b.pdf', win32com.client.constants.wdFormatPDF) doc.SaveAs(dest_path, wdFormatPDF) print(dest_path) doc.Close()
def sir(srv_dict: dict): '''fill SIR form''' SIR = os.path.join(wp, 'SIR.docx') out_file = os.path.join(wp, '%s.pdf' % srv_dict['name']) doc = Document(SIR) tables = doc.tables tinfo = tables[0] cName = tinfo.cell(0, 0) # (row,column) cName.text = 'System Name: ' + srv_dict['name'].upper() cSN = tinfo.cell(0, 1) cSN.text = 'Serial Number: ' + srv_dict['SN'].upper() cSite = tinfo.cell(1, 0) cSite.text = 'Site: ' + srv_dict['site'].upper() cloc = tinfo.cell(1, 1) cloc.text = 'Area/Building/Room:\n' + srv_dict['loc'].upper() tmodel = tables[1] cProduct = tmodel.cell(1, 0) cProduct.text = srv_dict['model'][0] cDescription = tmodel.cell(1, 2) cDescription.text = srv_dict['model'][1] tsign = tables[3] cdate = tsign.cell(1, 1) cdate.text = '\n' + time.strftime('%Y-%m-%d', time.localtime( time.time())) + '\n' # sig = r'E:\UT\signature.png' # s = t1.cell(1,2).add_paragraph() # r = s.add_run() # r.add_picture(sig,width = Inches(0.5), height = Inches(0.5) ) try: doc.save(SIR) except PermissionError as e: print(e) print('Is file being opened?') # os.startfile(SIR,'print') try: wdFormatPDF = 17 word = comtypes.client.CreateObject('Word.Application') doc = word.Documents.Open(SIR) doc.SaveAs(out_file, FileFormat=wdFormatPDF) doc.Close() word.Quit() except: # print(e) print('PDF already created')
info4 = t.Rows[1].Cells[1].Range.Text if info4.endswith('\x07'): info4 = info4[:-2] # time = t.Rows[2].Cells[1].Range.Text # if time.endswith('\x07'): # time = time[:-2] place = t.Rows[3].Cells[1].Range.Text if place.endswith('\x07'): place = place[:-2] info5 = t.Rows[4].Cells[1].Range.Text if info5.endswith('\x07'): info5 = info5[:-2] for ps in p: if len(ps.Range.Text) != 0: newp.append(ps.Range.Text) doc.Close() while '' in newp: newp.remove('') while '\r' in newp: newp.remove('\r') info1 = newp[0] spl = re.split(r'\s|:', info1) while '' in spl: spl.remove('') code = spl[1] simple = spl[3] #trial = re.search(r'证券简称:(.*)',info1) #simple = trial.group().split(':')[1] info2 = newp[1]
def Generate(self, Efield, Eid, DocName): ''' Generates the specified document Efield with the information of a person with ID Eid. :param Efield: Type of document to generate. :param Eid: ID of the person whose information will be used in the document. :param DocName: The name of the generated document. :return: The document specified with the person's information. ''' if Efield == 'eCert'or Efield == 'eCont' or Efield == 'eEval'or Efield == 'eDism' or \ Efield == 'eWarn' or Efield == 'eTrain': id = 0 name = '' sal = 0 pos = '' date = '' sup = '' #Dictionary of the document templates and their filename templates = { 'eCert': 'vf empleo.docx', 'eCont': 'employment-agreement.docx', 'eEval': 'Employment_Eval.docx', 'eDism': 'Sample-Letter-of-Dismissal.docx', 'eWarn': 'employee-warning-notice.docx', 'eTrain': 'Completion-Certificate-Template.docx' } doc = Document(templates[Efield]) wb = load_workbook( os.path.dirname(os.path.dirname(__file__)) + '/Database.xlsx') ws = wb['Sheet1'] empinfo = Database.getEmployeeInfo(Database, Eid) #Replaces template words with the person's information for info in doc.paragraphs: new = info.text.replace('NNNN', empinfo['Name']) info.text = new new = info.text.replace('SSSS', str(empinfo['Salary'])) info.text = new new = info.text.replace('IIII', str(empinfo['ID'])) info.text = new new = info.text.replace('PPPP', empinfo['Position']) info.text = new new = info.text.replace('DDDD', empinfo['Date']) info.text = new new = info.text.replace('UUUU', empinfo['Supervisor']) info.text = new new = info.text.replace('CCCC', str(float(empinfo['Salary']) * 40)) info.text = new doc.save((os.path.dirname(__file__)) + '/NewTempFile.docx') outfile = (os.path.dirname(__file__)) + '/NewTempFile.docx' wdFormatPDF = 17 #Converts the filled document to pdf. word = comtypes.client.CreateObject('Word.Application') doc = word.Documents.Open(outfile) doc.SaveAs(DocName, FileFormat=wdFormatPDF) doc.Close() word.Quit() wb.save( os.path.dirname(os.path.dirname(__file__)) + '/Database.xlsx') os.remove(outfile) return 'Document ' + Efield + ' named: ' + DocName + ' generated successfully' else: return 'Document selected not valid'
def pdf(phone_number, ip_number): data = information(phone_number, ip_number) import comtypes.client wdFormatPDF = 17 in_file = r'H:\study\nam 3\ki 2\Mobil\lab3\ha\form.docx' out_file = r'H:\study\nam 3\ki 2\Mobil\lab3\ha\invoice.docx' pdf_file = r'H:\study\nam 3\ki 2\Mobil\lab3\ha\invoice.pdf' from docx import Document doc = Document(in_file) #___Таблица 1__ table = doc.tables[0] table.cell(0, 0).paragraphs[0].text = data['Банк получателя'] table.cell(0, 3).paragraphs[0].text = data['БИК'] table.cell(2, 3).paragraphs[0].text = data['1Сч. №'] table.cell(3, 0).paragraphs[0].text = data['ИНН'] table.cell(3, 1).paragraphs[0].text = data['КПП'] table.cell(3, 3).paragraphs[0].text = data['2Сч. №'] table.cell(4, 0).paragraphs[0].text = data['Получатель'] #___Таблица 2__ table = doc.tables[1] inline = table.cell(0, 0).paragraphs[0].runs text = inline[1].text.replace('___', data['3Сч. №']) inline[1].text = text text = inline[3].text.replace('___', data['день']) inline[3].text = text text = inline[5].text.replace('_______', data['месяц']) inline[5].text = text text = inline[7].text.replace('___', data['год']) inline[7].text = text #___Таблица 3__ table = doc.tables[2] table.cell(0, 1).paragraphs[0].text = data['Поставщик'] table.cell(1, 1).paragraphs[0].text = data['Заказчик'] table.cell(2, 1).paragraphs[0].text = data['Основание'] #___Таблица 4__ table = doc.tables[3] for i in range(len(data['№'])): if i > 0: table.add_row() table.cell(i + 1, 0).text = data['№'][i] table.cell(i + 1, 1).text = data['товары'][i] table.cell(i + 1, 2).text = data['количество'][i] table.cell(i + 1, 3).text = data['ед.'][i] table.cell(i + 1, 4).text = data['цена'][i] table.cell(i + 1, 5).text = data['сумма'][i] #___Таблица 5__ table = doc.tables[4] table.cell(0, 1).paragraphs[0].text = data['Итого'] table.cell(1, 1).paragraphs[0].text = data['НДС'] table.cell(2, 1).paragraphs[0].text = data['Всего к оплату'] table.cell(3, 0).paragraphs[1].text = data['Всего наименований'] table.cell(4, 0).paragraphs[0].text = data['Сумма прописью'] doc.save(out_file) word = comtypes.client.CreateObject('Word.Application') doc = word.Documents.Open(out_file) doc.SaveAs(pdf_file, FileFormat=wdFormatPDF) doc.Close() word.Quit() # variant 3 #pdf('915783624','192.168.250.27') #create_invoice.pdf('915783624','192.168.250.27')
def excel2doc(reader, file, destFolder): #print(datetime.datetime.strptime(sh.cell(1, 3).value,'%Y/%m/%d-%H:%M:%S-%f')) #print(datetime.datetime.strptime(sh.cell(14, 3).value,'%Y/%m/%d-%H:%M:%S-%f')) #print(deltaSecond(datetime.datetime.strptime(sh.cell(1, 3).value,'%Y/%m/%d-%H:%M:%S-%f'),datetime.datetime.strptime(sh.cell(14, 3).value,'%Y/%m/%d-%H:%M:%S-%f'))) collect1 = dict() reader.getBasicInfo(collect1) #print('xlsx', datetime.datetime(*tuple(map(lambda x: int(x.lstrip('0')),sh.cell(1, 3).value.split('-')[0].split('/'))))) #print(collect1[sh.cell(0, 3).value]) doc = Document() doc.styles['Normal'].font.name = u'標楷體' doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'標楷體') doc.styles['Normal'].font.bold = True doc.styles['Normal'].font.size = Pt(12) ###############解決原生bug#################### styles = doc.styles new_heading_style = styles.add_style('New Heading', WD_STYLE_TYPE.PARAGRAPH) #new_heading_style.base_style = styles['Heading 1'] font = new_heading_style.font font.bold = True font.name = u'標楷體' font.size = Pt(16) new_heading_style._element.rPr.rFonts.set(qn('w:eastAsia'), u'標楷體') #print(isinstance(doc.styles['Heading 1'],p)) #print(type(new_heading_style)) #print(dir(new_heading_style.element)) #doc.add_heading('D-KEFS執行功能測驗回饋單') #doc.add_heading('別師', level=1) paragraph = doc.add_paragraph('D-KEFS執行功能測驗回饋單', style='New Heading') paragraph.alignment = 1 doc.add_paragraph('基本資料:') table = doc.add_table(rows=3, cols=6, style='TableGrid') hdr_cells1 = table.rows[0].cells hdr_cells1[0].text = '編號:' hdr_cells1[1].text = str(int(collect1['ID'])) hdr_cells1[2].text = '性別:' hdr_cells1[3].text = collect1['Gender'] hdr_cells1[4].text = '測驗時間:' hdr_cells1[5].text = str(collect1['CreatTime'].strftime("%Y/%m/%d")) hdr_cells2 = table.rows[1].cells hdr_cells2[0].text = '姓名:' hdr_cells2[1].text = collect1['Name'] hdr_cells2[2].text = '慣用手:' hdr_cells2[3].text = collect1['HabitualHand'] hdr_cells2[4].text = '出生年月日:' hdr_cells2[5].text = str(collect1['DateOfBirth'].strftime("%Y/%m/%d")) hdr_cells3 = table.rows[2].cells hdr_cells3[0].text = '年齡:' hdr_cells3[1].text = str(collect1['CreatTime'].year - collect1['DateOfBirth'].year) hdr_cells3[2].text = '教育年:' hdr_cells3[3].text = str(int(collect1['HighestLevelOfEducation'])) hdr_cells3[4].text = '學校:' doc.add_paragraph('') paragraph = doc.add_paragraph('軌跡標示測驗', style='New Heading') paragraph.alignment = 1 doc.add_paragraph('基本測量:') table = doc.add_table(rows=4, cols=6, style='TableGrid') hdr_cells1 = table.rows[0].cells hdr_cells1[1].text = '情境一:\n視覺掃描' hdr_cells1[2].text = '情境二:\n圓形序列' hdr_cells1[3].text = '情境三:\n六邊形序列' hdr_cells1[4].text = '情境四:\n圓形六邊形轉換' hdr_cells1[5].text = '情境五:\n動作速度' data = {} reader.getData(data, 'Task1') reader.getData(data, 'Task2') reader.getData(data, 'Task3') reader.getData(data, 'Task4') reader.getData(data, 'Task5') print('data', data) hdr_cells2 = table.rows[1].cells hdr_cells2[0].text = '原始\n分數' hdr_cells2[1].text = str(data['Task1']) hdr_cells2[2].text = str(data['Task2']) hdr_cells2[3].text = str(data['Task3']) hdr_cells2[4].text = str(data['Task4']) hdr_cells2[5].text = str(data['Task5']) hdr_cells3 = table.rows[2].cells hdr_cells3[0].text = '量尺\n分數' score2 = {} score2["Task1"] = newScore(data["Task1"], 20.5, 7.25, 10, 3) hdr_cells3[1].text = f'{score2["Task1"]:.3f}' score2['Task2'] = newScore(data['Task2'], 29.5, 11, 10, 3) hdr_cells3[2].text = f"{score2['Task2']:.3f}" score2['Task3'] = newScore(data['Task3'], 29, 10, 10, 3) hdr_cells3[3].text = f"{score2['Task3']:.3f}" score2['Task4'] = newScore(data['Task4'], 69, 28, 10, 3) hdr_cells3[4].text = f"{score2['Task4']:.3f}" score2['Task5'] = newScore(data['Task5'], 31, 16, 10, 3) hdr_cells3[5].text = f"{score2['Task5']:.3f}" hdr_cells4 = table.rows[3].cells hdr_cells4[0].text = 'PR值' hdr_cells4[1].text = prValue(data["Task1"], 20.5, 7.25) hdr_cells4[2].text = prValue(data["Task2"], 29.5, 11) hdr_cells4[3].text = prValue(data["Task3"], 29, 10) hdr_cells4[4].text = prValue(data["Task4"], 69, 28) hdr_cells4[5].text = prValue(data["Task5"], 31, 16) doc.add_paragraph('') doc.add_paragraph('衍生測量:') table = doc.add_table(rows=4, cols=7, style='TableGrid') hdr_cells1 = table.rows[0].cells hdr_cells1[1].text = '圓形序列+六邊形序列' hdr_cells1[2].text = '圓形六邊形轉換 - 視覺掃描' hdr_cells1[3].text = '圓形六邊形轉換 - 圓形序列' hdr_cells1[4].text = '圓形六邊形轉換 - 六邊形序列' hdr_cells1[5].text = '圓形六邊形轉換- 圓形序列+六邊形序列' hdr_cells1[6].text = '圓形六邊形轉換 - 動作速度' combine = {} hdr_cells2 = table.rows[1].cells i = 0 hdr_cells2[i].text = '計分\n結果' i += 1 combine[i] = score2['Task2'] + score2['Task3'] hdr_cells2[i].text = f"{combine[i]:.3f}" i += 1 combine[i] = score2['Task1'] - score2['Task2'] hdr_cells2[i].text = f"{combine[i]:.3f}" i += 1 combine[i] = score2['Task4'] - score2['Task2'] hdr_cells2[i].text = f"{combine[i]:.3f}" i += 1 combine[i] = score2['Task4'] - score2['Task3'] hdr_cells2[i].text = f"{combine[i]:.3f}" i += 1 combine[i] = score2['Task4'] - score2['Task2'] + score2['Task3'] hdr_cells2[i].text = f"{combine[i]:.3f}" i += 1 combine[i] = score2['Task4'] - score2['Task5'] hdr_cells2[i].text = f"{combine[i]:.3f}" new_combine = {} hdr_cells3 = table.rows[2].cells i = 0 hdr_cells3[i].text = '量尺\n分數' i += 1 new_combine[i] = newScore(combine[i], 19.5, 5.25, 10, 3) hdr_cells3[i].text = f'{new_combine[i]:.3f}' i += 1 new_combine[i] = newScore(combine[i], 0, 3.75, 10, 3) hdr_cells3[i].text = f'{new_combine[i]:.3f}' i += 1 new_combine[i] = newScore(combine[i], 0, 3, 10, 3) hdr_cells3[i].text = f'{new_combine[i]:.3f}' i += 1 new_combine[i] = newScore(combine[i], 0, 3, 10, 3) hdr_cells3[i].text = f'{new_combine[i]:.3f}' i += 1 new_combine[i] = newScore(combine[i], 0, 3, 10, 3) hdr_cells3[i].text = f'{new_combine[i]:.3f}' i += 1 new_combine[i] = newScore(combine[i], 0, 3, 10, 3) hdr_cells3[i].text = f'{new_combine[i]:.3f}' #print('new combine: ', new_combine) hdr_cells4 = table.rows[3].cells i = 0 hdr_cells4[i].text = 'PR值' i += 1 hdr_cells4[i].text = prValue(combine[i], 19.5, 5.25) i += 1 hdr_cells4[i].text = prValue(combine[i], 0, 3.75) i += 1 hdr_cells4[i].text = prValue(combine[i], 0, 3) i += 1 hdr_cells4[i].text = prValue(combine[i], 0, 3) i += 1 hdr_cells4[i].text = prValue(combine[i], 0, 3) i += 1 hdr_cells4[i].text = prValue(combine[i], 0, 3) doc.add_paragraph('') doc.add_paragraph('選擇性測量:錯誤分析') table = doc.add_table(rows=7, cols=6, style='TableGrid') hdr_cells1 = table.rows[0].cells hdr_cells1[1].text = '情境一:\n視覺掃描' hdr_cells1[2].text = '情境二:\n圓形序列' hdr_cells1[3].text = '情境三:\n六邊形序列' hdr_cells1[4].text = '情境四:\n圓形六邊形轉換' hdr_cells1[5].text = '情境五:\n動作速度' table.rows[1].cells[0].text = '疏忽錯誤' table.rows[2].cells[0].text = '任務錯誤' table.rows[3].cells[0].text = '序列錯誤' table.rows[4].cells[0].text = '不正確反應錯誤' table.rows[5].cells[0].text = '時間中止錯誤' table.rows[6].cells[0].text = '錯誤總數' doc.add_paragraph('*原始分數/累積百分位數') doc.add_paragraph('') doc.add_paragraph('說明:') #print(sh.nrows) #print(dir(doc.styles['Normal'].font)) file = file.split('.')[0] doc.save(destFolder + '/word/' + file + '.docx') #doc to pdf wdFormatPDF = 17 in_file = destFolder + '\\word\\' + file + '.docx' out_file = destFolder + '\\pdf\\' + file + '.pdf' word = comtypes.client.CreateObject('Word.Application') doc = word.Documents.Open(in_file) doc.SaveAs(out_file, FileFormat=wdFormatPDF) doc.Close() word.Quit()
def pdf(phoneNum, IpNum): data = info(phoneNum, IpNum) import comtypes.client wdFormatPDF = 17 #Это мой локаль файл , в котором я сохранил in_file = r'E:\2 курс\kypc 3\Mobile\lab3_beo\ITMO---mobile-devices\lab3\example.docx' out_file = r'E:\2 курс\kypc 3\Mobile\lab3_beo\ITMO---mobile-devices\lab3\bill.docx' pdf_file = r'E:\2 курс\kypc 3\Mobile\lab3_beo\ITMO---mobile-devices\lab3\bill.pdf' from docx import Document doc = Document(in_file) #{-----------------table 1----------------} table = doc.tables[0] table.cell(0, 0).paragraphs[0].text = data['Банк получателя'] table.cell(0, 3).paragraphs[0].text = data['БИК'] table.cell(2, 3).paragraphs[0].text = data['1Сч. №'] table.cell(3, 0).paragraphs[0].text = data['ИНН'] table.cell(3, 1).paragraphs[0].text = data['КПП'] table.cell(3, 3).paragraphs[0].text = data['2Сч. №'] table.cell(4, 0).paragraphs[0].text = data['Получатель'] #{---------------table 2--------------------} table = doc.tables[1] inline = table.cell(0, 0).paragraphs[0].runs text = inline[1].text.replace('___', data['3Сч. №']) inline[1].text = text text = inline[3].text.replace('___', data['день']) inline[3].text = text text = inline[5].text.replace('_______', data['месяц']) inline[5].text = text text = inline[7].text.replace('___', data['год']) inline[7].text = text #{---------------table 3--------------------} table = doc.tables[2] table.cell(0, 1).paragraphs[0].text = data['Поставщик'] table.cell(1, 1).paragraphs[0].text = data['Заказчик'] table.cell(2, 1).paragraphs[0].text = data['Основание'] #{---------------table 4--------------------} table = doc.tables[3] for i in range(len(data['№'])): if i > 0: table.add_row() table.cell(i + 1, 0).text = data['№'][i] table.cell(i + 1, 1).text = data['товары'][i] table.cell(i + 1, 2).text = data['количество'][i] table.cell(i + 1, 3).text = data['ед.'][i] table.cell(i + 1, 4).text = data['цена'][i] table.cell(i + 1, 5).text = data['сумма'][i] #{---------------bang 5--------------------} table = doc.tables[4] table.cell(0, 1).paragraphs[0].text = data['Итого'] table.cell(1, 1).paragraphs[0].text = data['НДС'] table.cell(2, 1).paragraphs[0].text = data['Всего к оплату'] table.cell(3, 0).paragraphs[1].text = data['Всего наименований'] table.cell(4, 0).paragraphs[0].text = data['Сумма прописью'] #{----------------save doc file--------------} doc.save(out_file) #{----------------create pdf file--------------} word = comtypes.client.CreateObject('Word.Application') doc = word.Documents.Open(out_file) doc.SaveAs(pdf_file, FileFormat=wdFormatPDF) doc.Close() word.Quit()