[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 !

[Calc] Export de sélection en PDF

Messagepar yama » 21 Mars 2013 10:52

Bonjour,

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

Code : Tout sélectionner   AgrandirRéduire
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
yama
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 50
Inscrit le : 20 Nov 2012 14:57

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

Messagepar bm92 » 21 Mars 2013 16:06

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
bm92
ManitOOu
ManitOOu
 
Message(s) : 2562
Inscrit le : 26 Nov 2005 14:42

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

Messagepar Dude » 21 Mars 2013 16:31

Image
Il y a une extension pour ça : viewtopic.php?f=18&t=32339
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21045
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

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

Messagepar yama » 22 Mars 2013 09:53

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.
Pièces jointes
Pdf.ods
(413.93 Kio) Téléchargé 86 fois
OOo 3.2.1 (Par obligation) sous Windows XP SP3 et Linux Ubuntu 10.04
yama
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 50
Inscrit le : 20 Nov 2012 14:57

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

Messagepar luky-luke » 22 Mars 2013 20:22

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   AgrandirRéduire
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:
Pièces jointes
Pdf_2.ods
(417.33 Kio) Téléchargé 199 fois
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
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 907
Inscrit le : 27 Nov 2010 01:17
Localisation : gâtine deux-sèvrienne

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

Messagepar yama » 25 Mars 2013 09:07

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
yama
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 50
Inscrit le : 20 Nov 2012 14:57


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 6 invité(s)