[Résolu][Writer] Exporter certaines pages d'un document

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Avatar de l’utilisateur
Virgule
Membre hOOnoraire
Membre hOOnoraire
Messages : 129
Inscription : 15 déc. 2010 13:17

[Résolu][Writer] Exporter certaines pages d'un document

Message par Virgule »

Bonjour à tous,

Pour un besoin spécifique, j'ai besoin d'exporter que certaines pages d'un document writer au même format car elles seront retravaillées de façons indivuduelles.

J'ai déjà trouvé comment faire l'export du document en entier, en lui donnant comme nom le texte d'une case d'un tableau (macro 1 dans le document joint)

A l'aire de de fil Export partiel d'une feuille Calc en PDF, j'ai essayé de mettre en place la macro dont j'ai besoin (dans le module 2). Mais j'obtiens le même résultat qu'avec la macro du module 1, tout le document est exporté.

Merci de votre aide et bon week end
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Virgule le 23 déc. 2013 18:18, modifié 1 fois.
LibreOffice Version: 4.1.6.2.0 et Windows 7 pro
Avatar de l’utilisateur
DLE
HédOOniste
HédOOniste
Messages : 1503
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: [Writer] Exporter certaines pages d'un document

Message par DLE »

Bonjour,

AMHA, le paramètre "PageRange" de "filterprops" ne s'applique qu'à l'export vers le format PDF, c'est à dire avec le nom de filtre "writer_pdf_Export" dans "propFich" au lieu de "writer8" et l'extension "PDF" dans le nom du fichier.
Le filtre "writer8" exporte un document dans un autre format, ici c'est le même format : "document texte ODF" .

En espérant avoir été clair.
MacOS Sequoia 15.5 (iMac-Intel) : AOO 4.1.15 , LibreOffice 24.8.5.2, Adoptium-temurinJDK 1.8.0_402, CCC, FireFox, Thunderbird, ORB 1.2.1
Parallel Desktop = Windows 10 & MacOS : AOO, Libreoffice.
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
Messages : 3028
Inscription : 30 avr. 2011 23:08
Localisation : Casablanca (Maroc)

Re: [Writer] Exporter certaines pages d'un document

Message par alhazred »

Bonjour,
Virgule a écrit :'exporter que certaines pages d'un document writer au même format car elles seront retravaillées de façons indivuduelles
Ne serait-ce pas l'occasion d'utiliser un document-maître (sans macros :lol: ), qui se chargerait de remettre en place les pages concernées ?
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
Avatar de l’utilisateur
Virgule
Membre hOOnoraire
Membre hOOnoraire
Messages : 129
Inscription : 15 déc. 2010 13:17

Re: [Writer] Exporter certaines pages d'un document

Message par Virgule »

Bonsoir,

Effectivement cela marche très bien pour un export en pdf mais mon but est d'arriver à la même chose pour n'exporter ou sauvegarder que certaines pages au format .odt
alhazred a écrit :Bonjour,
Virgule a écrit :'exporter que certaines pages d'un document writer au même format car elles seront retravaillées de façons indivuduelles
Ne serait-ce pas l'occasion d'utiliser un document-maître (sans macros :lol: ), qui se chargerait de remettre en place les pages concernées ?
Le document principal comporte quatre pages qui doivent être absolument séparé en 3 et dispatché après corrections éventuelles.

merci de votre aide
LibreOffice Version: 4.1.6.2.0 et Windows 7 pro
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
Messages : 3028
Inscription : 30 avr. 2011 23:08
Localisation : Casablanca (Maroc)

Re: [Writer] Exporter certaines pages d'un document

Message par alhazred »

Donc, justement, créer trois fichiers (copier-coller de parties du texte existant) qui peuvent être modifiés séparément l'un de l'autre

+ un fichier principal qui contient la page invariable (d'accord, j'interprète à ma manière le non-sens de "quatre pages qui doivent être absolument séparé en 3") et des sections liées aux trois autres fichiers, ce qui revient à peu près au même qu'un document-maître.
 Ajout : Est-ce qu'une macro est nécessaire pour ça ? Dans ce cas, montre le genre de texte qui nécessite ce traitement : je ne vois pas ce que ton tableau de deux lignes a à faire dans ce sujet 
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
Avatar de l’utilisateur
Virgule
Membre hOOnoraire
Membre hOOnoraire
Messages : 129
Inscription : 15 déc. 2010 13:17

Re: [Writer] Exporter certaines pages d'un document

Message par Virgule »

Bonjour,

Désolé je me suis peut-être mal expliqué dès le début.

Mon document de départ qui fait 4 pages est un modèle.ott qui peut être considéré comme un formulaire (avec images et tableau).
Une fois les différentes parties remplies les pages entières doivent être dispatchées (par le réseau) en 3 documents chacun nommés suivant le texte d'une case d'un tableau (1 page+1page+2pages). Ce qui se fait sans problème avec la macro que DLE à modifié.

Le tableau de 2 lignes sert uniquement à avoir un repère pour nommer les documents exportés/sauvegardés.

Bon début de journée
LibreOffice Version: 4.1.6.2.0 et Windows 7 pro
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Writer] Exporter certaines pages d'un document

Message par Piaf »

Bonjour
Une macro à tester avec ton document et éventuellement à adapter.

Code : Tout sélectionner

Sub test
Dim oDoc as Object, oTables as Object, oTable as Object, maCellule as Object
Dim nomFichier as String, adresseDoc as String
Dim curseurVisible as Object, oRangeFinPage as Object, aCopier as Object
	oDoc = ThisComponent
	oTables = oDoc.getTextTables()
	oTable = oTables.getByName("TAB1")
	maCellule = oTable.getCellByName("A1")
	nomFichier = maCellule.String
	curseurVisible = oDoc.CurrentController.ViewCursor
	With curseurVisible
		.jumpToPage(1)
		.jumpToEndOfPage
		oRangeFinPage = .end
		.jumpToStartOfPage
		.gotoRange(oRangeFinPage, true)
	End With
	adresseDoc = "private:factory/swriter"
	aCopier = ThisComponent.CurrentController.getTransferable()
	oDoc = StarDesktop.loadComponentFromURL(adresseDoc, "_blank", 0, Array() )
	curseurVisible = oDoc.currentController.viewCursor
	oDoc.CurrentController.Select(curseurVisible)
	oDoc.CurrentController.insertTransferable(aCopier)
	adresseDoc = convertToURL("Chemin de la copie/") & nomFichier & ".odt"
	oDoc.storeAsURL(adresseDoc, Array() )
	oDoc.Close(True)
End Sub
Elle devrait recopier la Page 1.
Renseigne le dernier adresseDoc avant l'exécution.
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Virgule
Membre hOOnoraire
Membre hOOnoraire
Messages : 129
Inscription : 15 déc. 2010 13:17

Re: [Writer] Exporter certaines pages d'un document

Message par Virgule »

Bonjour

et merci à toi, cela marche impec.

Un seule petite chose, dans mon document l'export de fait ainsi :
Page 1 = ça marche
Page 2 = ça marche
Pages 3+4 = comment puis-je faire ?

merci encore
LibreOffice Version: 4.1.6.2.0 et Windows 7 pro
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Writer] Exporter certaines pages d'un document

Message par Piaf »

Re
Virgule a écrit :Pages 3+4 = comment puis-je faire ?
Comme les deux pages se suivent, pas trop besoin de jongler avec le curseur :lol:
Une façon de faire, il y en a d'autes

Code : Tout sélectionner

Sub test
Dim oDoc as Object, oTables as Object, oTable as Object, maCellule as Object
Dim nomFichier as String, adresseDoc as String
Dim curseurVisible as Object, oRangeFinPage as Object, aCopier as Object
Dim mesPages as Variant, intX as Integer
	oDoc = ThisComponent
	oTables = oDoc.getTextTables()
	oTable = oTables.getByName("TAB1")
	maCellule = oTable.getCellByName("A1")
	nomFichier = maCellule.String
	curseurVisible = oDoc.CurrentController.ViewCursor
	mesPages = Array(3,4)
	For intX = 0 to UBound(mesPages)
		With curseurVisible
			.jumpToPage(mesPages(intX))
			.jumpToEndOfPage
			oRangeFinPage = .end
			.jumpToStartOfPage
			.gotoRange(oRangeFinPage, true)
		End With
	Next	
	adresseDoc = "private:factory/swriter"
	aCopier = ThisComponent.CurrentController.getTransferable()
	oDoc = StarDesktop.loadComponentFromURL(adresseDoc, "_blank", 0, Array() )
	curseurVisible = oDoc.currentController.viewCursor
	oDoc.CurrentController.Select(curseurVisible)
	oDoc.CurrentController.insertTransferable(aCopier)
	adresseDoc = convertToURL("Chemin de la copie/") & nomFichier & ".odt"
	oDoc.storeAsURL(adresseDoc, Array() )
	oDoc.Close(True)
End Sub
N'oublie pas de changer la référence à la cellule pour le nom du fichier.
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Virgule
Membre hOOnoraire
Membre hOOnoraire
Messages : 129
Inscription : 15 déc. 2010 13:17

Re: [Writer] Exporter certaines pages d'un document

Message par Virgule »

Merci à toi,

Je marque le sujet en résolu

Joyeux noel
LibreOffice Version: 4.1.6.2.0 et Windows 7 pro
vito971
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 09 mai 2014 00:53

Re: [Résolu][Writer] Exporter certaines pages d'un document

Message par vito971 »

Bonsoir,
j'ai essayé d'utiliser la macro avec une page dans laquelle les objets sont insérés dans un cadre et cela ne fonctionne pas.
Merci
ooo4.1 + windows Vista
toucan
MOOdérateur
MOOdérateur
Messages : 182
Inscription : 22 févr. 2016 23:49

Re: [Résolu][Writer] Exporter certaines pages d'un document

Message par toucan »

Bonjour et bienvenue,

Nous nous devons de verrouiller ce fil de discussion. Nous vous rappelons les règles de ce forum et notamment la n° 12 :
Ne postez pas à la suite d'un fil de discussion datant de plus d'un mois même si celui-ci n'est pas marqué [Résolu]. Vous ne faites que déterrer de vieux problèmes sur d'anciennes versions d'OOo qui n'ont plus cours.
Merci de votre collaboration.