Via le VBA Excel, je liste tous les fichiers PDF d'un répertoire et ses
sous-répertoires. Je voudrais pouvoir optimiser la taille de ces PDF
(scannés et donc PDF image) en obtenant du PDF compressé... mais quel
freeware pourrais je utiliser en ligne de commande ? Auriez vous déjà
réalisé un script dans ce genre ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
Bonjour,
Voici un exemple : comment créer un exécutable avec le logiciel "Winrar" de l'ensemble des fichiers sources.
'------------------------------------------------- Sub ZipAvecWinrar() Dim LeZip As String, Executable As String Dim Arr As Variant, Elt As Variant, T As Double
'Location de l'exécutable du programme zip 'Location à vérifier... Executable = "C:Program Files (x86)wrar390WinRAR.exe" 'Chemin et Nom que va prendre le fichier zip LeZip = "D:Mes_Classeurs_zippés"
'Liste des chemins et fichiers à zipper 'Si ta liste est dans une plage de cellules, 'tu pourrais utiliser : Arr = Feuil1.Range("A1:A10") Arr = Array("c:Classeur1.xlsx", "c:Classeur10.xlsm")
'création du zip For Each Elt In Arr ShellExecute 0, "open", Executable, _ "a " & LeZip & " " & Elt, "", vbHide T = Timer + 0.25 'délai de 1/4 de secondes Do While Timer <= T DoEvents Loop Next
'création du fichier auto-extractable ShellExecute 0, "open", Executable, _ "s " & LeZip & ".rar ", "", vbHide T = Timer + 0.25 'délai de 1/4 de secondes Do While Timer <= T DoEvents Loop 'suppression du fichier Zip Kill LeZip & ".rar"
End Sub '-------------------------------------------------
MichD ------------------------------------------ "HD" a écrit dans le message de groupe de discussion : jcvinp$2i8f$
Bonjour,
Via le VBA Excel, je liste tous les fichiers PDF d'un répertoire et ses sous-répertoires. Je voudrais pouvoir optimiser la taille de ces PDF (scannés et donc PDF image) en obtenant du PDF compressé... mais quel freeware pourrais je utiliser en ligne de commande ? Auriez vous déjà réalisé un script dans ce genre ?
Merci d'avance pour votre aide
Cordialement,
HD
Bonjour,
Voici un exemple :
comment créer un exécutable avec le logiciel "Winrar" de l'ensemble des fichiers sources.
'-------------------------------------------------
Sub ZipAvecWinrar()
Dim LeZip As String, Executable As String
Dim Arr As Variant, Elt As Variant, T As Double
'Location de l'exécutable du programme zip
'Location à vérifier...
Executable = "C:Program Files (x86)wrar390WinRAR.exe"
'Chemin et Nom que va prendre le fichier zip
LeZip = "D:Mes_Classeurs_zippés"
'Liste des chemins et fichiers à zipper
'Si ta liste est dans une plage de cellules,
'tu pourrais utiliser : Arr = Feuil1.Range("A1:A10")
Arr = Array("c:Classeur1.xlsx", "c:Classeur10.xlsm")
'création du zip
For Each Elt In Arr
ShellExecute 0, "open", Executable, _
"a " & LeZip & " " & Elt, "", vbHide
T = Timer + 0.25 'délai de 1/4 de secondes
Do While Timer <= T
DoEvents
Loop
Next
'création du fichier auto-extractable
ShellExecute 0, "open", Executable, _
"s " & LeZip & ".rar ", "", vbHide
T = Timer + 0.25 'délai de 1/4 de secondes
Do While Timer <= T
DoEvents
Loop
'suppression du fichier Zip
Kill LeZip & ".rar"
End Sub
'-------------------------------------------------
MichD
------------------------------------------
"HD" a écrit dans le message de groupe de discussion : jcvinp$2i8f$1@saria.nerim.net...
Bonjour,
Via le VBA Excel, je liste tous les fichiers PDF d'un répertoire et ses
sous-répertoires. Je voudrais pouvoir optimiser la taille de ces PDF
(scannés et donc PDF image) en obtenant du PDF compressé... mais quel
freeware pourrais je utiliser en ligne de commande ? Auriez vous déjà
réalisé un script dans ce genre ?
Voici un exemple : comment créer un exécutable avec le logiciel "Winrar" de l'ensemble des fichiers sources.
'------------------------------------------------- Sub ZipAvecWinrar() Dim LeZip As String, Executable As String Dim Arr As Variant, Elt As Variant, T As Double
'Location de l'exécutable du programme zip 'Location à vérifier... Executable = "C:Program Files (x86)wrar390WinRAR.exe" 'Chemin et Nom que va prendre le fichier zip LeZip = "D:Mes_Classeurs_zippés"
'Liste des chemins et fichiers à zipper 'Si ta liste est dans une plage de cellules, 'tu pourrais utiliser : Arr = Feuil1.Range("A1:A10") Arr = Array("c:Classeur1.xlsx", "c:Classeur10.xlsm")
'création du zip For Each Elt In Arr ShellExecute 0, "open", Executable, _ "a " & LeZip & " " & Elt, "", vbHide T = Timer + 0.25 'délai de 1/4 de secondes Do While Timer <= T DoEvents Loop Next
'création du fichier auto-extractable ShellExecute 0, "open", Executable, _ "s " & LeZip & ".rar ", "", vbHide T = Timer + 0.25 'délai de 1/4 de secondes Do While Timer <= T DoEvents Loop 'suppression du fichier Zip Kill LeZip & ".rar"
End Sub '-------------------------------------------------
MichD ------------------------------------------ "HD" a écrit dans le message de groupe de discussion : jcvinp$2i8f$
Bonjour,
Via le VBA Excel, je liste tous les fichiers PDF d'un répertoire et ses sous-répertoires. Je voudrais pouvoir optimiser la taille de ces PDF (scannés et donc PDF image) en obtenant du PDF compressé... mais quel freeware pourrais je utiliser en ligne de commande ? Auriez vous déjà réalisé un script dans ce genre ?
Merci d'avance pour votre aide
Cordialement,
HD
MichD
Oups, j'ai omis de copier-coller la déclaration de l'API à faire dans le haut du module standard :
Declare Function ShellExecute Lib "shell32.dll" Alias _ "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation _ As String, ByVal lpFile As String, ByVal lpParameters _ As String, ByVal lpDirectory As String, ByVal nShowCmd _ As Long) As Long
MichD ------------------------------------------ "MichD" a écrit dans le message de groupe de discussion : jcvpam$2m8$
Bonjour,
Voici un exemple : comment créer un exécutable avec le logiciel "Winrar" de l'ensemble des fichiers sources.
'------------------------------------------------- Sub ZipAvecWinrar() Dim LeZip As String, Executable As String Dim Arr As Variant, Elt As Variant, T As Double
'Location de l'exécutable du programme zip 'Location à vérifier... Executable = "C:Program Files (x86)wrar390WinRAR.exe" 'Chemin et Nom que va prendre le fichier zip LeZip = "D:Mes_Classeurs_zippés"
'Liste des chemins et fichiers à zipper 'Si ta liste est dans une plage de cellules, 'tu pourrais utiliser : Arr = Feuil1.Range("A1:A10") Arr = Array("c:Classeur1.xlsx", "c:Classeur10.xlsm")
'création du zip For Each Elt In Arr ShellExecute 0, "open", Executable, _ "a " & LeZip & " " & Elt, "", vbHide T = Timer + 0.25 'délai de 1/4 de secondes Do While Timer <= T DoEvents Loop Next
'création du fichier auto-extractable ShellExecute 0, "open", Executable, _ "s " & LeZip & ".rar ", "", vbHide T = Timer + 0.25 'délai de 1/4 de secondes Do While Timer <= T DoEvents Loop 'suppression du fichier Zip Kill LeZip & ".rar"
End Sub '-------------------------------------------------
MichD ------------------------------------------ "HD" a écrit dans le message de groupe de discussion : jcvinp$2i8f$
Bonjour,
Via le VBA Excel, je liste tous les fichiers PDF d'un répertoire et ses sous-répertoires. Je voudrais pouvoir optimiser la taille de ces PDF (scannés et donc PDF image) en obtenant du PDF compressé... mais quel freeware pourrais je utiliser en ligne de commande ? Auriez vous déjà réalisé un script dans ce genre ?
Merci d'avance pour votre aide
Cordialement,
HD
Oups, j'ai omis de copier-coller la déclaration de l'API à faire dans le haut du module standard :
Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation _
As String, ByVal lpFile As String, ByVal lpParameters _
As String, ByVal lpDirectory As String, ByVal nShowCmd _
As Long) As Long
MichD
------------------------------------------
"MichD" a écrit dans le message de groupe de discussion : jcvpam$2m8$1@speranza.aioe.org...
Bonjour,
Voici un exemple :
comment créer un exécutable avec le logiciel "Winrar" de l'ensemble des fichiers sources.
'-------------------------------------------------
Sub ZipAvecWinrar()
Dim LeZip As String, Executable As String
Dim Arr As Variant, Elt As Variant, T As Double
'Location de l'exécutable du programme zip
'Location à vérifier...
Executable = "C:Program Files (x86)wrar390WinRAR.exe"
'Chemin et Nom que va prendre le fichier zip
LeZip = "D:Mes_Classeurs_zippés"
'Liste des chemins et fichiers à zipper
'Si ta liste est dans une plage de cellules,
'tu pourrais utiliser : Arr = Feuil1.Range("A1:A10")
Arr = Array("c:Classeur1.xlsx", "c:Classeur10.xlsm")
'création du zip
For Each Elt In Arr
ShellExecute 0, "open", Executable, _
"a " & LeZip & " " & Elt, "", vbHide
T = Timer + 0.25 'délai de 1/4 de secondes
Do While Timer <= T
DoEvents
Loop
Next
'création du fichier auto-extractable
ShellExecute 0, "open", Executable, _
"s " & LeZip & ".rar ", "", vbHide
T = Timer + 0.25 'délai de 1/4 de secondes
Do While Timer <= T
DoEvents
Loop
'suppression du fichier Zip
Kill LeZip & ".rar"
End Sub
'-------------------------------------------------
MichD
------------------------------------------
"HD" a écrit dans le message de groupe de discussion : jcvinp$2i8f$1@saria.nerim.net...
Bonjour,
Via le VBA Excel, je liste tous les fichiers PDF d'un répertoire et ses
sous-répertoires. Je voudrais pouvoir optimiser la taille de ces PDF
(scannés et donc PDF image) en obtenant du PDF compressé... mais quel
freeware pourrais je utiliser en ligne de commande ? Auriez vous déjà
réalisé un script dans ce genre ?
Oups, j'ai omis de copier-coller la déclaration de l'API à faire dans le haut du module standard :
Declare Function ShellExecute Lib "shell32.dll" Alias _ "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation _ As String, ByVal lpFile As String, ByVal lpParameters _ As String, ByVal lpDirectory As String, ByVal nShowCmd _ As Long) As Long
MichD ------------------------------------------ "MichD" a écrit dans le message de groupe de discussion : jcvpam$2m8$
Bonjour,
Voici un exemple : comment créer un exécutable avec le logiciel "Winrar" de l'ensemble des fichiers sources.
'------------------------------------------------- Sub ZipAvecWinrar() Dim LeZip As String, Executable As String Dim Arr As Variant, Elt As Variant, T As Double
'Location de l'exécutable du programme zip 'Location à vérifier... Executable = "C:Program Files (x86)wrar390WinRAR.exe" 'Chemin et Nom que va prendre le fichier zip LeZip = "D:Mes_Classeurs_zippés"
'Liste des chemins et fichiers à zipper 'Si ta liste est dans une plage de cellules, 'tu pourrais utiliser : Arr = Feuil1.Range("A1:A10") Arr = Array("c:Classeur1.xlsx", "c:Classeur10.xlsm")
'création du zip For Each Elt In Arr ShellExecute 0, "open", Executable, _ "a " & LeZip & " " & Elt, "", vbHide T = Timer + 0.25 'délai de 1/4 de secondes Do While Timer <= T DoEvents Loop Next
'création du fichier auto-extractable ShellExecute 0, "open", Executable, _ "s " & LeZip & ".rar ", "", vbHide T = Timer + 0.25 'délai de 1/4 de secondes Do While Timer <= T DoEvents Loop 'suppression du fichier Zip Kill LeZip & ".rar"
End Sub '-------------------------------------------------
MichD ------------------------------------------ "HD" a écrit dans le message de groupe de discussion : jcvinp$2i8f$
Bonjour,
Via le VBA Excel, je liste tous les fichiers PDF d'un répertoire et ses sous-répertoires. Je voudrais pouvoir optimiser la taille de ces PDF (scannés et donc PDF image) en obtenant du PDF compressé... mais quel freeware pourrais je utiliser en ligne de commande ? Auriez vous déjà réalisé un script dans ce genre ?
Merci d'avance pour votre aide
Cordialement,
HD
HD
Merci MichD pour ces explications (je vais me mettre de côté ces scripts qui me seront toujours utiles). Mais en fait la compression dont je parlais était une compression des données PDF car pour un même PDF l'on peut obtenir différente taille du document (suivant le nombre de couleurs, la résolution, le type de PDF image ou texte, etc...).
La problèmatique est ici reformulé: "En compressant un document PDF avec un algorithme de compression comme celui de zip ou celui de StuffIt, on parvient à obtenir un gain sur la partie "texte" du document, mais cette partie-là n'occupe de toute façon qu'une très petite proportion de la taille du fichier. Mais qu'en est-il des images ? Les images sont stockées dans le document au format JPEG, en bitmap zippé ou éventuellement en bitmap brut. Dans ce dernier cas (qui est rare), on peut effectivement gagner de la place en "zippant" ou en "stuffant" le document. Mais dans la plupart des cas, l'image est incluse dans le document dans un format déjà compressé (JPEG ou zip). Or, en compactant le document, il est impossible de compresser à nouveau ce qui l'est déjà. Si vous n'êtes pas convaincus, prenez une image JPEG, compressez là (zip ou sit) et comparez la taille du fichier compressé à celle de l'image. Le gain est quasi inexistant. [...] Un écran d'ordinateur possède une résolution typique d'une centaine de DPI (pixels par pouces). Ce qui signifie que sur un pouce de largeur (ou de hauteur) il y a une centaine de pixels. Traditionnellement, la résolution utilisée pour des images destinées à l'écran est de 72 DPI. Or, vous comprendrez aisément que si votre image est à 300 DPI, c'est complètement inutile ! Pour un pouce, vous aurez 228 pixels en trop, et chacun de ces pixels prendra de la place sur votre disque. De même, pour une impression de bonne qualité, votre image devrait être entre 150 et 200 DPI. Là encore, votre image à 300 DPI est beaucoup trop grande."
En utilisant le programme GhostScript (gswin32 en version windows) et la commande suivante: gswin32 -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -sOUTPUTFILE=NouveauPDF.pdf -f MonPDF.pdf
Avec GS6.01 un fichier PDF de 20888ko se retrouve à. 31952ko avec l'option /screen. Mais avec une version GS8.70 un fichier PDF de 20888ko se retrouve à : - 1386ko avec l'option /screen (réduit de 15 fois) - 4714ko avec l'option /ebook (réduit de 4,4 fois) - 22564ko avec l'option /printer J'ai put voir que l'utilisation d'ancienne version de GhostScript ne m'apporte aucun gain de taille... au contraire... Mais avec la dernière version 8.70 je peux gagner pas mal de place. L'option screen me donne par contre un document flou... je pense donc plutôt me faire un script VBA qui utiliserait l'option ebook.
@+ HD
Merci MichD pour ces explications (je vais me mettre de côté ces scripts qui
me seront toujours utiles). Mais en fait la compression dont je parlais
était une compression des données PDF car pour un même PDF l'on peut obtenir
différente taille du document (suivant le nombre de couleurs, la résolution,
le type de PDF image ou texte, etc...).
Voici le résultat de mes tests...
Via les infos que j'ai trouvé ici:
http://www.cuk.ch/articles/2503
et ici:
http://www.astucesinternet.com/forum/topic1525.html
La problèmatique est ici reformulé:
"En compressant un document PDF avec un algorithme de compression comme
celui de zip ou celui de StuffIt, on parvient à obtenir un gain sur la
partie "texte" du document, mais cette partie-là n'occupe de toute façon
qu'une très petite proportion de la taille du fichier. Mais qu'en est-il des
images ? Les images sont stockées dans le document au format JPEG, en bitmap
zippé ou éventuellement en bitmap brut. Dans ce dernier cas (qui est rare),
on peut effectivement gagner de la place en "zippant" ou en "stuffant" le
document. Mais dans la plupart des cas, l'image est incluse dans le document
dans un format déjà compressé (JPEG ou zip). Or, en compactant le document,
il est impossible de compresser à nouveau ce qui l'est déjà. Si vous n'êtes
pas convaincus, prenez une image JPEG, compressez là (zip ou sit) et
comparez la taille du fichier compressé à celle de l'image. Le gain est
quasi inexistant. [...]
Un écran d'ordinateur possède une résolution typique d'une centaine de DPI
(pixels par pouces). Ce qui signifie que sur un pouce de largeur (ou de
hauteur) il y a une centaine de pixels. Traditionnellement, la résolution
utilisée pour des images destinées à l'écran est de 72 DPI. Or, vous
comprendrez aisément que si votre image est à 300 DPI, c'est complètement
inutile ! Pour un pouce, vous aurez 228 pixels en trop, et chacun de ces
pixels prendra de la place sur votre disque. De même, pour une impression de
bonne qualité, votre image devrait être entre 150 et 200 DPI. Là encore,
votre image à 300 DPI est beaucoup trop grande."
En utilisant le programme GhostScript (gswin32 en version windows) et la
commande suivante:
gswin32 -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/printer
-sOUTPUTFILE=NouveauPDF.pdf -f MonPDF.pdf
Avec GS6.01 un fichier PDF de 20888ko se retrouve à. 31952ko avec l'option
/screen.
Mais avec une version GS8.70 un fichier PDF de 20888ko se retrouve à :
- 1386ko avec l'option /screen (réduit de 15 fois)
- 4714ko avec l'option /ebook (réduit de 4,4 fois)
- 22564ko avec l'option /printer
J'ai put voir que l'utilisation d'ancienne version de GhostScript ne
m'apporte aucun gain de taille... au contraire... Mais avec la dernière
version 8.70 je peux gagner pas mal de place. L'option screen me donne par
contre un document flou... je pense donc plutôt me faire un script VBA qui
utiliserait l'option ebook.
Merci MichD pour ces explications (je vais me mettre de côté ces scripts qui me seront toujours utiles). Mais en fait la compression dont je parlais était une compression des données PDF car pour un même PDF l'on peut obtenir différente taille du document (suivant le nombre de couleurs, la résolution, le type de PDF image ou texte, etc...).
La problèmatique est ici reformulé: "En compressant un document PDF avec un algorithme de compression comme celui de zip ou celui de StuffIt, on parvient à obtenir un gain sur la partie "texte" du document, mais cette partie-là n'occupe de toute façon qu'une très petite proportion de la taille du fichier. Mais qu'en est-il des images ? Les images sont stockées dans le document au format JPEG, en bitmap zippé ou éventuellement en bitmap brut. Dans ce dernier cas (qui est rare), on peut effectivement gagner de la place en "zippant" ou en "stuffant" le document. Mais dans la plupart des cas, l'image est incluse dans le document dans un format déjà compressé (JPEG ou zip). Or, en compactant le document, il est impossible de compresser à nouveau ce qui l'est déjà. Si vous n'êtes pas convaincus, prenez une image JPEG, compressez là (zip ou sit) et comparez la taille du fichier compressé à celle de l'image. Le gain est quasi inexistant. [...] Un écran d'ordinateur possède une résolution typique d'une centaine de DPI (pixels par pouces). Ce qui signifie que sur un pouce de largeur (ou de hauteur) il y a une centaine de pixels. Traditionnellement, la résolution utilisée pour des images destinées à l'écran est de 72 DPI. Or, vous comprendrez aisément que si votre image est à 300 DPI, c'est complètement inutile ! Pour un pouce, vous aurez 228 pixels en trop, et chacun de ces pixels prendra de la place sur votre disque. De même, pour une impression de bonne qualité, votre image devrait être entre 150 et 200 DPI. Là encore, votre image à 300 DPI est beaucoup trop grande."
En utilisant le programme GhostScript (gswin32 en version windows) et la commande suivante: gswin32 -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -sOUTPUTFILE=NouveauPDF.pdf -f MonPDF.pdf
Avec GS6.01 un fichier PDF de 20888ko se retrouve à. 31952ko avec l'option /screen. Mais avec une version GS8.70 un fichier PDF de 20888ko se retrouve à : - 1386ko avec l'option /screen (réduit de 15 fois) - 4714ko avec l'option /ebook (réduit de 4,4 fois) - 22564ko avec l'option /printer J'ai put voir que l'utilisation d'ancienne version de GhostScript ne m'apporte aucun gain de taille... au contraire... Mais avec la dernière version 8.70 je peux gagner pas mal de place. L'option screen me donne par contre un document flou... je pense donc plutôt me faire un script VBA qui utiliserait l'option ebook.