Last active
November 13, 2025 14:44
-
-
Save angelbladex/913aaa00461683f383ad81b62f5dfde3 to your computer and use it in GitHub Desktop.
Un script para generar un libro en pdf desde archivos swf
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Primero extraer imágenes, luego crear PDF | |
| #requiere uso del paquete img2pdf y del paquete swftools | |
| mkdir extracted_images | |
| for swf in pages/swf/*.swf; do | |
| filename=$(basename "$swf" .swf) | |
| swfrender "$swf" -o "extracted_images/${filename}.png" 2>/dev/null | |
| done | |
| # Combinar imágenes en PDF ORDENADAS numéricamente | |
| img2pdf $(ls -1v extracted_images/*.png) -o libro_completo.pdf | |
| #magick $(ls -1v extracted_images/*.png) libro_completo.pdf | |
| #convert $(ls extracted_images/page_*.png) libro_completo.pdf |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Configuración | |
| DPI=200 | |
| WIDTH=$(( 85 * DPI / 10 )) # 8.5" * DPI → 1700 px si DPI=200 | |
| HEIGHT=$(( 11 * DPI )) # 11" * DPI → 2200 px | |
| mkdir -p extracted_images_jpg | |
| mkdir -p extracted_images_png | |
| #EN mi caso , hay una página blanca en pages/swf/page1.swf | |
| if [ -f "pages/swf/page1.swf" ]; then | |
| rm "pages/swf/page1.swf" | |
| for swf in $(ls pages/swf/page*.swf | sort -V); do | |
| base=$(basename "$swf" .swf) | |
| echo "Procesando $swf ..." | |
| # Renderizar a PNG temporal (solo una imagen en RAM a la vez) | |
| swfrender "$swf" -X "$WIDTH" -Y "$HEIGHT" -o "extracted_images_png/${base}.png" 2>/dev/null | |
| done | |
| echo " -- * --" | |
| for png in $(ls extracted_images_png/*.png | sort -V); do | |
| base=$(basename "$png" .png) | |
| echo "Procesando $png ..." | |
| # Convertir a JPEG de alta calidad (liviano) | |
| magick "extracted_images_png/${base}.png" -quality 92 -background white -alpha remove "extracted_images_jpg/${base}.jpg" | |
| done | |
| # Generar PDF con img2pdf (mínimo uso de RAM) | |
| echo "Creando PDF optimizado..." | |
| img2pdf $(ls -1v extracted_images_jpg/*.jpg) -o libro_completo.pdf | |
| echo " Listo: libro_ligero.pdf" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Paleta sin azul, alta legibilidad | |
| RESET='\033[0m' | |
| BOLD='\033[1m' | |
| # Colores nuevos | |
| BLACK=$'\e[30m' # opcional para fondos claros | |
| WHITE=$'\e[97m' # brillante para títulos | |
| GREEN=$'\e[92m' # verde claro | |
| LIME=$'\e[38;5;154m' # lima neón | |
| GOLD=$'\e[38;5;214m' # dorado/ámbar | |
| ORANGE=$'\e[38;5;208m' | |
| MAGENTA=$'\e[95m' | |
| PINK=$'\e[38;5;205m' | |
| GRAY=$'\e[38;5;244m' | |
| # Configuración | |
| DPI=150 | |
| WIDTH=$(( 85 * DPI / 10 )) # 1275 px | |
| HEIGHT=$(( 11 * DPI )) # 1650 px | |
| OUTPUT_FILE="YourFilename_v2.pdf" | |
| mkdir -p extracted_images_jpg extracted_images_png | |
| # Eliminar posible página vacía | |
| [ -f "pages/swf/page1.swf" ] && rm "pages/swf/page1.swf" | |
| echo -e "${BOLD}${WHITE}🚀 Iniciando procesamiento de libro digital${RESET}" | |
| echo -e "${GRAY}DPI:${RESET} ${GREEN}$DPI${RESET} ${GRAY}Resolución:${RESET} ${GREEN}${WIDTH}x${HEIGHT}${RESET}" | |
| echo -e "${GRAY}Salida:${RESET} ${GOLD}$OUTPUT_FILE${RESET}\n" | |
| echo -e "${LIME}📖 Extrayendo páginas SWF…${RESET}" | |
| for swf in $(ls pages/swf/page*.swf | sort -V); do | |
| base=$(basename "$swf" .swf) | |
| echo -e "${ORANGE}Procesando:${RESET} ${PINK}$base${RESET}" | |
| swfrender "$swf" -X "$WIDTH" -Y "$HEIGHT" -o "extracted_images_png/${base}.png" 2>/dev/null | |
| done | |
| echo -e "${GOLD}🔄 Convirtiendo a JPEG…${RESET}" | |
| for png in $(ls extracted_images_png/*.png | sort -V); do | |
| base=$(basename "$png" .png) | |
| echo -e "${ORANGE}Optimizando:${RESET} ${PINK}$base${RESET}" | |
| magick "extracted_images_png/${base}.png" -quality 85 -background white -alpha remove "extracted_images_jpg/${base}.jpg" | |
| done | |
| echo -e "${MAGENTA}📄 Creando PDF optimizado…${RESET}" | |
| img2pdf $(ls -1v extracted_images_jpg/*.jpg) -o libro_ligero.pdf | |
| echo -e "${GOLD}✂️ Eliminando última página…${RESET}" | |
| qpdf libro_ligero.pdf --pages . 1-$(($(qpdf --show-npages libro_ligero.pdf)-1)) -- "$OUTPUT_FILE" | |
| final_pages=$(qpdf --show-npages "$OUTPUT_FILE") | |
| final_size=$(du -h "$OUTPUT_FILE" | cut -f1) | |
| rm libro_ligero.pdf | |
| echo -e "\n${BOLD}${WHITE}✅ ¡Proceso completado!${RESET}" | |
| echo -e "${WHITE}📊 Resumen:${RESET}" | |
| echo -e " ${GRAY}Archivo:${RESET} ${GOLD}$OUTPUT_FILE${RESET}" | |
| echo -e " ${GRAY}Páginas:${RESET} ${GREEN}$final_pages${RESET}" | |
| echo -e " ${GRAY}Tamaño:${RESET} ${GREEN}$final_size${RESET}\n" | |
| echo -e "${LIME}🎉 ¡Libro digital listo para usar!${RESET}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment