[Calc] Export de sélection en PDF

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 !
yama
Membre OOrganisé
Membre OOrganisé
Messages : 50
Inscription : 20 nov. 2012 13:57

[Calc] Export de sélection en PDF

Message par yama »

Bonjour,

Voilà j'arrive à exporter ma sélection en format pdf grâce au bout de macro ci dessous :

Code : Tout sélectionner

Sub Pdf
	dim document   as object
	dim dispatcher as object
	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	
	dim args1(1) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "Name"
	args1(0).Value = "Suivi"
	args1(1).Name = "ToPoint"
	args1(1).Value = "$A$2:$CW$110"

	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 1, args1())
	
	' Création de la zone d'impression décrite au dessus
	dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 1, args1())
	
	dim args2(3) as new com.sun.star.beans.PropertyValue
	args2(0).Name = "URL"
	
	filename = ConvertToURL(DlgExport.getControl("cheminText").Text)
	
	args2(0).Value = filename
	args2(1).Name = "FilterName"
	args2(1).Value = "calc_pdf_Export"
	args2(2).Name = "FilterData"
	args2(2).Value = Array(Array("UseLosslessCompression",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Quality",0,50,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ReduceImageResolution",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("MaxImageResolution",0,300,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTaggedPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SelectPdfVersion",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportNotes",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarks",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenBookmarkLevels",0,-1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTransitionEffects",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsSkipEmptyPages",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsAddStream",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FormsType",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportFormFields",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerToolbar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerMenubar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerWindowControls",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ResizeWindowToInitialPage",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("CenterWindow",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenInFullScreenMode",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("DisplayPDFDocumentTitle",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialView",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Magnification",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Zoom",0,100,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PageLayout",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FirstPageOnLeft",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialPage",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Printing",0,2,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Changes",0,4,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableCopyingOfContent",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableTextAccessForAccessibilityTools",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportLinksRelativeFsys",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PDFViewSelection",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ConvertOOoTargetToPDFTarget",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarksToPDFDestination",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("_OkButtonString",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EncryptFile",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("DocumentOpenPassword",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("RestrictPermissions",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PermissionPassword",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Selection",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE))
	args2(3).Name = "SelectionOnly"
	args2(3).Value = true
	
	dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args2())
	
	' Suppression de la zone d'impression décrite au dessus
	dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 1, args1())
	
	' Sélection d'une cellule pour que cela fasse plus propre
	args1(1).Value = "$A$2:$A$2"
	dispatcher.executeDispatch(document, ".uno:GoToCell", "", 1, args1())
	end if
end sub
Mon problème est le suivant, est-il possible d'exporter une sélection multiple ?
En effet, la macro ci dessus est adaptée à une sélection unique. J'ai navigué sur le forum sans y trouver de sujet y posant cette question.

J'aimerai en effet pouvoir y faire une sélection multiple au sein de la feuille de calc pour l'exporter.
Dans l'hypothèse où cela ne serait pas possible, j'ai réussi à exporter en deux fois sur une feuille distincte pour ensuite exporter cette feuille tierce.
Mais l'inconvénient dans ce procédé et qu'il y a une image d'une carte en arrière plan et cela m'oblige à créer autant de feuille que de sélection multiple avec le découpage de cette carte et donc cela augmente de faon exponentielle la taille de mon calc.

Merci par avance de vos réponses
OOo 3.2.1 (Par obligation) sous Windows XP SP3 et Linux Ubuntu 10.04
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Re: [Calc] Export de sélection en PDF

Message par bm92 »

Bonjour,
Il est parfaitement possible de définir plusieurs zones d'impression en utilisant l'interface utilisateur : Format > Zones d'impression > Ajouter.
Et il est possible d'enregistrer la manip avec l'enregistreur de macros.
Bernard

OpenOffice.org 1.1.5 fr / Apache OpenOffice 4.1.1 / LibreOffice 5.0.5.2 (X64)
MS-Windows 7 SP1 64bits Familial
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Export de sélection en PDF

Message par Dude »

yama
Membre OOrganisé
Membre OOrganisé
Messages : 50
Inscription : 20 nov. 2012 13:57

Re: [Calc] Export de sélection en PDF

Message par yama »

J'ai utilisé la zone d'impression pour les données que je souhaitais mais, lorsque je rajoute les coordonnées dans ma macro cela marque plage non valide.

J'ai testé l'add on que tu as mentionné mais je souhaite automatiser la tâche.

Je joints un ods pour que vous puissiez comprendre ce que je cherche à obtenir.

La zone 1 a été modifié pour ce que je souhaite et les autres fonctionnent mais pour la zone 1 et 3 je souhaite récupérer le chapeau ou le bas pour la zone 2.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OOo 3.2.1 (Par obligation) sous Windows XP SP3 et Linux Ubuntu 10.04
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 936
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] Export de sélection en PDF

Message par luky-luke »

Bonsoir,

Le dispatcher parfois fait les choses très bien...Mais bon, pour la sélection multiple j'ai préférer utiliser l'API.

Donc ce petit bout de code entièrement pompé dans la bible et adapté à ta macro :

Code : Tout sélectionner

Option explicit
sub Zone_d_impression
dim MonDoc   as object
dim MaFeuille As Object, MaZone As Object
MonDoc = ThisComponent
MaFeuille = MonDoc.sheets.getByName("Analyse")
dim Cible(1) As new com.sun.star.table.CellRangeAddress
  	MaZone = MaFeuille.getCellRangeByName("$A$19:$C$30")
  	Cible(0) = MaZone.RangeAddress
  	MaZone = MaFeuille.getCellRangeByName("$D$31:$F$40")
  	Cible(1) = MaZone.RangeAddress 
	Mafeuille.PrintAreas = Cible()
end sub

La modification est faite dans le fichier.

Cordialement
Luke

P.S. : j'utilise l'API, car je n'y arrivais pas avec le dispatcher :lol:
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOO 4.1.3 et LibO 5.3.7.2 Ubuntu 16.04 LTS et Debian 9
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
yama
Membre OOrganisé
Membre OOrganisé
Messages : 50
Inscription : 20 nov. 2012 13:57

Re: [Calc] Export de sélection en PDF

Message par yama »

Bonjour luky-luke,

Merci pour ton bout de macro. C'est quasi ça, simplement est-il possible de les joindre ?

En effet, lorsque j'utilise ton bout de macro, les morceaux que je souhaite se trouvent en deux parties distinctes sur le pdf (Feuille 1 et Feuille2).
Or, je souhaite les avoir sur une seule feuille.
J'ai tenté d'adapter la macro mais pour le moment sans succès mais je ne désespère pas.

Cordialement
OOo 3.2.1 (Par obligation) sous Windows XP SP3 et Linux Ubuntu 10.04