Script : varios documentos en un solo PDF + estructura de directorios
rb12000
Mensajes publicados
22
Fecha de registro
Estado
Miembro
Última intervención
-
barnabe0057 Mensajes publicados 14329 Fecha de registro Estado Colaborador Última intervención -
barnabe0057 Mensajes publicados 14329 Fecha de registro Estado Colaborador Última intervención -
Olá,
acabo de hacer la recuperación de una mini "GED" (Gestión Electrónica de Documentos), pero las digitalizaciones son página por página (solo frente) en X (X siendo el número de páginas) archivo .jpg. Me gustaría, mediante un script CMD (batch) o una macro de Excel, generar automáticamente estos archivos PDF. Ya he generado la estructura de directorios gracias a dos macros de Excel.
¿Podéis ayudarme por favor?
Gracias.
acabo de hacer la recuperación de una mini "GED" (Gestión Electrónica de Documentos), pero las digitalizaciones son página por página (solo frente) en X (X siendo el número de páginas) archivo .jpg. Me gustaría, mediante un script CMD (batch) o una macro de Excel, generar automáticamente estos archivos PDF. Ya he generado la estructura de directorios gracias a dos macros de Excel.
¿Podéis ayudarme por favor?
Gracias.
Enlaces relacionados:
- convertir varios archivos jpg a un pdf
- convertir un documento PDF a una resolución de 300 dpi
- Convertir a PDF un documento que contiene un archivo adjunto.
- digitalización de varios documentos en un solo archivo
- El documento de Word exportado a PDF se vuelve borroso.
- imprimir un .pdf varias veces en una misma hoja
4 respuestas
-
He encontrado la solución, y me llevó bastante tiempo ;)
Te hice un script Batch para convertir tus documentos, aquí está el código :@echo off
:: comprobamos si nconvert.exe está presente
if not exist %windir%\system32\nconvert.exe goto :eof
:: directorio fuente que contiene los documentos digitalizados
set rep_source=D:\RECUP_GED\3000057\Administratif
:: comprobamos si el directorio fuente existe
cd %rep_source%
if not %errorlevel%==0 goto :eof
if not exist "%rep_source%\Documents_PDF" mkdir "%rep_source%\Documents_PDF"
:: definimos un directorio temporal
set dir_temp=D:\TMP_jpg_to_pdf
:: agrupamos todas las páginas de cada documento
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.
:: procesamos los documentos uno por uno
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-
Primero hay que descargar la herramienta Nconvert disponible aquí:
https://www.xnview.com/fr/nconvert/
Hay que obtener el archivo nconvert.exe y copiarlo en C:\Windows\System32
ps1 : Preciso que he probado y vuelto a probar el script, funciona de maravilla.
ps2 : el script no toca tus archivos jpg, no hay de qué preocuparse. -
-
-
-
Hola, disculpa por el retraso. ¡Funciona muy bien en prueba! Solo que mi estructura de carpetas es así: D:\RECUP_GED\%NumDoss% con %NumDoss% que contiene 17 000 carpetas, y en cada carpeta de 1 a 3 subcarpetas. Son estas subcarpetas donde se encuentran las imágenes a convertir. ¿Podrías hacer el mismo principio pero con un bucle para mi estructura de carpetas? ¿O llamar a una lista en el batch (porque tengo esa lista)? Segundo punto, he notado que los archivos PDF generados son extremadamente pesados (una imagen de 200 Ko se convierte en un PDF de 8 Mo)... ¿Tendrías alguna idea? Muchas gracias de todos modos ;-))
-
-
Aquí tienes una parte de la lista, está en formato XLSM.
-
Aquí está la bestia:
@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
Espero que te guste ;)
He comprimido los PDFs al máximo, son 3 a 4 veces más pequeños que las imágenes originales. -
Una versión ligeramente modificada en la que todos los PDFs se agrupan en una única carpeta, creo que así es mejor:
@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