Libre Office Draw : assembler des fichiers images en un seul fichier PDF

Installation, configuration et utilisation des logiciels que vous souhaitez installer.
Avatar du membre
tiogran
Messages : 163
Enregistré le : jeu. 24 nov. 2016 20:03

Re: [RESOLU] Libre Office Draw : assembler des images PNG en un fichier PDF

Message par tiogran »

Dernier message de la page précédente :

Linuxing a écrit :En gardant cette optique, nous pourrions nous en contenter en choisissant tout simplement de supprimer les extensions en cas de création d'un PDF, tout en prévoyant une éventuelle commande qui les enlève toutes en une seule fois
en effet, je m'y attaque...
Linuxing a écrit :Toujours dans cette optique, il me suffirait de convenir que mes fichiers actuels et futurs resteraient dans cette forme de nomination : A1, A2, A3 :?:
En effet, la seule contrainte à respecter que cela soit une lettre qui débute le nom du fichier. Si tu devais la changer ca serait à cet endroit là

Code : Tout sélectionner

Sub InsererUneImageDansPage(doc, unePage, url_folder, x)
   .....
   props(0).Value = convertToURL(url_folder & "A" & x+1)
End Sub
ou tu modifies "A" par toute autre caractère ou séquence de caractère...
Linuxing a écrit : Une fois ces paramètres maintenus, il serait alors bon de faire un ajout dans la macro pour le centrage automatique de l'insertion sur chaque page :)
Enleves ce code là voir si par défaut ca te convient:

Code : Tout sélectionner

resizeImageByWidth(lImage, 11000) 'les parametres suivant sont ajustable au 1/100 de mm
   positionImage.x = 6500
   positionImage.y = 5300
   lImage.Position = positionImage
Linuxing a écrit : Maintenant, s'il existe une formule qui permette la création de PDF sans contrainte de nom, d'extension ou que sais-je, tant mieux... je suis preneur :) ;)
A priori pas de souci ;), je te prépare çà
Linuxing a écrit : Pour ta question «Visualiser une image te permet-il de définir précisément la page de destination ? », je ne sais pas comment l'interpréter :oops:
Ce que je veux dire c'est qu'en admettant que tu puisses avoir un aperçu d'une image, en la voyant tu puisses te dire tiens celle là va à la page 13...
Configuration personnelle du PC.
i7 4790k
radeon 7970 4g
16g ram 2133
ssd 120g (pour windaube)
hdd 1T (pour linux)
Os = dual boot windows 10 (l'escroc)
linux mint (l'insoumis)
Environnement MATE.
Une devise? en ce moment une se rappelle souvent à mon bon souvenir "Le problème EST la solution"

Avatar du membre
Linuxing
Messages : 1484
Enregistré le : mar. 25 août 2015 01:28

Re: [RESOLU] Libre Office Draw : assembler des images PNG en un fichier PDF

Message par Linuxing »

tiogran a écrit :
Enleves ce code là voir si par défaut ca te convient:

Code : Tout sélectionner

resizeImageByWidth(lImage, 11000) 'les parametres suivant sont ajustable au 1/100 de mm
   positionImage.x = 6500
   positionImage.y = 5300
   lImage.Position = positionImage
Dans ton précédent message, plusieurs options se dessinent, mais pour l'essai j'ai lancé celle que tu proposes ci-dessus dans le message courant, cette dernière ayant pour but que les pages se centrent automatiquement lors de la création du PDF :) ;)

Mais pas de bol :( J'ai fait le test avec 3 pages sans leur extension (nommées : A1, A2, A3) puisque cette solution marcha (sans le centrage) ;)

Après retrait de cette partie de la macro, en lançant ensuite la procédure, 3 pages furent créées dans le volet de gauche, mais sans images insérées cette fois :o

Cette fois, je pige pour «aperçu des images» :lol:

J'ai un aperçu en miniatures de toutes mes images ; s'il s'agit de factures numérisées qui s'accumulent progressivement au cours de l'année civile, j'ai ceci :

Image

Dans le cas ci-dessus, j'ai 3 factures, chacune ayant été nommée : A1 pour la première, A2, pour la seconde et A3 pour la troisième ; dans cette optique A1 ira sur la page 1, A2 sur la page 2 et A3 sur la page 3... de façon à rester dans ma logique de classement :)

Lorsqu'il s'agit d'autres fichiers que j'entasse tous azimuts dans le même dossier, comme par exemple les photos d'APN, celles-ci ne reçoivent pas nécessairement un numéro de classement lors de leur enregistrement sur le disque, mais gardent souvent la date de la prise de vue en tant que nom ;) Si je devais vouloir les mettre une par page dans un PDF, je devrais alors enlever cette date de prise de vue et, selon mon choix de classement, attribuer A1, A2, A3 aux clichés concernés. ;)

Pour résumer, la plupart du temps, en ce qui concerne les tickets de caisse, les factures, les choses sont simples : la première facture (ou ticket) de l'année recevra le nom «A1» et le dernier le nom «Ax», «x» étant le nombre attribué au dernier document, nombre que je ne connais pas en début d'année puisque je ne sais pas combien de fois j'irai au magasin :lol:

Dans cette dernière hypothèse, je sais donc toujours quel fichier ira sur quelle page, étant donné que c'est la logique de la numérotation en ordre croissant qui en décidera :) ;)
Laptop depuis le 16 juillet 2021 : Tuxedo Polaris 17 - Processeur Intel® Core I7 - 10750H / NVIDIA GeForce RTX 1650Ti / Full-HD IPS mat 144Hz / DDR4 SO-DIMM : 16 GB (1x 16GB) 3200Mhz CL22 Samsung / SSD: 1000 GB Samsung 860 EVO (M.2 SATAIII) / WLAN & Bluetooth: Intel Wi-Fi 6 AX200 & Bluetooth 5.1 (up to 2400Mbps). OS : Linux Mint 20.3 (Una) Mate depuis ce 16 janvier 2022

Périphériques : 2 HD Western Digital - Imprimante HP Deskjet 2540 Tout-en-un / Scanner Canon Lide 110 - Navigateur : Firefox

Avatar du membre
tiogran
Messages : 163
Enregistré le : jeu. 24 nov. 2016 20:03

Re: [RESOLU] Libre Office Draw : assembler des images PNG en un fichier PDF

Message par tiogran »

Linuxing a écrit :Mais pas de bol :( J'ai fait le test avec 3 pages sans leur extension (nommées : A1, A2, A3) puisque cette solution marcha (sans le centrage) ;)
Après retrait de cette partie de la macro, en lançant ensuite la procédure, 3 pages furent créées dans le volet de gauche, mais sans images insérées cette fois
mmm je vois qu'il y a un souci avec les paramètres de position c'est de ma faute. As tu besoin d'une bordure sur la page pdf?
On réappliquera les parametres de positions lorsque tu auras une idée plus précise de ce que tu as besoin...
Voici une nouvelle version de la macro qui remplace intégralement l'ancienne. Je suis parti du principe que l'image à l'insertion remplissait toute la largeur de la page soit 210 mm (un a4 c'est 21 * 29.7 cm).

Code : Tout sélectionner

REM  *****  BASIC  *****
REM Ce travail est largement inspiré des travaux de M MARCELLY et M GODARD dans leur ouvrage "Programmation OpenOffice.org et LibreOffice"

Option explicit
Sub Main
	Dim doc, lesPages, unePage as object
	Dim url_folder as string
	Dim nImages, x as integer
	doc = thiscomponent
	url_folder = getDirectory(doc.URL)
	nImages = RecupererNombreFichiers(url_folder)
	lesPages = doc.drawpages 'c'est la collection des diapos du document
	'La première diapo est créée par défaut, il faut donc la traiter en priorité
	unePage = lesPages.getbyindex(0)
	unePage.Name = "Page 1"
	InsererUneImageDansPage(doc, unePage, url_folder, 0)
	'on lance une boucle qui va se répéter autant de fois qu'il y a de diapo
	For x = 1 to nImages-1' car la première est indexée à 0 (0 étant le premier index en programmation)
		lesPages.InsertNewByIndex(x)
		unePage = lesPages.getbyindex(x)
		unePage.Name = "Page " & x
		InsererUneImageDansPage(doc, unePage, url_folder, x)'L'insertion d'une image est une procédure plutot complexe c'est pourquoi elle est traitée dans un sous programme
		'ainsi si nous devons modifier les parametres à appliquer, la clarté du programme s'en trouvera améliorée.
	Next
End Sub

Function RecupererNombreFichiers(url_folder)
	Dim f2 as string
	Dim x as long
	x = 0
	f2 = Dir(url_folder & "*", 0)
	Do while Len(f2) > 0
		f2 = Dir
		x=x+1
	Loop
	'Msgbox("nbre total de fichiers sans compté le document lançeur = " & x)
	RecupererNombreFichiers = x-2 'les fichiers images = nbre total de fichiers - doc lanceur - fichier .lock
End function

Sub InsererUneImageDansPage(doc, unePage, url_folder, x)
	Dim lImage, gp as object
	Dim props(0) as New com.sun.star.beans.PropertyValue'attention à la casse!!!

	gp = createUnoservice("com.sun.star.graphic.GraphicProvider")'attention à la casse!!!
	'on définit l'adresse de l'image
	props(0).Name = "URL"'attention à la casse!!!
	props(0).Value = convertToURL(url_folder & "A" & x+1)'car A1 est l'image de la page index 0 (rappel ;)), Y A T IL UN SUFFIXE A TON IMAGE (ex .png ou .jpeg)??????
	lImage = doc.createInstance("com.sun.star.drawing.GraphicObjectShape")
	lImage.Graphic = gp.queryGraphic(props())
	unePage.add(lImage)
	resizeImageByWidth(lImage, 21000) 'les parametres suivant sont ajustable au 1/100 de mm
	lImage.Name = "image" & x+1
End Sub

Function getDirectory(URLPath As String) As String
REM Cette fonction est la copie exacte du travail de M Marcelly et de M Godard dans leur ouvrage "Programmation OpenOffice.org et LibreOffice"
	Dim parts As Variant
	parts = split(URLPath, "/")
	parts(UBound(parts())) = ""
	getDirectory = join(parts, "/")
End Function

Sub resizeImageByWidth(uneImage As Object, largeur As Long)
Dim imageInfo As Object, Proportion As Double, Taille1 As Object

imageInfo = uneImage.Graphic
Taille1 = imageInfo.SizePixel
Proportion = Taille1.Height / Taille1.Width
Taille1.Width = largeur ' largeur en 1/100 de mm
Taille1.Height = Taille1.Width * Proportion
uneImage.Size = Taille1
End Sub
là j'ai testé l'image prends toute la largeur de la page. Si on doit appliquer une bordure on ajustera les positions.
Linuxing a écrit :Cette fois, je pige pour «aperçu des images» :lol:
niquel car j'avais quelque chose à te proposer mais on verra plus tard par ce que là j'ai une échéance importante demain je ne vais pas avoir le temps de m'y atteller.
Linuxing a écrit :mais gardent souvent la date de la prise de vue en tant que nom ;)
intéressant, très intéressant; j'aimerai bien justement t'éviter d'avoir à renommer les fichiers... je dois tester une méthode en ce sens... laisses moi juste quelques jours
Configuration personnelle du PC.
i7 4790k
radeon 7970 4g
16g ram 2133
ssd 120g (pour windaube)
hdd 1T (pour linux)
Os = dual boot windows 10 (l'escroc)
linux mint (l'insoumis)
Environnement MATE.
Une devise? en ce moment une se rappelle souvent à mon bon souvenir "Le problème EST la solution"

Avatar du membre
Linuxing
Messages : 1484
Enregistré le : mar. 25 août 2015 01:28

Re: [RESOLU] Libre Office Draw : assembler des images PNG en un fichier PDF

Message par Linuxing »

Merci tiogran,

Il n'y a rien d'urgent :) ;)

En fait, l'idéal serait que le PDF puisse se faire de la manière la plus intuitive possible, sans devoir changer les extensions, ni devoir ajuster manuellement le centrage ;)

Quant à l'ordre d'insertion des fichiers sur les pages (1 par page dans notre cas), le mieux est qu'il puisse se faire selon l'ordre d'affichage qui est de mise dans le navigateur de fichiers :) 8-)

Comme tu l'as déjà vu, j'utilise un affichage en icônes ; mais pour être clair, voici un exemple d'affichage de photos en mode liste :

Image

Comme je l'ai indiqué avec les flèches, la création «intuitive» du PDF devrait pouvoir suivre la disposition de l'affichage en mode liste dans le navigateur 8-)
Laptop depuis le 16 juillet 2021 : Tuxedo Polaris 17 - Processeur Intel® Core I7 - 10750H / NVIDIA GeForce RTX 1650Ti / Full-HD IPS mat 144Hz / DDR4 SO-DIMM : 16 GB (1x 16GB) 3200Mhz CL22 Samsung / SSD: 1000 GB Samsung 860 EVO (M.2 SATAIII) / WLAN & Bluetooth: Intel Wi-Fi 6 AX200 & Bluetooth 5.1 (up to 2400Mbps). OS : Linux Mint 20.3 (Una) Mate depuis ce 16 janvier 2022

Périphériques : 2 HD Western Digital - Imprimante HP Deskjet 2540 Tout-en-un / Scanner Canon Lide 110 - Navigateur : Firefox

Avatar du membre
tiogran
Messages : 163
Enregistré le : jeu. 24 nov. 2016 20:03

Re: [RESOLU] Libre Office Draw : assembler des images PNG en un fichier PDF

Message par tiogran »

Linuxing a écrit :Merci tiogran
de rien, j'apprends en même temps que toi des méthodes et fonctions dont je ne connaissais même pas l'existence.
Linuxing a écrit :Quant à l'ordre d'insertion des fichiers sur les pages (1 par page dans notre cas), le mieux est qu'il puisse se faire selon l'ordre d'affichage qui est de mise dans le navigateur de fichiers :) 8-)
et bien tu sais quoi.... j'ai réussi!!!; tu n'auras même plus besoin de renommer et les extensions ne seront plus un problème. Il faudra juste se gaffer dans un premier temps que seul des fichiers images soient dans le repertoire car sinon Basic n'arrivera pas à l'insérer dans le doc Draw.

La suite peut être pas demain mais mardi...

edit du 17.1
Hello,

Alors j'ai vraiment du neuf, comme je te le disais, je comptais changer de fusil d'épaule.
Voici donc dans les grandes lignes; les changements apportés.
1. Le document draw ne devra plus être dans le dossier où sont situées les images
2. Le dossier ne devra comporter que des images en essayant d'eviter le .bmp qui il me semble est un format propre à windows. Tu pourras donc y insérer .jpg, .jpeg et .png
3. Les fichiers images n'auront plus à suivre un dénomination particulière comme A1, A2 etc et peu importe leur extension ils seront pris en compte en suivant un ordre alphabétique semblable à l'ordre établi par le navigateur de dossier
4. Le document draw pourra être utilisé plusieurs fois; en quelque sorte il pourra être mis à jour.
5. La macro pourra être lançée depuis n'importe quel document .draw puisque je vais te montrer comment faire pour "héberger" la macro ailleurs que sur le document. Ce qui signifie que si tu créé un nouveau document .draw tu pourras utiliser la macro sans enregistrer la macro dans le document.
6. La procédure générale est modifiée
- tu ouvres un nouveau document draw
- tu executes la macro par un moyen que tu vas me définir parmi une liste de possiblités disponibles.
- se faisant, tu seras amené à sélectionner le dossier dans lequel sont contenus les images
- puis, tu seras amené à sélectionner un dossier de destination dans lequel sera créé la copie PDF.
7. A propos de la copie PDF
- j'ai modifié certains paramètres de création du pdf pour que le volet affiche automatiquement les miniatures des images avec le défilement souhaité tévitant cette manip' que tu pratique systématiquement.
- L'affichage de la feuille en fenêtre centrale est normalement à 100%
- La largeur de l'image sera automatiquement de 21 cm correspondant en fait au format A4 (21*29.7cm) en position portrait; ce qui signifie que si tu dois avoir du format paysage pour l'instant ce n'est pas encore possible. L'idéal est donc de disposer d'image en format A4 et en orientation portrait
- le nom de la copie PDF sera exactement le même que le document draw avec lequel tu auras lançé la macro mais avec l'extension .pdf pour nos amis windoziens.
>> rappel: chacunes des options possibles sur le visionneur de documents pdf est disponible par programmation si tu vois que tu actives trop souvent une option, il est surement plus interessant de la programmer

Voici donc la macro qui remplace en intégralité la précédente, tu peux la tester dans un premier temps dans le document via la méthode utilisée jusqu'à maintenant:

Code : Tout sélectionner

REM  *****  BASIC  *****
Option explicit
SUB Main_genererPdf
    Dim doc, lesPages, unePage, page, fp, uneImg, lImage, gp as object
    Dim UrlImg() as variant
    Dim leDossImg_url, url_image, url_DossCopiePDF as string
    Dim x ,y ,z ,a ,b ,xMax, nImg, nPages as integer
    Dim props(0) as New com.sun.star.beans.PropertyValue
    Dim logg as boolean
   
    doc = thiscomponent
    lesPages = doc.Drawpages
    'logg = true
    logg = false
    fp = createunoservice("com.sun.star.ui.dialogs.FolderPicker")
    With fp
        .DisplayDirectory = convertToURL("/home/")
        .Title = "Sélectionner un dossier contenant les images à transformer"
        If .execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK then
            leDossImg_url = .directory & "/"
        End if
    End with
   
    UrlImg() = FilesName(leDossImg_url)
    xMax = Ubound(UrlImg)
    if logg then
        Msgbox("le nombre d'images est: " & xMax+1)
    end if
    With lesPages
        nPages = .getCount()
        if logg then
            Msgbox("le nombre de pages est: " & nPages)
        end if
        If nPages > 1 then
            For each page in lesPages.ElementNames
                lesPages.remove(lesPages.getbyname(page))
                if logg then
                    Msgbox(page & " a été supprimée")
                end if
            Next page       
        End if
       
        For y = 1 to xMax
            .InsertNewByIndex(y)
            if logg then
                Msgbox("la Page " & y+1 & " a été crée")
            end if
        Next   
    End with
   
    For z = 0 to xMax
        if logg then
                Msgbox("la Page " & z+1 & " est appellée")
        end if   
        unePage = lesPages.getbyindex(z)
        With unePage
            .name = "Page " & z+1
            nImg = .getCount()
            If nImg > 0 then
                For a=0 to nImg-1
                    .remove(.getbyindex(a))
                Next
            End if
        End with   
        url_image = ConvertToURL(leDossImg_url & UrlImg(z))
        gp = createUnoservice("com.sun.star.graphic.GraphicProvider")
          props(0).Name = "URL"
          props(0).Value = url_image
          lImage = doc.createInstance("com.sun.star.drawing.GraphicObjectShape")
          lImage.Graphic = gp.queryGraphic(props())
          unePage.add(lImage)
          New_resizeImageByWidth(lImage, 21000)
    Next
   
    With fp
        .DisplayDirectory = convertToURL("/home/")
        .Title = "Sélectionner un dossier de destination pour la copie PDF"
        If .execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK then
            url_DossCopiePDF = convertToURL(.directory & "/")
        End if
    End with
    GenererUnPdfAvec(doc, url_DossCopiePDF)   
END SUB


Function FilesName(leRepertoire as string)
    dim f2 as string
    dim x, xFiles as integer
    xFiles = 0
    f2 = Dir(leRepertoire & "*", 0)
    Do while Len(f2) >0
        f2 = Dir
        xFiles = xFiles+1
    Loop
    Dim arrayF(xFiles-1) as variant
    f2 = Dir(leRepertoire & "*", 0)
    For x = 0 to xFiles-1
        arrayF(x) = f2
        f2 = Dir
    Next
    Filesname = New_BubbleSortList(arrayF())
End Function

Function New_BubbleSortList(ByVal SortList(),optional sort2ndValue as Boolean)
'This function bubble sorts an array of maximum 2 dimensions.
'The default sorting order is the first dimension
'Only if sort2ndValue is True the second dimension is the relevant for the sorting order
    Dim s as Integer
    Dim t as Integer
    Dim i as Integer
    Dim k as Integer
    Dim dimensions as Integer
    Dim sortvalue as Integer
    Dim DisplayDummy
    dimensions = 2
   
On Local Error Goto No2ndDim   
    k = Ubound(SortList(),2)
    No2ndDim:
    If Err <> 0 Then dimensions = 1
   
    i = Ubound(SortList(),1)
    If ismissing(sort2ndValue) then
        sortvalue = 0
    else
        sortvalue = 1
    end if
   
    For s = 1 to i - 1
        For t = 0 to i-s
            Select Case dimensions
            Case 1
                If SortList(t) > SortList(t+1) Then                            
                    DisplayDummy = SortList(t)
                    SortList(t) = SortList(t+1)
                    SortList(t+1) = DisplayDummy   
                End If
            Case 2
                If SortList(t,sortvalue) > SortList(t+1,sortvalue) Then
                    For k = 0 to UBound(SortList(),2)                       
                            DisplayDummy = SortList(t,k)
                            SortList(t,k) = SortList(t+1,k)
                            SortList(t+1,k) = DisplayDummy
                    Next k
                End If
            End Select
        Next t
    Next s
    New_BubbleSortList = SortList()            
End Function       
REM  *****  BASIC  *****
REM Ce travail est largement inspiré des travaux de M MARCELLY et M GODARD dans leur ouvrage "Programmation OpenOffice.org et LibreOffice"

Sub New_resizeImageByWidth(uneImage As Object, largeur As Long)
Dim imageInfo As Object, Proportion As Double, Taille1 As Object

imageInfo = uneImage.Graphic
Taille1 = imageInfo.SizePixel
Proportion = Taille1.Height / Taille1.Width
Taille1.Width = largeur ' largeur en 1/100 de mm
Taille1.Height = Taille1.Width * Proportion
uneImage.Size = Taille1
End Sub

SUB GenererUnPdfAvec(doc, url_dest)
    Dim adresseDoc as string
    Dim propsPDF as variant, propsFiltre as variant
   
    propsFiltre = CreateProperties(Array(_
        "PageRange", "",_
        "UseTaggedPDF", True,_
        "FormsType", 1,_
        "ExportsNotes", True,_
        "DisplayPDFDocumentTitle", False,_
        "PDFViewSelection", 1,_
        "UseLosslessCompression", True,_
        "InitialView", 2,_
        "PageLayout", 2,_
        "Zoom", 100 ))
       
    propsPDF = CreateProperties(Array(_
    "FilterName", "draw_pdf_Export", "FilterData", propsFiltre() ))
   
    adresseDoc = convertToURL(url_dest & getFileNameOnly(doc.URL) & ".pdf")
    doc.storeToURL(adresseDoc, propsPDF())
    Msgbox("fin de la copie!")
END SUB

Function CreateProperties(propList() As Variant) As Object
Dim n as long, x as long

n = UBound(propList)
if n < 0  then
  CreateProperties = Array()
else
  if (n and 1) = 0  then
    MsgBox("Erreur : nombre impair d'arguments", 16, "CreateProperties")
  else
    Dim p(n\2) As New com.sun.star.beans.PropertyValue
    for x = 0 to n\2
      p(x).Name = propList(2*x)
      p(x).Value = propList(2*x +1)
    next
    CreateProperties = p()
  end if
end if
End Function

Function getFileNameOnly(URLPath As String) As String
Dim s As String, parts As Variant
s = getFullFileName(URLPath)
parts = split(s, ".")
if UBound(parts()) > 0  then
  parts(UBound(parts())) = ""
  s = join(parts, ".")
  getFileNameOnly = Mid(s, 1, Len(s) -1)
else
  getFileNameOnly = parts(0)
end if
End Function
Revenons à l'hébergement de la macro, je te demande de me faire confiance et de suivre mon conseil. Il est plus judicieux d'héberger la macro dans la bibliothèque réservée à Libre Office de sorte qu'elle soit disponible plus facilement via n'importe quel document.
Une fois ceci fait, tu vas pouvoir créer plusieurs sortes de raccourcis pour l'executer facilement.
ces facilités d'execution sont
- via une touche du clavier
- via un ajout dans un des menus de Libre Office Draw
- via l'ajout d'un bouton dans la barre d'outils "standard" ou n'importe quelle autre d'ailleurs.
il y en a peut etre d'autres mais là je ne m'en souviens pas...
Si tu me fais part de ta préférence, je peux t'apprendre comment faire.

Au final, je pense qu'il s'agit là d'un bon outil, il est robuste et je pense l'améliorer un peu en terme de robustesse car le moindre fichier qui n'est pas une image dans le dossier déclenchera une erreur et çà c'est pas terrible. Je suis assez content du résultat obtenu et j'espère que cela te plaira.

PS: j'ai devellopé cette version sur windows, normalement même avec linux ca devra faire. Je rappelle que bon nombre des fonctions ou sous programmes sont en totalité ou en partie issu du travail de membres de la communauté open office et comme il est de tradition dans l'open source je les en remercie.
Configuration personnelle du PC.
i7 4790k
radeon 7970 4g
16g ram 2133
ssd 120g (pour windaube)
hdd 1T (pour linux)
Os = dual boot windows 10 (l'escroc)
linux mint (l'insoumis)
Environnement MATE.
Une devise? en ce moment une se rappelle souvent à mon bon souvenir "Le problème EST la solution"

Avatar du membre
Linuxing
Messages : 1484
Enregistré le : mar. 25 août 2015 01:28

Re: [RESOLU] Libre Office Draw : assembler des images PNG en un fichier PDF

Message par Linuxing »

Comme confirmé en MP, je regarde ça de près et ne manquerai pas de donner le résultat ici :) ;) 8-)

Merci
Laptop depuis le 16 juillet 2021 : Tuxedo Polaris 17 - Processeur Intel® Core I7 - 10750H / NVIDIA GeForce RTX 1650Ti / Full-HD IPS mat 144Hz / DDR4 SO-DIMM : 16 GB (1x 16GB) 3200Mhz CL22 Samsung / SSD: 1000 GB Samsung 860 EVO (M.2 SATAIII) / WLAN & Bluetooth: Intel Wi-Fi 6 AX200 & Bluetooth 5.1 (up to 2400Mbps). OS : Linux Mint 20.3 (Una) Mate depuis ce 16 janvier 2022

Périphériques : 2 HD Western Digital - Imprimante HP Deskjet 2540 Tout-en-un / Scanner Canon Lide 110 - Navigateur : Firefox

Avatar du membre
Linuxing
Messages : 1484
Enregistré le : mar. 25 août 2015 01:28

Re: [RESOLU] Libre Office Draw : assembler des images PNG en un fichier PDF

Message par Linuxing »

Salut tiogran,

Cette fois, j'ai aussi 2 messages d'affiliée, mais bon, si le précédent est devenu un surplus inutile, zebulon me tirera l'oreille :) ;) :lol:

Ou il pourra tout simplement le supprimer, puisqu'il ne s'agit que d'une confirmation de lecture 8-)

Revenons à la situation nouvelle :

J'ai copié/collé ta nouvelle macro là où j'avais mis les précédentes dans Libre Office, ces dernières ayant été effacées :)

Tout d'abord, par distraction, je lançai la macro, mais sans avoir créé un document .draw, ce qui donna ceci :

Image
Image
Image

Maintenant, voici après avoir dûment créé un document .draw que je mis dans le dossier contenant les images :

Image
Image

Il semble que ça freine encore un peu, mais on y arrivera ;)

En tous cas, je bénis celle ou celui qui inventa le programme de capture d'écran :lol:
Laptop depuis le 16 juillet 2021 : Tuxedo Polaris 17 - Processeur Intel® Core I7 - 10750H / NVIDIA GeForce RTX 1650Ti / Full-HD IPS mat 144Hz / DDR4 SO-DIMM : 16 GB (1x 16GB) 3200Mhz CL22 Samsung / SSD: 1000 GB Samsung 860 EVO (M.2 SATAIII) / WLAN & Bluetooth: Intel Wi-Fi 6 AX200 & Bluetooth 5.1 (up to 2400Mbps). OS : Linux Mint 20.3 (Una) Mate depuis ce 16 janvier 2022

Périphériques : 2 HD Western Digital - Imprimante HP Deskjet 2540 Tout-en-un / Scanner Canon Lide 110 - Navigateur : Firefox

Avatar du membre
tiogran
Messages : 163
Enregistré le : jeu. 24 nov. 2016 20:03

Re: [RESOLU] Libre Office Draw : assembler des images PNG en un fichier PDF

Message par tiogran »

Salut linuxing,

déja c'est bien tu as enregistré la macro dans la bonne bibliotheque cela t'évitera de copier à chaque fois la macro en cas de nouveau document à créer.
Les erreurs rencontrées viennent de la mauvaise utilisation que tu fais de la macro.
La première est rencontrée car il n'y a pas de document draw ouvert et de fait le programme est bien incapable de créer des diapos. en effet le programme n'est pas encore capable de créer de son propre chef le document necessaire.
La deuxième erreur rencontrée vient du fait que ton document draw est dans le dossier ciblé par le programme et ici
Tiogran a écrit :Alors j'ai vraiment du neuf, comme je te le disais, je comptais changer de fusil d'épaule.
Voici donc dans les grandes lignes; les changements apportés.
1. Le document draw ne devra plus être dans le dossier où sont situées les images
2. Le dossier ne devra comporter que des images en essayant d'eviter le .bmp qui il me semble est un format propre à windows. Tu pourras donc y insérer .jpg, .jpeg et .png
Une fois réglé ces détails, cela devrait rentrer dans l'ordre...

PS: Il va falloir néanmoins prévoir un dispositif pour éviter que l'utilisateur (toi ou un autre) ne se retrouve pas plongé dans l'EDI pour éviter ces deux scénarios. Il faudra aussi que ce dispositif avertisse correctement l'utilisateur pour qu'il corrige ce qu'il y a à corriger afin que le programme poursuive son éxécution... J'ai ma petite idée...
Configuration personnelle du PC.
i7 4790k
radeon 7970 4g
16g ram 2133
ssd 120g (pour windaube)
hdd 1T (pour linux)
Os = dual boot windows 10 (l'escroc)
linux mint (l'insoumis)
Environnement MATE.
Une devise? en ce moment une se rappelle souvent à mon bon souvenir "Le problème EST la solution"

Avatar du membre
Linuxing
Messages : 1484
Enregistré le : mar. 25 août 2015 01:28

Re: [RESOLU] Libre Office Draw : assembler des images PNG en un fichier PDF

Message par Linuxing »

Salut tiogran,

Je n'avais pas mis le document .draw hors du dossier contenant les images car, lorsque tu disais «ne devra plus y être», je n'avais pas compris que, en fait, il ne pouvait plus y être ;)

Ce fut rapidement corrigé, de même que la précaution d'ouvrir un document .draw avant de faire l'opération :)

J'ai alors lancé la marco en laissant mes images nommées telles quelles, ne tenant compte d'aucune extension, mais en veillant qu'il n'y avait pas de .bmp 8-)

Après avoir sélectionné le dossier contenant les images, comme ceci :

Image

... les images s'affichèrent dans le volet de gauche de Office Draw. Ensuite, je cliquai pour les enregistrer en PDF, mais une fenêtre revint de manière sans doute intempestive lorsque je sélectionnai le dossier de destination :

Image

De même que :

Image

Toutefois, un PDF correspondant aux 118 images fut constitué, mais avec des pages dans le désordre, la page 3 me montrant une facture de novembre, par exemple, alors que celle-ci aurait dû apparaître en fin de document :roll:

Je décidai ensuite de donner l'extension .jpg à toutes les images avant de recommencer l'opération, mais même dans ce cas, les fenêtres d'alerte réapparurent et le nouveau PDF afficha des pages de manière non chronologiques :(

A plus :) ;)
Laptop depuis le 16 juillet 2021 : Tuxedo Polaris 17 - Processeur Intel® Core I7 - 10750H / NVIDIA GeForce RTX 1650Ti / Full-HD IPS mat 144Hz / DDR4 SO-DIMM : 16 GB (1x 16GB) 3200Mhz CL22 Samsung / SSD: 1000 GB Samsung 860 EVO (M.2 SATAIII) / WLAN & Bluetooth: Intel Wi-Fi 6 AX200 & Bluetooth 5.1 (up to 2400Mbps). OS : Linux Mint 20.3 (Una) Mate depuis ce 16 janvier 2022

Périphériques : 2 HD Western Digital - Imprimante HP Deskjet 2540 Tout-en-un / Scanner Canon Lide 110 - Navigateur : Firefox

Avatar du membre
tiogran
Messages : 163
Enregistré le : jeu. 24 nov. 2016 20:03

Re: [RESOLU] Libre Office Draw : assembler des images PNG en un fichier PDF

Message par tiogran »

Salut!

Il te manque une fonction que je pensai interne... Je te la mets en réponse dès que possible.
Configuration personnelle du PC.
i7 4790k
radeon 7970 4g
16g ram 2133
ssd 120g (pour windaube)
hdd 1T (pour linux)
Os = dual boot windows 10 (l'escroc)
linux mint (l'insoumis)
Environnement MATE.
Une devise? en ce moment une se rappelle souvent à mon bon souvenir "Le problème EST la solution"

Avatar du membre
Linuxing
Messages : 1484
Enregistré le : mar. 25 août 2015 01:28

Re: [RESOLU] Libre Office Draw : assembler des images PNG en un fichier PDF

Message par Linuxing »

OK, ça roule, et passe un bon WE :) ;) 8-)
Modifié en dernier par Invité le sam. 21 janv. 2017 22:05, modifié 1 fois.
Raison : suppression d'une citation reprenant à 100% le message précédent.
Laptop depuis le 16 juillet 2021 : Tuxedo Polaris 17 - Processeur Intel® Core I7 - 10750H / NVIDIA GeForce RTX 1650Ti / Full-HD IPS mat 144Hz / DDR4 SO-DIMM : 16 GB (1x 16GB) 3200Mhz CL22 Samsung / SSD: 1000 GB Samsung 860 EVO (M.2 SATAIII) / WLAN & Bluetooth: Intel Wi-Fi 6 AX200 & Bluetooth 5.1 (up to 2400Mbps). OS : Linux Mint 20.3 (Una) Mate depuis ce 16 janvier 2022

Périphériques : 2 HD Western Digital - Imprimante HP Deskjet 2540 Tout-en-un / Scanner Canon Lide 110 - Navigateur : Firefox

Répondre