PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV (versões anteriores) → Découper document Word
Découper document Word
Iniciado por Loïc, abr., 26 2017 4:47 PM - 6 respostas
Membro registado
33 mensagems
Publicado em abril, 26 2017 - 4:47 PM
Bonjour

Existe t'il une fonction, une possibilité pour découper un document Word (document avec extension doc) en plusieurs fichiers doc ?
Je m'explique : je souhaiterai avec Windev (version 19) avoir mon fichier de résultat de publipostage (300 pages par exemple) et le découper en plusieurs fichiers word de même nombre de pages (300 fichiers word d'1 page pour reprendre mon exemple).

Est-ce que cela est possible ? :D

Sinon, je suis parti pour faire 300 fois le publipostage, soit destinataire par destinataire. Manque de peau, j'ai vu que ct réalisable sur la version 22... ;(

Merci à vous

--
Elle n'est pas belle la vie ???
Publicado em abril, 26 2017 - 5:04 PM
Bonjour

c'est possible en faisant de l'ole automation, ou avec un composant
externe comme gembox

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com


Le 4/26/2017 à 8:47 AM, "ÿÿÿÿÿÿ" a écrit :
Bonjour

Existe t'il une fonction, une possibilité pour découper un document Word
(document avec extension doc) en plusieurs fichiers doc ?
Je m'explique : je souhaiterai avec Windev (version 19) avoir mon
fichier de résultat de publipostage (300 pages par exemple) et le
découper en plusieurs fichiers word de même nombre de pages (300
fichiers word d'1 page pour reprendre mon exemple).

Est-ce que cela est possible ? :D

Sinon, je suis parti pour faire 300 fois le publipostage, soit
destinataire par destinataire. Manque de peau, j'ai vu que ct réalisable
sur la version 22... ;(

Merci à vous

--
Elle n'est pas belle la vie ???
Membro registado
33 mensagems
Publicado em abril, 27 2017 - 9:07 AM
Bonjour

Merci de votre réponse.

Avez-vous des exemples de codes, même sur page Web, que je me fasse une idée, SVP ?

C'est une nouveauté pour moi.

Cordialement

Fabrice Harari a écrit :
Bonjour

c'est possible en faisant de l'ole automation, ou avec un composant
externe comme gembox

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com




--
Elle n'est pas belle la vie ???
Publicado em abril, 27 2017 - 2:37 PM
Bonjour

J'utilise gembox (pas pour faire précisément ce que tu cherches, mais
bon) dans WXEDM, disponible sur mon site

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com


Le 4/27/2017 à 1:07 AM, "ÿÿÿÿÿÿ" a écrit :
Bonjour

Merci de votre réponse.

Avez-vous des exemples de codes, même sur page Web, que je me fasse une
idée, SVP ?

C'est une nouveauté pour moi.

Cordialement

Fabrice Harari a écrit :
Bonjour

c'est possible en faisant de l'ole automation, ou avec un composant
externe comme gembox

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com




--
Elle n'est pas belle la vie ???
Membro registado
33 mensagems
Publicado em maio, 02 2017 - 12:46 PM
Bonjour

Merci Fabrice.

J'avais trouvé sur un site un bout de code qui fonctionne bien. Je pense qu'il y a moyen de découper le fichier qu'on transforme en PDF mais pas moyen en modifiant les paramètres. Vous avez une idée ?

Voici le code :

L'appel se fait de cette façon :

QUAND EXCEPTIONEXCEPTION DANS
DocumentVersPDF("c:\documentWord.doc","c:\documentWord.pdf")
Info("Document sauvegardé !")
FAIRE
Erreur(ExceptionInfo(errComplet))
FIN


La procédure DocumentVersPDF :

Procedure DocumentVersPDF(LOCAL _sDocCheminComplet est une chaîne,_sDocPDFCheminComplet est une chaîne="")

LOCAL
oServiceManager est un objet OLE dynamique
oDesktop est un objet OLE dynamique
oDocument est un objet OLE dynamique
sMess est une chaîne

SI PAS fFichierExiste(_sDocCheminComplet) ALORS
sMess = "Le document source n'existe pas."
ExceptionDéclenche(1,sMess)
FIN

QUAND EXCEPTIONEXCEPTION DANS
// Création d'un service OpenOffice si nécessaire
oServiceManager = allouer un objet OLE ("com.sun.star.ServiceManager")
oDesktop = oServiceManager>>createInstance("com.sun.star.frame.Desktop")
FAIRE
sMess = "OpenOffice n'est pas installé sur votre poste."
ExceptionDéclenche(1,sMess)
FIN

tParams est un tableau de 0 objet automation dynamique //Tableau de paramètres

//Masqué
CreateProperty(oServiceManager,tParams,"Hidden",Vrai)
//Lecture seule
//CreateProperty(oServiceManager,tParams,"ReadOnly",faux)

//Formatage du chemin du fichier
LOCAL
sDocCheminCompletTmp est une chaîne

sDocCheminCompletTmp = "file:///"+Remplace(_sDocCheminComplet,"\","/")
//Ouverture du fichier dans OpenOffice Writer
oDocument = oDesktop>>LoadComponentFromURL(sDocCheminCompletTmp,"_blank",0,tParams)
SI oDocument = Null ALORS
ExceptionDéclenche(1,"Impossible de charger le document source.")
FIN

TableauSupprimeTout(tParams)
//CreateProperty(oServiceManager,tParams,"Magnification",2)
//CreateProperty(oServiceManager,tParams,"EncryptFile",vrai)
//CreateProperty(oServiceManager,tParams,"DocumentOpenPassword","Password")
//CreateProperty(oServiceManager,tParams,"HideViewerWindowControls",vrai)

oExportObject est un objet OLE dynamique
oExportObject = oServiceManager>>Bridge_GetValueObject()
oExportObject>>Set("[]com.sun.star.beans.PropertyValue",tParams);

tFilterParams est un tableau de 0 objet automation dynamique
CreateProperty(oServiceManager,tFilterParams,"FilterName","writer_pdf_Export")
CreateProperty(oServiceManager,tFilterParams,"FilterData",oExportObject)

SI _sDocPDFCheminComplet = "" ALORS
_sDocPDFCheminComplet = fExtraitChemin(_sDocCheminComplet,fDisque+fRépertoire+fFichier)+".pdf"
FIN

LOCAL
sDocPDFCheminCompletTmp est une chaîne

sDocPDFCheminCompletTmp = "file:///"+Remplace(_sDocPDFCheminComplet,"\","/")

oDocument>>StoreToURL(sDocPDFCheminCompletTmp,tFilterParams);

oDocument>>Close(Vrai);

CAS EXCEPTION:
sMess = "Erreur lors de la sauvegarde du document : "+RC
sMess += "'"+_sDocCheminComplet+"'"+RC
sMess += "vers le document : "+RC
sMess += "'"+_sDocPDFCheminComplet+"'."+RC
ExceptionPropage(sMess+RC+RC+ExceptionInfo(errComplet))


La procédure CreateProperty :

Procedure CreateProperty(oServiceManager,__tArgs,_sName est une chaîne,_vValue)

TableauAjoute(__tArgs)
iNbOccurences est un entier = __tArgs..Occurrence

__tArgs[iNbOccurences] = oServiceManager>>Bridge_GetStruct("com.sun.star.beans.PropertyValue")
__tArgs[iNbOccurences]>>Name = _sName
__tArgs[iNbOccurences]>>Value = _vValue


--
Elle n'est pas belle la vie ???
Membro registado
33 mensagems
Publicado em maio, 02 2017 - 12:50 PM
Après de multiples recherches et une "fusion" entre WD et VBA, je penqe qu'il y a moyen de faire une découpe au niveau de ceci :

CreateProperty(oServiceManager,tFilterParams,"FilterName","writer_pdf_Export")
CreateProperty(oServiceManager,tFilterParams,"FilterData",oExportObject)


Mais pas moyen...

--
Elle n'est pas belle la vie ???
Membro registado
33 mensagems
Publicado em maio, 02 2017 - 3:24 PM
Pour information, pour l'instant, j'utilise l'utilitaire PDFTK, que je lance via LanceAppli() et un fichier BAT. Mais bon.... entre 2 et 3 secondes l'extraction d'une page pour créer un nouveau document pdf. c'est un peu long et ça ressemble beaucoup à du bricolage !!! :p

--
Elle n'est pas belle la vie ???