не пойму, почему , если по отдельности работают функции по конвертации(в разных скриптах) , то все нормально, если ,как здесь, вместе , то 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()