Форум сайта python.su
31
не пойму, почему , если по отдельности работают функции по конвертации(в разных скриптах) , то все нормально, если ,как здесь, вместе , то word документы отрабатывает нормально , а image , на время тормозит
# -*- coding: utf-8 -*- from TkinterDnD2 import * from Tkinter import * from reportlab.lib.pagesizes import letter from reportlab.platypus import SimpleDocTemplate, flowables import os.path import os import win32com.client root = TkinterDnD.Tk() wdFormatPDF = 17 st=str() def word(filename):#word2pdf in_file = os.path.abspath(st) out_file = os.path.abspath(filename) word = win32com.client.Dispatch('Word.Application') doc = word.Documents.Open(st) doc.SaveAs(out_file, FileFormat=wdFormatPDF) doc.Close() word.Quit() def drawPageFrame(canvas, doc): width, height = letter canvas.saveState() canvas.drawImage( st, 0, 0, height, width, preserveAspectRatio=True, anchor='c') canvas.restoreState() def jpg2pdf(filename):#image2pdf width, height = letter # To make it landscape, pagesize is reversed # You can modify the code to add PDF metadata if you want doc = SimpleDocTemplate(filename, pagesize=(height, width)) elem = [] elem.append(flowables.Macro('canvas.saveState()')) elem.append(flowables.Macro('canvas.restoreState()')) doc.build(elem, onFirstPage=drawPageFrame) class gui: def drop(self,event): global st x,y=event.x_root-root.winfo_rootx(),event.y_root-root.winfo_rootx() self.canvas.create_text(x,y,text=str(event.data)) try: files = event.data.split() for f in files: st=str(f) st = st.decode('utf-8').encode('cp1251') (dirName, fileName) = os.path.split(st) (fileBaseName, fileExtension)=os.path.splitext(fileName) print fileExtension ex=['.png','.jpeg'] for i in ex: if i in fileExtension : jpg2pdf(dirName+'\\'+fileBaseName+'.pdf')#image2pdf else : word(dirName+'\\'+fileBaseName+'.pdf')#word2pdf except Exception as e: self.canvas.create_text(x,y,text=str(e.message)) print e.message def __init__(self): self.canvas=Canvas(root,width=300,height=200) self.canvas.pack() self.canvas.drop_target_register('*') self.canvas.dnd_bind('<<Drop>>', self.drop) a=gui() root.mainloop()
Офлайн
63
Послушайте. А для Вас принципиально, чтобы это все было в pdf по итогу?
Офлайн
31
4kptдля скорости работы-да
Послушайте. А для Вас принципиально, чтобы это все было в pdf по итогу?
Офлайн
31
переделал очередность функций…перестал глючить…o_0
ex=['.png','.jpeg'] ux=['.doc','.docx'] for i in ux: if i in fileExtension : word(dirName+'\\'+fileBaseName+'.pdf')#word2pdf #jpg2pdf(dirName+'\\'+fileBaseName+'.pdf')#image2pdf else : #word(dirName+'\\'+fileBaseName+'.pdf')#word2pdf jpg2pdf(dirName+'\\'+fileBaseName+'.pdf')#image2pdf
Офлайн
63
Для какой скорости? Вы меряли и сравнивали? С чем?
Вы понимаете, что Вы лишаете пользователя возможности редактировать результат. Если Вы пишите ПО под заказ, то Вас будут смыкать по всякому поводу и без. Вылезла там линия за контур - звонок. Цена ушла влево - звонок. Товарный знак сместился на два миллиметра и заркыл первую букву названия - опять трезвонят. А это документы. Их печатать как попало не комильфо для фирмы. Заказчик был бы уже и сам рад это все одним движением подтянуть-расспечатать, и подождать, пока Вы все подпилите, но у него такой возможности нет. Кроме того существует тонны механизмов перегонки документа в pdf. Вы можете сформировать для себя площадку для последующего отступления, так сказать. Сейчас жмем в pdf, а потом можем отказаться от пережимки и вот Вам кошерный документ.
P.S. Я только привел доводы из своей повседневной практики. Делать или не делать - смотрите сами…
Отредактировано 4kpt (Окт. 20, 2013 17:29:59)
Офлайн
31
по сравнению, допустим в отдельной программе, фото перегоняется в пдф быстро, в прошлом коде , где и дос и пдф, фото перегонялось дольше в разы, плюс еще и рабочий стол становился не кликабельным,а сейчас нормально, плюс приделал еще и excel в пдф
править не требуется, просто отправка на ресурс файлов требует файлы в pdf , другие не принимает , это так сказать просто отчеты
Офлайн
63
Я где-то говорил про doc? Глянуть бы скорость в .odf :)
Офлайн