Para un proyecto llamado "Tributo Revista LAZER" que consiste en escanear todas las revistas de una publicación, que me gustaba mucho sobre anime y otras yerbas, en excelente calidad y luego digitalizarla en forma de blog, tuve que crear este script.
La revista que tenia que digitalizar era de un formato chico, abierta entraba sin completa en el scanner. Como yo queria calidad en todo sentido, abrir la revista, apoyarla y escanearla no era lo mejor, ya que del medio se levanta un poco por mas que la aplastes y el escaneo no sale bien.
Entonces tuve que desarmar las revistas para escanear de a una pagina, pero esto trajo otro inconveniente, al hacerlo asi, las imagenes que quedaban eran de paginas que no seguian un orden, debido que al juntarlas logran tener la consecución de las mismas.
Al final del proceso me quedaban paginas dobles completamente desordenadas.
Entonces, este script en PowerShell usa ImageMagick para hacer justamente eso: dividir las páginas en mitades y reordenarlas según el orden que necesita una impresión de revista. Te cuento paso a paso cómo funciona y qué hace cada parte:
Paso 1: Chequeo de ImageMagick
Primero, verifica que tenés ImageMagick instalado en tu máquina y que esté en la ruta especificada:
if (-not (test-path "$env:ProgramFiles\ImageMagick-7.1.0-Q16-HDRI\convert.exe")) {throw "$env:ProgramFiles\ImageMagick-7.1.0-Q16-HDRI\convert.exe needed"}
Si no está, tira un error avisándote que convert.exe no se encuentra y que lo instales en la ruta correcta.
Paso 2: Definición de los Patrones de Páginas
Acá crea tres patrones de páginas: uno para libritos de 84 páginas, otro para 68, y uno más para 100. Según cuántas páginas tengas en total, tenés que usar uno de estos patrones.
$84 = '84','01','02','83','82','03', ... , '43'
$68 = '68','1','2','67','66','3', ... , '35'
$100 = '100','1','2','99','98','3', ... , '51'
Paso 3: Asignación de Páginas y Búsqueda de Archivos
Definí cuántas páginas tiene tu documento (ej., $pages = $100
si tiene 100 páginas). Luego, buscá los archivos .tif
en el directorio, que serán las imágenes de las páginas.
$pages = $100
$files = Get-ChildItem *.tif
Después, crea una carpeta llamada split
, donde va a guardar los archivos divididos.
Paso 4: Dividir las Páginas
En este paso, se usa ImageMagick para cortar cada página en dos mitades:
foreach ($file in $files){
$newfile = ".\split\" + $file.BaseName + "-%02d.tif"
im -crop 50%x100% +repage +adjoin $file.FullName $newfile
}
Cada archivo .tif
se corta a la mitad y se guarda en la carpeta split
. Esto es clave para que después las páginas se puedan reordenar como se necesita.
Paso 5: Ordenar las Páginas
Dentro de la carpeta split
, reordena las páginas basándose en el patrón que definiste al principio. Básicamente, renombra cada archivo .tif
de acuerdo al número de página correspondiente en el orden correcto.
Set-Location split
$newfiles = Get-ChildItem
foreach ($renamed in $newfiles){
$index = $newfiles.IndexOf($renamed)
$page = $pages[$index.ToString()]
Rename-Item -Path $renamed -NewName $page".tif"
}
Paso 6: Formateo Final de Nombres
Finalmente, usa otro foreach
para dar formato a los nombres de las páginas, agregando ceros adelante (si hace falta) para que queden en orden numérico:
$j=1;
foreach ($i in Get-ChildItem "./?.tif" -Name) {
$new_name = "0" + $j + ".tif";
Rename-Item -Path $i -NewName $new_name;
$j=$j+1;
}
De esta forma, se asegura que las páginas estén renombradas de forma ordenada, para que las puedas usar directamente en una impresora que soporte el modo "booklet" o "imposición de páginas".
En Resumen
Este script hace magia en 3 pasos: corta, reordena y renombra. ¡Ideal si querés armar una revista sin andar renombrando archivo por archivo!