0 votos

AppleScript que reduce el tamaño de varios archivos PDF falla

MacOS Sierra Versión 10.12.6. Script-editor Versión 2.9 (191).

Estoy tratando de reducir el tamaño de varios archivos PDF, sin embargo el script de abajo termina con este error: se esperaba fin de línea, pero se encontró un nombre de clase. El script también resalta la palabra documento de la línea 19.

-- Comprimir PDFs utilizando los filtros Quartz de Vista Previa
establecer filtroQuartz a "Reducir tamaño de archivo" -- Reemplazar con el nombre de tu filtro Quartz
establecer carpetaSalida a (elegir carpeta con mensaje "Seleccionar la carpeta para guardar los PDFs comprimidos:")

decir aplicación "Buscar"
    establecer archivosPDF a (elegir archivo de tipo "PDF" con mensaje "Seleccionar archivos PDF para comprimir:" con selección múltiple permitida)
fin decir

repetir con archivoPDF en archivosPDF
    establecer rutaArchivoEntrada a (archivoPDF como texto)
    establecer rutaArchivoSalida a ((carpetaSalida como texto) & (nombre de (info para archivoPDF)))

    decir aplicación "Vista Previa"
        abrir archivoPDF
        delay 1 -- Permitir tiempo para que Vista Previa cargue el archivo
        intentar
            exportar documento 1 a archivo rutaArchivoSalida como PDF utilizando filtro Quartz filtroQuartz
            cerrar documento 1
        en error errMsg
            mostrar diálogo "Error procesando archivo: " & (nombre de (info para archivoPDF)) & ". Error: " & errMsg
        fin intentar
    fin decir
fin repetir

mostrar diálogo "¡Compresión completa!" botones {"OK"} botón predeterminado "OK"

Por lo tanto, decidí ejecutar el script desde Terminal. Sin embargo, la prueba en un archivo y luego en varios archivos también falló.

Ejecutando el script para varios archivos con el siguiente comando:

$ for file in /Users/Guest/Desktop/202410271045\ separated/*.pdf;
hacer
    salida="${file%.pdf}_comprimido.pdf";
    cupsfilter -i application/pdf -o "$salida" -p /System/Library/Filters/Reduce\ File\ Size.qfilter "$file";
hecho

falló con un montón de caracteres extraños en la salida de Terminal.

Este es el resultado al ejecutar el script con un archivo:

$ cupsfilter -i application/pdf -o /Users/Guest/Downloads/comprimido.pdf -p /System/Library/Filters/Reduce\ File\ Size.qfilter /Users/Guest/Downloads/input.pdf
DEBUG: argv[0]="cupsfilter"
DEBUG: argv[1]="1"
DEBUG: argv[2]="Guest"
DEBUG: argv[3]="input.pdf"
DEBUG: argv[4]="1"
DEBUG: argv[5]="/Users/Guest/Downloads/comprimido.pdf=true"
DEBUG: argv[6]="/Users/Guest/Downloads/input.pdf"
DEBUG: envp[0]=""
DEBUG: envp[1]="CONTENT_TYPE=application/pdf"
DEBUG: envp[2]="CUPS_DATADIR=/usr/share/cups"
DEBUG: envp[3]="CUPS_FONTPATH=/usr/share/cups/fonts"
DEBUG: envp[4]="CUPS_SERVERBIN=/usr/libexec/cups"
DEBUG: envp[5]="CUPS_SERVERROOT=/private/etc/cups"
DEBUG: envp[6]="LANG=de_CH.UTF8"
DEBUG: envp[7]="PATH=/usr/libexec/cups/filter:/usr/bin:/usr/sbin:/bin:/usr/bin"
DEBUG: envp[8]="PPD=/System/Library/Filters/Reduce File Size.qfilter"
DEBUG: envp[9]="PRINTER_INFO=cupsfilter"
DEBUG: envp[10]="PRINTER_LOCATION=Unknown"
DEBUG: envp[11]="PRINTER=cupsfilter"
DEBUG: envp[12]="RIP_MAX_CACHE=128m"
DEBUG: envp[13]="USER=Guest"
DEBUG: envp[14]="CHARSET=utf-8"
DEBUG: envp[15]="FINAL_CONTENT_TYPE=application/pdf"
INFO: gziptoany (PID 5149) started.
DEBUG: Unable to open "/Users/Guest/Downloads/input.pdf".
ERROR:Unable to open print file: No such file or directory
ERROR: gziptoany (PID 5149) stopped with status 1

1voto

benwiggy Puntos 8

Hay bastante que desempaquetar aquí:

En primer lugar, Automator tiene una acción Aplicar filtro de cuarzo, que es mucho más fácil de usar que AppleScript. (Los Filtros de Cuarzo son una característica del sistema operativo, no solo de Vista Previa).

En segundo lugar, el filtro preinstalado del sistema para Reducir tamaño de archivo es conocido por ser terrible, y puedes encontrar varios filtros de terceros que ofrecen mejores configuraciones. O puedes crear tu propio filtro en Utilidad de ColorSync, como se menciona en mi respuesta aquí.

En tercer lugar, Apple hizo muchos cambios en PDFKit en Sierra, y con eso vinieron muchos errores en la creación y manipulación de PDF. La mayoría de ellos se solucionaron en High Sierra, pero algunos persistieron hasta Mojave. Cualquier Mac que ejecute Sierra debería ser capaz de ejecutar High Sierra, al menos.

Si hay una razón convincente por la que necesitas quedarte en Sierra, entonces sugiero descargar una versión compatible de GhostScript, que debería ser capaz de comprimir lotes de PDFs muy fácilmente.

También, ¿parece que estás usando una cuenta de usuario invitado? (A menos que ese sea tu nombre). Es posible que una cuenta de invitado tenga permisos restringidos, lo que podría causar problemas.

En cuanto al AppleScript en sí, parece que no hay ningún comando como export en el diccionario AS de Vista Previa. (Al menos en Sonoma: pero deberías revisar el diccionario en Sierra).

Por último, sobre tu script de shell: Los 'caracteres extraños' en la salida del Terminal eran en realidad el contenido de datos del archivo PDF que se estaba escribiendo en stdout. La bandera -o pasa opciones al controlador de impresión; no establece el archivo de salida. Además, -p establece el PPD que se va a utilizar. No se puede aplicar un Filtro de Cuarzo a cupsfilter. (CUPS tiene sus propios 'filtros', que son algo completamente diferente.)

Algo que puede ser útil es este script de python, que puedes utilizar en la línea de comandos para aplicar filtros de cuarzo a PDFs. Utiliza el python2 del sistema, por lo que no necesitas instalar nada. https://github.com/benwiggy/PDFsuite/blob/master/legacy%20(python%202)/Shell_Scripts/quartzfilter.py

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X