Найти - Пользователи
Полная версия: конвертация в pdf
Начало » Python для новичков » конвертация в pdf
1
sanodin
не пойму, почему , если по отдельности работают функции по конвертации(в разных скриптах) , то все нормально, если ,как здесь, вместе , то 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()
4kpt
Послушайте. А для Вас принципиально, чтобы это все было в pdf по итогу?
sanodin
4kpt
Послушайте. А для Вас принципиально, чтобы это все было в pdf по итогу?
для скорости работы-да
вообще я сделал две отдельные программки, работают нормально, вкупе работать или не хотят или тормозит, если очередность как здесь, функций
sanodin
переделал очередность функций…перестал глючить…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
                                
4kpt
Для какой скорости? Вы меряли и сравнивали? С чем?

Вы понимаете, что Вы лишаете пользователя возможности редактировать результат. Если Вы пишите ПО под заказ, то Вас будут смыкать по всякому поводу и без. Вылезла там линия за контур - звонок. Цена ушла влево - звонок. Товарный знак сместился на два миллиметра и заркыл первую букву названия - опять трезвонят. А это документы. Их печатать как попало не комильфо для фирмы. Заказчик был бы уже и сам рад это все одним движением подтянуть-расспечатать, и подождать, пока Вы все подпилите, но у него такой возможности нет. Кроме того существует тонны механизмов перегонки документа в pdf. Вы можете сформировать для себя площадку для последующего отступления, так сказать. Сейчас жмем в pdf, а потом можем отказаться от пережимки и вот Вам кошерный документ.

P.S. Я только привел доводы из своей повседневной практики. Делать или не делать - смотрите сами…
sanodin
по сравнению, допустим в отдельной программе, фото перегоняется в пдф быстро, в прошлом коде , где и дос и пдф, фото перегонялось дольше в разы, плюс еще и рабочий стол становился не кликабельным,а сейчас нормально, плюс приделал еще и excel в пдф
править не требуется, просто отправка на ресурс файлов требует файлы в pdf , другие не принимает , это так сказать просто отчеты
4kpt
Я где-то говорил про doc? Глянуть бы скорость в .odf :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB