Re: [fr-users] Changement parametres d'exportation ou macro dans Draw
Bonsoir, J'ai fait une version (Draw) pour l'exportation jpeg (uniquement pour la sélection) la clef est : * La valeur LogicalWidth doit être égale à la valeur PixelWidth * Le MediaType doit être "image/jpeg" et non "image/jpg" Sub ExportSelJpg REM Filter dependent filter properties Dim aFilterData (10) As New com.sun.star.beans.PropertyValue Dim sFileUrl As String Dim oDoc AS Object Dim oDrawPage As Object Dim curFile, aFile, aPage, aExtp as string Dim defdpi as integer Dim cfRed# aEXtp=".p" 'extension pour image principale aEXts=".s" 'Nomme les pages, pour remplacer le numéro de page - ce qui suit est un exemple pageName = array ("sens","pose","tapees") 'largeurs par défaut widthp = 1536 ' Largeur par défaut de la grande image - la hauteur s'ajuste automatiquement widths = 576 ' Largeur par défaut de la petite image 'Tableaux des largeurs si non constantes arrWidths = array (1536,1200) arrWidths = array (640,576,512) oDoc = thisComponent curFile = ThisComponent.getURL() curFile = Left(curFile, Len(curFile)-4) 'Supprime l'extension de fichier (.odg) For i = 0 to oDoc.getDrawPages().Count-1 'Balaye toutes les pages oDrawPage = oDoc.getDrawPages().getByIndex(i) oDoc.CurrentController.setCurrentPage(oDrawPage) ' PARAMETRES D'EXPORTATION aFilterData(0).Name = "PixelWidth" aFilterData(0).Value = widthp aFilterData(8).Name ="LogicalWidth" aFilterData(10).Name ="Quality" aFilterData(10).Value = 85 'Selectionne tous les objets fDoc = oDoc.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") dispatcher.executeDispatch(fDoc, ".uno:SelectAll", "", 0, Array()) xObj = oDoc.currentController.currentPage xView = oDoc.currentController xSelection = xView.selection If isEmpty (xSelection) Then xObj = xView.currentPage Else xObj = xSelection End If on error Resume Next aPage = "_"+pageName(i) aFilterData(0).Value = arrWidthp(i) on error Goto 0 aFilterData(8).Value = aFilterData(0).Value sFileUrl = curFile + aPage + aExtp + ".jpg" ExportJpg( xObj, sFileUrl, aFilterData() ) Wait 500 aFilterData(0).Value = widths on error Resume Next aFilterData(0).Value = arrWidths(i) on error Goto 0 aFilterData(8).Value = aFilterData(0).Value sFileUrl = curFile + aPage + aExts + ".jpg" ExportJpg( xObj, sFileUrl, aFilterData() ) Wait 500 Next i oDrawPage = oDoc.getDrawPages().getByIndex(0) oDoc.CurrentController.setCurrentPage(oDrawPage) 'revient en page 1 End Sub Sub ExportJpg (xObject, sFileUrl As String, aFilterData) Dim xExporter xExporter = createUnoService( "com.sun.star.drawing.GraphicExportFilter" ) xExporter.SetSourceDocument(xObject) Dim aArgs (2) As New com.sun.star.beans.PropertyValue Dim aURL As New com.sun.star.util.URL aURL.complete = sFileUrl aArgs(0).Name = "MediaType" aArgs(0).Value = "image/jpeg" 'Et non "image/jpg" ! aArgs(1).Name = "URL" aArgs(1).Value = aURL aArgs(2).Name = "FilterData" aArgs(2).Value = aFilterData xExporter.filter (aArgs()) End Sub Salutations, Pierre Le 04/12/2016 à 17:07, Pierre ROUZEAU a écrit : Merci, c'est ce que je recherchais, mais le premier message n'est pas arrivé dans ma boite mail. J'ai modifié les macros pour : - Exporter chaque page (dans le répertoire courant, avec le nom du fichier source+le numéro de page) - Exporter deux images a des définitions différentes pour chaque page - Avoir en option un nom à la place du numéro de page, stocké dans un tableau Le nombre de pixels n'est pris en compte que s'il est entier, les valeurs décimales ne marchent pas. J'ai fait deux variantes - Export2png qui exporte la totalité de chaque page avec une densité de pixel définie (en dpi) - ExportSelPng qui n'exporte que ce qui est visible (sélectionner tout), avec une largeur d'image fixée en pixels Pour la deuxième variante, on peut en option saisir des tableaux définissant la largeur de chaque image. Si le tableau n'est pas rempli, la largeur par défaut est utilisée. J'ai essayé de faire une variante d'exportation en jpg, dans ce cas il faut utiliser les variables LogicalHeight et LogicalWidth avec un coefficient, mais pour une raison inconnue, Je ne peut pas avoir d'images de plus de 497 pixels de large. Salutations, Pierre REM * BASIC * Sub Export2png 'Exporte la pleine page sur une densité de pixels REM Filter dependent filter properties Dim aFilterData (4) As New com.sun.star.beans.PropertyValue Dim sFileUrl As String Dim oDoc AS Object Dim oDrawPage As Object Dim curFile, aFile, aPage as string Dim defdpi as integer Dim cfRed as double Dim wd, ht as long 'Ce qui suit est un exemple pou
Re: [fr-users] Changement parametres d'exportation ou macro dans Draw
lterData(1).Value = ' compression aFilterData(2).Name ="Compression" aFilterData(2).Value = 9 'de 0 à 9 ' entrelacement aFilterData(3).Name ="Interlaced" aFilterData(3).Value = 0 ' transparence aFilterData(4).Name = "Translucent" aFilterData(4).Value = false aFilterData(6).Name = "ExportMode" aFilterData(6).Value = 0 fDoc = oDoc.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") dispatcher.executeDispatch(fDoc, ".uno:SelectAll", "", 0, Array()) xObj = oDoc.currentController.currentPage xView = oDoc.currentController 'Select all components of this page xSelection = xView.selection 'pour pouvoir exporter une sélection correctement, il faudrait connaitre ses dimensions If isEmpty( xSelection ) Then xObj = xView.currentPage Else xObj = xSelection End If aPage = "_p"+ (i+1) on error Resume Next aPage = "_"+pageName(i) aFilterData(0).Value = arrWidthp(i) on error Goto 0 oDoc.CurrentController.setCurrentPage(oDrawPage) sFileUrl = curFile + aPage + ".p.png" ExportPng (xObj, sFileUrl, aFilterData()) Wait 500 aFilterData(0).Value = widths on error Resume Next aFilterData(0).Value = arrWidths(i) on error Goto 0 sFileUrl = curFile + aPage + ".s.png" ExportPng (xObj, sFileUrl, aFilterData()) Wait 500 Next i End Sub Sub ExportPng( xObject, sFileUrl As String, aFilterData ) Dim xExporter xExporter = createUnoService( "com.sun.star.drawing.GraphicExportFilter" ) xExporter.SetSourceDocument(xObject) Dim aArgs (2) As New com.sun.star.beans.PropertyValue Dim aURL As New com.sun.star.util.URL aURL.complete = sFileUrl aArgs(0).Name = "MediaType" aArgs(0).Value = "image/png" aArgs(1).Name = "URL" aArgs(1).Value = aURL aArgs(2).Name = "FilterData" aArgs(2).Value = aFilterData xExporter.filter( aArgs() ) End Sub Le 01/12/2016 à 09:28, Agnès Simonet a écrit : Bonjour, Le 30/11/2016 21:37, Pierre ROUZEAU a écrit : Il n'y a pas d'espoir du coté des macros ? Sans enregistreur, comment connaitre la syntaxe ? Si, mais il faut lire les réponses à la question posée ;-) http://listarchives.libreoffice.org/fr/users/msg28946.html Cordialement Agnès S. --- L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast. https://www.avast.com/antivirus -- Envoyez un mail à users+unsubscr...@fr.libreoffice.org pour savoir comment vous désinscrire Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
Re: [fr-users] Changement parametres d'exportation ou macro dans Draw
Bonsoir, cela ne résout que le problème du format. Pour les batch de conversion d'image, J'utilise plutôt IrfanView mais la taille des fichiers générée est excessive pour les fichiers PNG, aussi Je ferais peut-être un essai. L'un des plus gros problèmes, c'est la définition de l'image, car un fichier de type Draw doit être exporté à la définition native, car une conversion de taille fait exploser la taille du fichier à cause du lissage des bords et en plus baisse la qualité. Typiquement, si je divise le nombre de pixels par 3 ou 4, Je me retrouve avec un fichier trois fois plus gros que l'original alors que si j'exporte directement à la résolution réduite souhaitée, la taille du fichier est réduite en conséquence. Globalement, ça fait une différence de taille de fichier qui varie de cinq à dix fois, ce que Je ne peux pas négliger pour une publication Internet. Du coup, parfois je préfère utiliser le jpeg, ce qui est très peu optimal pour un fichier de dessin vectoriel, mais qui se comporte mieux en redimensionnement. Il n'y a pas d'espoir du coté des macros ? Sans enregistreur, comment connaitre la syntaxe ? Salutations Le 29/11/2016 à 23:41, bernard schoenacker a écrit : On Tue, 29 Nov 2016 23:14:07 +0100 Pierre ROUZEAU <pie...@rouzeau.net> wrote: Bonjour, Je fais pas mal d'exportation au format PNG depuis draw mais c'est assez long: *Draw ne se souvient pas des derniers paramètres utilisés et on doit resaisir à chaque fois: - L'extension par défaut de l'exportation est gif et Je n'ai pas trouvé comment la changer - Il faut décocher la transparence pour que le fichier exporté soit lisible - Quand on change la définition, la taille de la feuille est modifiée, ce qui fait que la taille de l'image ne change pas, il faut resaisir la largeur de la feuille pour que le changement soit de définition soit effectivement pris en compte (pour moi c'est un bug) - Éventuellement, je changerais bien le taux de compression, mais Je ne le fais jamais, ça fait une commande de plus et de toutes façons, le taux de compression natif LO n'est pas très bon Je ferais bien une macro, ce qui me permettrais de faire des exportations automatiques en plusieurs définitions, mais l'enregistreur de macros n'apparait pas dans le menu macro de draw (je l'ai bien sélectionné dans les options avancées) - il s'affiche dans writer et calc - Quelqu'un aurait-il une piste pour la syntaxe d'exportation draw dans une macro ? salutations bonjour, je vous conseille de passer par le shell et d'employer gif2png http://gnuwin32.sourceforge.net/packages/pngutils.htm ou d'employer imagemagick qui est également adapté au travail par batch ... voici comment je compte faire sous linux (à adapter pour powershell) : for img in $(tree |awk '/gif/ {print$2}'|xargs) ; do gif2png $img ;done autrement, je peut prêter un accès sur un serveur à l'aide de mstsc et d'un compte ftp ou directement via ssh (mobaxterm ou putty) slt bernard -- --- Pierre Rouzeau - Proud indigenous of old Europe www.rouzeau.net <http://www.rouzeau.net> --- --- L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast. https://www.avast.com/antivirus -- Envoyez un mail à users+unsubscr...@fr.libreoffice.org pour savoir comment vous désinscrire Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés
[fr-users] Changement parametres d'exportation ou macro dans Draw
Bonjour, Je fais pas mal d'exportation au format PNG depuis draw mais c'est assez long: *Draw ne se souvient pas des derniers paramètres utilisés et on doit resaisir à chaque fois: - L'extension par défaut de l'exportation est gif et Je n'ai pas trouvé comment la changer - Il faut décocher la transparence pour que le fichier exporté soit lisible - Quand on change la définition, la taille de la feuille est modifiée, ce qui fait que la taille de l'image ne change pas, il faut resaisir la largeur de la feuille pour que le changement soit de définition soit effectivement pris en compte (pour moi c'est un bug) - Éventuellement, je changerais bien le taux de compression, mais Je ne le fais jamais, ça fait une commande de plus et de toutes façons, le taux de compression natif LO n'est pas très bon Je ferais bien une macro, ce qui me permettrais de faire des exportations automatiques en plusieurs définitions, mais l'enregistreur de macros n'apparait pas dans le menu macro de draw (je l'ai bien sélectionné dans les options avancées) - il s'affiche dans writer et calc - Quelqu'un aurait-il une piste pour la syntaxe d'exportation draw dans une macro ? salutations --- L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast. https://www.avast.com/antivirus -- Envoyez un mail à users+unsubscr...@fr.libreoffice.org pour savoir comment vous désinscrire Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/ Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être supprimés