PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → [WD16] Export au format PDF
[WD16] Export au format PDF
Débuté par damien.sozet, 09 juin 2011 12:12 - 9 réponses
Posté le 09 juin 2011 - 12:12
Bonjour,

Je souhaiterai pouvoir à partir de la classe OpenOffice livret avec Windev, lancer une commande d'exportation au format pdf de mon document OpenOffice.

Quelqu'un a t il déjà effectué cette programmation ?


Merci d'avance.

Bonne journée
Damien
Posté le 09 juin 2011 - 14:19
Après mûre réflexion, Damien a écrit :
Bonjour,

Je souhaiterai pouvoir à partir de la classe OpenOffice livret avec Windev,
lancer une commande d'exportation au format pdf de mon document OpenOffice.

Quelqu'un a t il déjà effectué cette programmation ?


Merci d'avance.

Bonne journée
Damien


Bonjour,
je ne sais pas si ça va t'aider, mais j'avais ajouté à la classe
cOpenOffice la méthode 'Export_PDF' avec le code suivant :
Procedure Export_PDF(NomDocument)

Document est un objet OLE dynamique
dispatcher est un objet OLE dynamique

Document = :oDocument>>CurrentController>>Frame
dispatcher =
:oServiceManager>>createInstance("com.sun.star.frame.DispatchHelper")

ParamImpression est un tableau de 3 objet automation dynamique
machaine est une chaîne

// Exporter en PDF
ParamImpression[1] =
:oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
ParamImpression[1]>>Name = "URL"
ParamImpression[1]>>Value = NomDocument

ParamImpression[2] =
:oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
ParamImpression[2]>>Name = "FilterName"
ParamImpression[2]>>Value = "writer_pdf_Export"


ParamImpression[3] =
:oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
ParamImpression[3]>>Name = "SelectionOnly"
ParamImpression[3]>>Value = True

dispatcher>>executeDispatch(Document,".uno:ExportDirectToPDF",
"",0,ParamImpression)


Cordialement
Posté le 09 juin 2011 - 16:09
Merci beaucoup, je vais faire des tests.
Posté le 14 juin 2011 - 16:24
Bonjour,

j'ai l'erreur suivante sur le code de votre aide,
Vous accédez au membre Automation CurrentController.
Erreur 80020006, Nom inconnu
Vous pouvez m'en dire plus, car je ne maitrise pas trop les classes.

Merci d'avance.

Cordialement
Posté le 15 juin 2011 - 12:51
Damien avait prétendu :
Bonjour,

j'ai l'erreur suivante sur le code de votre aide,
Vous accédez au membre Automation CurrentController.
Erreur 80020006, Nom inconnu
Vous pouvez m'en dire plus, car je ne maitrise pas trop les classes.

Merci d'avance.

Cordialement


Je suis en windev 10... Je pense que les classes ont pu changer.
il faut déclarer l'objet :
ClDocument est un CDocument()
Tu devrais avoir les classes cOpenOffice et CDocument.
Si tu utilises la classe openoffice de windev, le code que je t'ai
donné te permettra de créer une méthode pour exporter tes documents en
pdf.
ça fonctionne très bien avec ma version.
cdlt
Posté le 15 juin 2011 - 16:17
Bonjour,

J'ai bien fait comme les autres fonctions de la classe fourni par windev.
j'ai essayé avec le document ouvert et avec le document non ouvert, mais j'ai toujours la même erreur sur le currentcontroller.

je ne comprends pas, je chercher.
Merci
Posté le 17 juin 2011 - 14:06
J'ai trouvé mon problème.

Voici le code si ça peut servir à quelqu'un :

Procedure Export_PDF(NomDocument)

Document est un objet OLE dynamique
dispatcher est un objet OLE dynamique
NomDocumentFormaté est une chaîne = "file:///"+Remplace(NomDocument,"\","/")
//Il faut changer l'extansion
//Le nom du fichier reçu est un rtf, on change l'extension pour que ça devienne le fichier généré.
NomDocumentFormaté = Remplace(NomDocumentFormaté,".rtf",".pdf")

dispatcher = :oServiceManager>>createInstance("com.sun.star.frame.DispatchHelper")

// Récupération du document affiché
Document = :oDocument>>CurrentController>>Frame

ParamImpression est un tableau de 3 objet automation dynamique
tabPdfFilterData est un tableau de 2 objet automation dynamique

//PAramétrage PDF
tabPdfFilterData[1] = :oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
tabPdfFilterData[1]>>Name = "SelectPdfVersion"
tabPdfFilterData[1]>>Value = 1

tabPdfFilterData[2] = :oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
tabPdfFilterData[2]>>Name = "UseTaggedPDF"
tabPdfFilterData[2]>>Value = True

// Exporter en PDF
ParamImpression[1] = :oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
ParamImpression[1]>>Name = "URL"
ParamImpression[1]>>Value = NomDocumentFormaté

ParamImpression[2] = :oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
ParamImpression[2]>>Name = "FilterName"
ParamImpression[2]>>Value = "writer_pdf_Export"

ParamImpression[3] = :oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
ParamImpression[3]>>Name = "FilterData"
ParamImpression[3]>>Value = tabPdfFilterData

dispatcher>>executeDispatch(Document,".uno:ExportDirectToPDF","",0,ParamImpression)


Bonne journée à tous.
Posté le 17 juin 2011 - 17:35
Damien a exposé le 17/06/2011 :
J'ai trouvé mon problème.

Voici le code si ça peut servir à quelqu'un :

Procedure Export_PDF(NomDocument)

Document est un objet OLE dynamique
dispatcher est un objet OLE dynamique
NomDocumentFormaté est une chaîne = "file:///"+Remplace(NomDocument,"\","/")
//Il faut changer l'extansion
//Le nom du fichier reçu est un rtf, on change l'extension pour que ça
devienne le Fichier généré. NomDocumentFormaté =
Remplace(NomDocumentFormaté,".rtf",".pdf")

dispatcher =
:oServiceManager>>createInstance("com.sun.star.frame.DispatchHelper")

// Récupération du document affiché
Document = :oDocument>>CurrentController>>Frame

ParamImpression est un tableau de 3 objet automation dynamique
tabPdfFilterData est un tableau de 2 objet automation dynamique

//PAramétrage PDF
tabPdfFilterData[1] =
:oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
tabPdfFilterData[1]>>Name = "SelectPdfVersion" tabPdfFilterData[1]>>Value = 1

tabPdfFilterData[2] =
:oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
tabPdfFilterData[2]>>Name = "UseTaggedPDF" tabPdfFilterData[2]>>Value = True

// Exporter en PDF
ParamImpression[1] =
:oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
ParamImpression[1]>>Name = "URL" ParamImpression[1]>>Value =
NomDocumentFormaté

ParamImpression[2] =
:oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
ParamImpression[2]>>Name = "FilterName" ParamImpression[2]>>Value =
"writer_pdf_Export"

ParamImpression[3] =
:oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
ParamImpression[3]>>Name = "FilterData" ParamImpression[3]>>Value =
tabPdfFilterData

dispatcher>>executeDispatch(Document,".uno:ExportDirectToPDF","",0,ParamImpression)


Bonne journée à tous.


Bien vu !
Posté le 20 juin 2011 - 02:02
Pouvez-vous me donner la classe qui est "en amont" de ce code.
J'essaye de trouver un moyen, par la programmation Windev, de :
1. ouvrir un fichier .odt
2. le sauver au format .pdf
Je n'y connais rien en développement oo
Je voudrais simplement faire du copier/coller.
Merci pour votre aide
Posté le 20 juin 2011 - 11:06
Bonjour,

Donnez moi votre mail et je vous envoi ça.
Bonne journée.