Page 7 sur 8
Re: Libre Office Draw : assembler des images PNG en un fichier PDF
Posté : jeu. 26 janv. 2017 01:34
par Linuxing
Dernier message de la page précédente :
F15 a écrit :Bonsoir,
Je suis ce sujet depuis le début avec attention.
Pour le rangement des images, pour qu'un ordre chronologique soit favorisé, pourquoi ne pas nommer les fichiers en utilisant la date mais pas sous notre format mais à la façon anglaise Année-Mois-Jour
exemple : pour un fichier enregistré aujourd'hui le 25 janvier 2017, celui-ci serait appelé : A170125.
Ce qui permettrait même de pouvoir créer un fichier avec tous les documents de l'année.
Salut F15,
Ici, je ne sais plus trop quoi et, étant donné mes 118 images, j'hésite à les renommer toutes en les datant si le coup n'est pas certain quant à la chronologie dans le PDF...

Re: Libre Office Draw : assembler des images PNG en un fichier PDF
Posté : jeu. 26 janv. 2017 10:13
par tiogran
Linuxing a écrit :
Pour un format connu et généralisé comme le PDF, on peut dira qu'il nous aura fait suer

Lol vi c'est net. Pis tu vas voir que lorsqu'on aura trouvé la solution quelqu'un va arriver
oui tu comprends en python tu fais une commande "PDF folder truc" et bam t'as ton fichier
Re: Libre Office Draw : assembler des images PNG en un fichier PDF
Posté : jeu. 26 janv. 2017 10:20
par tiogran
linuxing a écrit :Ici, je ne sais plus trop quoi et, étant donné mes 118 images, j'hésite à les renommer toutes en les datant si le coup n'est pas certain quant à la chronologie dans le PDF...

Je peux t'assurer que si tu mets a001, a011, a002, a112; la macro les triera comme Caja.
Caja ne fait pas un tri alphanumérique c'est autre chose et j'aimerai arriver a faire comme lui...
Re: Libre Office Draw : assembler des images PNG en un fichier PDF
Posté : jeu. 26 janv. 2017 11:30
par bealesroches
Bonjour,
Personnellement, pour assembler plusieurs documents en pdf, j'utilise pdfshuffler, disponible dans Synaptics, qui permet d'insérer plusieurs pages en un seul document.
Il est possible de réaliser plusieurs assemblages par exemple 10 pages à la fois faire des petits modules et permet ensuite d'assembler les différentes parties pour obtenir un fichier complet.
Il est aussi possible de faire du glisser déplacer pour changer ou adapter l'ordre des pages.
Si je devais faire un document de 118 pages, je nommerai mes documents dans le dossier qui va bien, pour les retrouver aisément et en fonction de l'ordre souhaité, page 1; page 2; ...page 118, soit l'ordre de l'impression ou de la lecture souhaitées, ce qui facilite grandement la mise en page.
Attention toutefois à pdfshuffler, l'affichage des vignettes n'est pas fameux et ne permettent pas vraiment de juger de la qualité du document fini qui lui sera impeccable
Pour créer mes documents, j'utilise Inkscape disponible dans Synaptics plutôt que Libre office Draw, certes on ne crée qu'une page à la fois il faut juste l'apprivoiser un peu.
Un document de 100 pages prendra du temps à créer, le gain de temps pour la mise en pages par modules avec pdfshuffler sera sûrement apprécié.
Autre astuce, s'il n'y a pas d'impératif de transparence, j'évite le PNG et je préfère le jpg pour une question de poids du document final.
Cordialement.
Re: Libre Office Draw : assembler des images PNG en un fichier PDF
Posté : jeu. 26 janv. 2017 14:41
par Linuxing
tiogran a écrit :
Je peux t'assurer que si tu mets a001, a011, a002, a112; la macro les triera comme Caja.
Caja ne fait pas un tri alphanumérique c'est autre chose et j'aimerai arriver a faire comme lui...
Je pige pas trop avec précision... A1 deviendrait A01 ; A2 deviendrait A02 et, par exemple, A100 devrait être A0100 ?
En tous cas, voici comment ça se présente dans Caja chez moi... et jusqu'à A118
Béni soit le programme de capture d'écran !

Re: Libre Office Draw : assembler des images PNG en un fichier PDF
Posté : jeu. 26 janv. 2017 14:45
par Linuxing
bealesroches a écrit :Bonjour,
Personnellement, pour assembler plusieurs documents en pdf, j'utilise pdfshuffler, disponible dans Synaptics, qui permet d'insérer plusieurs pages en un seul document.
Il est possible de réaliser plusieurs assemblages par exemple 10 pages à la fois faire des petits modules et permet ensuite d'assembler les différentes parties pour obtenir un fichier complet...............Attention toutefois à pdfshuffler, l'affichage des vignettes n'est pas fameux et ne permettent pas vraiment de juger de la qualité du document fini qui lui sera impeccable............
Merci pour ta suggestion, mais ça reste encore sujet à caution ; je veux un truc qui «emballe» tout sans faire de noise

Re: Libre Office Draw : assembler des images PNG en un fichier PDF
Posté : jeu. 26 janv. 2017 18:45
par bealesroches
Linuxing a écrit :Merci pour ta suggestion, mais ça reste encore sujet à caution ; je veux un truc qui «emballe» tout sans faire de noise
C'était juste un retour d'expérience où on me demandait productivité, rentabilité, sécurité et des documents irréprochables prêts à imprimer avec un budget nul !
Depuis je suis à la retraite. J'ai été remplacée par un photocopieur pour la partie pdf et rentabilité, pour le reste, ils sous-traitent. Je me sens moins stressée maintenant, par contre je cherche moi aussi le truc qui fait tout mais j'ai peur de m'ennuyer.

Re: Libre Office Draw : assembler des images PNG en un fichier PDF
Posté : jeu. 26 janv. 2017 19:20
par tiogran
Bonsoir tout le monde,
linuxing a écrit :Je pige pas trop avec précision... A1 deviendrait A01 ; A2 deviendrait A02 et, par exemple, A100 devrait être A0100 ?
et non

. Il faut qu'il y ait le même nombre de chiffre quelque soit la séquence sinon le tri s'en trouvera perturbé.
C'est le tri alphabétique dans le sens le plus pur du terme.
Par exemple; dans un dictionnaire "Du" viendra après "David" et donc de la même manière A2 sera trié après A1111 car le deuxième caractère de A1111 est un "1" et en comparaison du deuxième caractère de A2 qui est un "2",; il classe A1111 avant.
Caja ne fait pas un tri alphabétique au sens propre du terme; quand il rencontre un chiffre, il le traite en tant que nombre.
bealesroches a écrit :C'était juste un retour d'expérience où on me demandait productivité, rentabilité, sécurité et des documents irréprochables prêts à imprimer avec un budget nul !
merci bealesroches, il est certain qu'il en faut pas se cantonner aux seules possibilités de Libre Office. L'avantage de la procédure que je tente de mettre en place c'est qu'il n'y aura aucune action "renommer".
Re: Libre Office Draw : assembler des images PNG en un fichier PDF
Posté : jeu. 26 janv. 2017 20:34
par Linuxing
@ bealesroches et tiogran,
@ bealesroches :
J'avais au début Gscan2pdf, jusqu'au moment où ça a déconné :
https://www.forum-francophone-linuxmint ... =23&t=4205" onclick="window.open(this.href);return false;
@ tiogran :
Sur base de ton dernier message sur le tri, je préfère attendre et patienter

Re: Libre Office Draw : assembler des images PNG en un fichier PDF
Posté : jeu. 26 janv. 2017 21:36
par tiogran
tu fais bien linuxing, tu fais bien voici la nouvelle macro!
Elle va régler ton problème de A100 etc
Code : Tout sélectionner
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 suspendu pour test
.name = UrlImg(z) 'activée pour test
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 = triAlpha(arrayF())
End Function
Sub New_resizeImageByWidth(uneImage As Object, largeur As Long)
'Fonction extraite du livre "programmation open office.org et libre office"
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
'Fonction extraite du livre "programmation open office.org et libre office"
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
'Fonction extraite du livre "programmation open office.org et libre office"
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
' renvoie le nom complet d'un fichier : Nom.Ext
Function getFullFileName(URLPath As String) As String
'Fonction extraite du livre "programmation open office.org et libre office"
Dim parts As Variant
parts = split(URLPath, "/")
getFullFileName = parts(UBound(parts())
End Function
function triAlpha(t1()) as variant
rem Fonction récupérée par Alain de la Chaume du forum ooO et modifiée par Hubert Lambert
dim t2() as variant
dim indexMaxi as long
dim cpt1 as long, cpt2 as long
dim varTmp as variant
indexMaxi = ubound(t1)
redim t2(indexMaxi)
t2 = t1
For cpt1 = 0 To indexMaxi - 1
For cpt2 = cpt1 + 1 To indexMaxi
If numberfromstring(t2(cpt1)) > numberfromstring(t2(cpt2)) Then
varTmp = t2(cpt1)
t2(cpt1) = t2(cpt2)
t2(cpt2) = varTmp
end if
Next cpt2
Next cpt1
triAlpha = t2()
end function
function numberfromstring(txt as string) as integer
Rem Fonction écrite par Hubert Lambert du forum ooO
dim s as object, search as object
dim start as long, end_ as long
s = createUnoService("com.sun.star.util.TextSearch")
dim opt as new com.sun.star.util.SearchOptions
opt.algorithmType = com.sun.star.util.SearchAlgorithms.REGEXP
opt.searchString = "[0-9]+"
s.setOptions(opt)
search = s.searchForward(txt, 0, len(txt))
start = search.startOffset(0)+1
end_ = search.endOffset(0) - search.startOffset(0)
numberfromstring = int(mid(txt, start, end_))
end function
La fonctionnalité tri a largement été revue grace à un membre du forum de libre office. Elle va régler les problèmes avec tes références actuelles. Mais je préfère te prevenir elle a ses limites: le tri ne fonctionnera pas sur une reference entremelant chiffres et lettres comme : "A110b52" mais j'y travaille!
Re: Libre Office Draw : assembler des images PNG en un fichier PDF
Posté : jeu. 26 janv. 2017 22:34
par Linuxing
Salut tiogran,
Cette fois, c'est dans la boîte, les 118 images sont dans le PDF et dans l'ordre
Mais... un petit truc que j'ai eu récemment dans un autre dossier avec une image qui n'avait rien à voir avec le PDF, mais qui subit le même problème après exécution de l'autre macro :
Comme tu peux le voir ci-dessus, une des miniatures représentant une des images du PDF n'est plus illustrée car on y voit l'icône JPEG à la place ; et j'en suis sûr, cela n'était pas le cas avant l'exécution de la macro
Lorsque je veux ouvrir cette image, j'ai ceci :
Dans le cas présent l'image a acquis la taille excessive de 7,5 Mo, ce qui est surprenant
Dans un autre dossier, comme évoqué plus haut, mais qui n'est pas concerné par le PDF, une image s'est réduite en un icône de «0» octet

:
Et la seule chose que j'ai faite, ce sont les macros... tu penses qu'elles sont en cause ?
