Utilizo una aplicación Automator para mover archivos pdf a un directorio, luego los copio a otro directorio, luego convierto la copia en una miniatura utilizando sólo la 1ª página, con el nombre del archivo exactamente igual que el original excepto con una extensión .png en lugar de .pdf
Tuve este trabajo bajo Mavericks, pero dejó de funcionar cuando actualicé a Mojave, entonces finalmente conseguí que funcione de nuevo utilizando la solución aquí. ¿Cómo renderizar sólo la primera página del PDF como imagen y luego redimensionarla?
Ahora estoy intentando actualizar a Monterey, y se ha vuelto a romper, y esta vez no puedo solucionarlo.
Cualquier idea sería genial. Si es posible, me gustaría encontrar una solución que Apple no rompa cada dos años, pero la experiencia me ha enseñado que es poco probable.
Llevo días jugando con esto.
A continuación adjunto una captura de pantalla de mi solicitud.
Y aquí está el script completo que estoy usando.
#! /usr/bin/python
#
import sys
import os
import tempfile
from Quartz.CoreGraphics import *
from os.path import splitext
from os.path import basename
from os.path import join
def createPDFDocumentWithPath(path):
return CGPDFDocumentCreateWithURL(CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, path, len(path), False))
def main(argv):
for input_pdf_filename in argv:
doc = createPDFDocumentWithPath(input_pdf_filename)
page_one = CGPDFDocumentGetPage(doc, 1)
mediaBox = CGPDFPageGetBoxRect(page_one, kCGPDFMediaBox)
if CGRectIsEmpty(mediaBox):
mediaBox = None
file_name, extension = splitext(basename(input_pdf_filename))
output_path = join(tempfile.gettempdir(), file_name + extension)
writeContext = CGPDFContextCreateWithURL(CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, output_path, len(output_path), True), None, None)
CGContextBeginPage(writeContext, mediaBox)
CGContextDrawPDFPage(writeContext, page_one)
CGContextEndPage(writeContext)
CGPDFContextClose(writeContext)
del writeContext
print output_path
if __name__ == "__main__":
main(sys.argv[1:])