Ajouter un commentaire

vb2py
Impression sous Python

Je comprends ta réaction.
L'idée est de pouvoir imprimer à partir de Python une série de feuilles calculées et les sauver dans des PDF préfixés avec le nom de la personne et le mois de calcul.

Pour cela, dans mon script, je crée un objet basé sur la classe PDFCreator,... je définis l'imprimante comme étant PDFCreator, je paramétre avec le nom du fichier et le répertoire de sortie.

J'ai repris les scripts donnés en VB et WSH et j'ai essayé (je commence réellement sous Python mais j'adore ...) de transcrire en une fonction pour tester.

Tout se passe bien sauf que le moniteur d'impression fait son travail, traite les paramètres mais je n'ai aucun PDF produit en sortie !

Je dépose mon script ci-dessous. Si quelqu'un a une idée ou a déjà traité le sujet, je "donne ma langue au chat " !

TIA

#! python
# -*- coding: cp1252 -*-

#-------------------------------------------------------------------------------
# Name: test_pdfcreator.py
# Purpose:
#
# Author: vincent
#
# Created: 07/02/2007
# Copyright: (c) vincent 2007
# Licence:
#-------------------------------------------------------------------------------
#!/usr/bin/env python

import win32com.client
import sys
import os
import datetime

def f_lance_pdf( z_fichier_in, z_directory, z_fichier_out):
""" crée un fichier PDF sur base d'un fichier imprimable (XLS,DOC,...)
arguments :
le nom complet du fichier IN
le répertoire
le nom du fichier de sortie (sans .pdf car implicite)

"""

pdfcreator1 = win32com.client.Dispatch('PDFCreator.clsPDFCreator')
pdfopt = win32com.client.Dispatch('PDFCreator.clsPDFCreatorOptions')
pdferror = win32com.client.Dispatch('PDFCreator.clsPDFCreatorError')

pdfcreator1.cStart("/NoProcessingAtStartup")

## sauver imprimante par défaut

imprimante_defaut = pdfcreator1.cDefaultPrinter

## AutoSaveFormat = 0 pour PDF

pdfcreator1.cOptions.AutosaveFormat = 0
pdfcreator1.cOptions.UseAutosave = 1
pdfcreator1.cOptions.UseAutosaveDirectory = 1
pdfcreator1.cOptions.AutosaveDirectory = z_directory
pdfcreator1.cOptions.SaveFilename = z_fichier_out
pdfcreator1.cOptions.ShowAnimation = 1
pdfcreator1.cOptions.StartStandardProgram = 0

pdfcreator1.cDefaultPrinter = "PDFCreator"
pdfcreator1.cClearCache

print "f_lance_pdf : traitement"
print "-----------------------------------------------"
print "imprimante par defaut : " , imprimante_defaut
print "redirection imprimante : " , pdfcreator1.cDefaultPrinter
print "existence du fichier :(",z_fichier_in,") ", os.path.exists( z_fichier_in )
print "existence du répertoire :(",z_directory ,") ", os.path.exists( z_directory )
print "use auto save : ", pdfcreator1.cOption("UseAutosave")
print "use auto save directory " , pdfcreator1.cOption("AutosaveDirectory")

print "rep sortie :" , z_directory
print "fichier OUT :" , pdfcreator1.cOption("AutosaveFilename") , "pdf"
print "fichier produit",pdfcreator1.cOutputFilename

## try:
print "lancement de l'impression ...", datetime.datetime.now()
print "le fichier est il imprimable" , pdfcreator1.cIsPrintable( z_fichier_in)
try:
pdfcreator1.cPrintFile( z_fichier_in )
except:
print "erreur impression"



pdfcreator1.cPrintPrinterTestpage()

print "impression en cours ..."

print "fin de l'impression", datetime.datetime.now()

pdfcreator1.cPrinterStop = False

## print "sauver les options"
## pdfopt = pdfcreator1.cReadOptionsFromFile("c:/IRSA_TEMPO/pdftest.ini")
## pdfcreator1.cSaveOptionsToFile("c:/IRSA_TEMPO/pdftest.ini")


## print "restaurer l'imprimante par défaut"
print "imprimante redéfinie : ", imprimante_defaut
pdfcreator1.cDefaultPrinter = imprimante_defaut
pdfcreator1.cClearCache
## terminer proprement en fermant le lien COM et en effacant les objets.
pdfcreator1.cClose
del pdfcreator1
del pdfopt

##----------------------------------------------------


##----------------------------------------------------------------------
## partie TEST.
## définir le répertoire de sortie (chemin +\)
## définir le nom du fichier (chemin + nom + extension)
## définir le nom du fichier de sortie (nom)
##
## attention PYTHON : indiquer double \\
## pour éviter problème avec séquence ESC
## attention l'utilisation des / ne fonctionne pas !
## (le script se base partiellement sur les exemples repris en VB et WSH de PDFCREATOR)
##----------------------------------------------------------------------

t_dirfichier = "c:\\irsa\\"
t_fichier_in = "c:\\irsa\\photocopies.xls"
t_fichier_out = "photocopies"

print 'f_lance_PDF : avant appel'
print "-------------------------"
print f_lance_pdf.__doc__
print "fichier à imprimer:" , t_fichier_in
print "répertoire :" , t_dirfichier
print "fichier de sortie :" , t_fichier_out

a= f_lance_pdf( t_fichier_in, t_dirfichier, t_fichier_out)

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 K  K  N   N  X   X  M   M  Y   Y 
K K NN N X X MM MM Y Y
KK N N N X M M M Y
K K N NN X X M M Y
K K N N X X M M Y