Re: [fr-users] Changement parametres d'exportation ou macro dans Draw

2016-12-04 Par sujet Pierre ROUZEAU
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

2016-12-04 Par sujet Pierre ROUZEAU
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

2016-11-30 Par sujet Pierre ROUZEAU
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

2016-11-29 Par sujet Pierre ROUZEAU

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