Script : plusieurs documents en un seul PDF + arborescence
Fermé
rb12000
Messages postés
22
Date d'inscription
lundi 9 novembre 2015
Statut
Membre
Dernière intervention
7 septembre 2017
-
15 déc. 2016 à 16:26
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 - 27 janv. 2017 à 20:18
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 - 27 janv. 2017 à 20:18
A voir également:
- Script les visiteurs pdf
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Script vidéo youtube - Guide
- Save as pdf - Télécharger - Bureautique
- Comment faire un pdf - Guide
- Télécharger dictionnaire larousse pdf gratuit - Télécharger - Dictionnaires & Langues
4 réponses
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 922
7 janv. 2017 à 00:01
7 janv. 2017 à 00:01
J'ai trouvé la solution, et ça m'a pris pas mal de temps ;)
Je t'ai fait un script Batch pour convertir tes documents, voilà le code :
Je t'ai fait un script Batch pour convertir tes documents, voilà le code :
@echo off
:: on teste si nconvert.exe est présent
if not exist %windir%\system32\nconvert.exe goto :eof
:: répertoire source contenant les documents numérisés
set rep_source=D:\RECUP_GED\3000057\Administratif
:: on teste si le répertoire source existe bien
cd %rep_source%
if not %errorlevel%==0 goto :eof
if not exist "%rep_source%\Documents_PDF" mkdir "%rep_source%\Documents_PDF"
:: on définit un répertoire temporaire
set dir_temp=D:\TMP_jpg_to_pdf
:: on regroupe toutes les pages de chaque document
for /f "tokens=1,2,3 delims=_." %%a in ('dir /b /a-d-s-l "*.jpg"') do (
if not exist %dir_temp%\%%a mkdir %dir_temp%\%%a
copy %%a_%%b.%%c %dir_temp%\%%a\ > nul
)
echo.
:: on traite les documents un par un
cd %dir_temp%
for /f "tokens=*" %%a In ('dir /b /ad "*.*"') do (
set fichier=%%a
cd %dir_temp%\%%a
set /a compteur=0
Setlocal enableextensions enabledelayedexpansion
For /r %%i In (*.jpg) Do (set /a compteur+=1)
if !compteur! GTR 1 (nconvert -in jpeg -out pdf -multi -o res_!fichier!.pdf *.jpg) else (nconvert -in jpeg -out pdf -o res_!fichier!.pdf *.jpg)
echo.
move /y "res_!fichier!.pdf" "!rep_source!\Documents_PDF" > nul
)
Endlocal
cd %USERPROFILE%
rmdir /s /q "%dir_temp%"
explorer /select,"%rep_source%\Documents_PDF"
:eof
rb12000
Messages postés
22
Date d'inscription
lundi 9 novembre 2015
Statut
Membre
Dernière intervention
7 septembre 2017
23 janv. 2017 à 15:58
23 janv. 2017 à 15:58

Voici une partie de la liste, elle est au format XLSM.
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 922
24 janv. 2017 à 22:34
24 janv. 2017 à 22:34
Voilà la bête :
J'espère que ça te plaira ;)
J'ai compressé les PDF au maximum, ils sont 3 à 4 fois plus petits que les images d'origine.
@echo off
if not exist %windir%\system32\nconvert.exe goto :eof
cd D:\Recup_GED
if not %errorlevel%==0 goto :eof
for /f "tokens=*" %%K In ('dir /b /ad "*.*"') do (
for /f "tokens=*" %%E In ('dir /b /ad "%%~dpnK\*.*"') do (
if not exist "%%~dpnK\%%E\Documents_PDF" mkdir "%%~dpnK\%%E\Documents_PDF"
if not exist "%%~dpnK\%%E\TMP_jpg_to_pdf" mkdir "%%~dpnK\%%E\TMP_jpg_to_pdf"
for /f "tokens=1,2,3 delims=_." %%A in ('dir /b /a-d-s-l "%%~dpnK\%%E\*.jpg"') do (
if not exist "%%~dpnK\%%E\TMP_jpg_to_pdf\%%A" mkdir "%%~dpnK\%%E\TMP_jpg_to_pdf\%%A"
copy %%~dpnK\%%E\%%A_%%B.%%C %%~dpnK\%%E\TMP_jpg_to_pdf\%%A > nul
)
for /f "tokens=*" %%R In ('dir /b /ad "%%~dpnK\%%E\TMP_jpg_to_pdf\*.*"') do (
set fichier=%%R
set /a compteur=0
Setlocal enableextensions enabledelayedexpansion
For /r %%I In (*.jpg) Do (set /a compteur+=1)
if !compteur! GTR 1 (nconvert -in jpeg -out pdf -multi -c 5 -o res_!fichier!.pdf %%~dpnK\%%E\TMP_jpg_to_pdf\%%R\*.jpg) else (nconvert -in jpeg -out pdf -c 5 -o res_!fichier!.pdf %%~dpnK\%%E\TMP_jpg_to_pdf\%%R\*.jpg)
echo.
move /y "res_!fichier!.pdf" "%%~dpnK\%%E\Documents_PDF" > nul
Endlocal
)
rmdir /s /q "%%~dpnK\%%E\TMP_jpg_to_pdf"
)
)
explorer /select,"%CD%"
:eof
J'espère que ça te plaira ;)
J'ai compressé les PDF au maximum, ils sont 3 à 4 fois plus petits que les images d'origine.
rb12000
Messages postés
22
Date d'inscription
lundi 9 novembre 2015
Statut
Membre
Dernière intervention
7 septembre 2017
25 janv. 2017 à 08:47
25 janv. 2017 à 08:47
Merci pour ton énorme boulot ;-) Je teste ça dès que possible !!!
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 922
>
rb12000
Messages postés
22
Date d'inscription
lundi 9 novembre 2015
Statut
Membre
Dernière intervention
7 septembre 2017
25 janv. 2017 à 08:51
25 janv. 2017 à 08:51
De rien, j'attend les commentaires ;)
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 922
>
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
Modifié par barnabe0057 le 25/01/2017 à 09:07
Modifié par barnabe0057 le 25/01/2017 à 09:07
Concernant le dossier de destination des PDF, est-ce que ça te convient ou pas ?
Je peux les regrouper si besoin.
Je peux les regrouper si besoin.
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 922
Modifié par barnabe0057 le 27/01/2017 à 21:05
Modifié par barnabe0057 le 27/01/2017 à 21:05
Voilà une version légèrement modifiée dans laquelle tous les PDF sont regroupés dans un unique dossier, je pense que c'est mieux comme ça :
@echo off
if not exist %windir%\system32\nconvert.exe goto :eof
set source=D:\RECUP_GED
set destination=Documents_PDF
if %source:~0,2% EQU %CD:~0,2% (cd %source% || goto :eof) else (cd /d %source% || goto :eof)
if not exist "%destination%" mkdir "%destination%"
for /f "tokens=*" %%K In ('dir /b /ad "*.*"') do (
for /f "tokens=*" %%E In ('dir /b /ad "%%~dpnK\*.*"') do (
if not exist "%%~dpnK\%%E\TMP_jpg_to_pdf" mkdir "%%~dpnK\%%E\TMP_jpg_to_pdf"
for /f "tokens=1,2,3 delims=_." %%A in ('dir /b /a-d-s-l "%%~dpnK\%%E\*.jpg"') do (
if not exist "%%~dpnK\%%E\TMP_jpg_to_pdf\%%A" mkdir "%%~dpnK\%%E\TMP_jpg_to_pdf\%%A"
copy "%%~dpnK\%%E\%%A_%%B.%%C" "%%~dpnK\%%E\TMP_jpg_to_pdf\%%A" > nul
)
for /f "tokens=*" %%R In ('dir /b /ad "%%~dpnK\%%E\TMP_jpg_to_pdf\*.*"') do (
nconvert -in jpeg -out pdf -multi -c 5 -o recup_%%R.pdf "%%~dpnK\%%E\TMP_jpg_to_pdf\%%R\*.jpg"
echo.
move /y "recup_%%R.pdf" "%destination%" > nul
)
rmdir /s /q "%%~dpnK\%%E\TMP_jpg_to_pdf"
)
)
explorer /select,"%destination%"
:eof
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 922
27 janv. 2017 à 20:18
27 janv. 2017 à 20:18
J'ai simplifié et corrigé le code pour gérer les espaces dans les noms des dossiers, ça peut servir on sait jamais.
Modifié par barnabe0057 le 7/01/2017 à 00:21
https://www.xnview.com/fr/nconvert/
Il faut récupérer le fichier nconvert.exe et le copier dans C:\Windows\System32
ps1 : je précise que j'ai testé et re-testé le script, il fonctionne à merveille.
ps2 : le script ne touche pas à tes fichiers jpg, pas d'inquiétude à avoir.
Modifié par barnabe0057 le 7/01/2017 à 00:17
Par exemple, est-ce que tous les fichiers (008816) que tu montres dans ton message sont un seul et même document ?
Si la réponse est oui, tu peux utiliser mon script sans soucis.
9 janv. 2017 à 08:38
9 janv. 2017 à 09:36
Modifié par rb12000 le 23/01/2017 à 15:27
Saurais-tu faire le même principe mais avec une boucle pour mon arborescence ? Ou appeler une liste dans le batch (car j'ai cette liste) ?
Deuxième point, je remarque que les fichiers PDF généré sont extrêmement lourd (une image de 200Ko se converti en PDF de 8Mo)... Aurais-tu une idée ?
Merci beaucoup dans tous les cas ;-) !!