Realmente me he atascado en cómo hacer esto, pensé que sería fácil, ¡pero tal vez no!
Quiero crear una pequeña imagen en miniatura de la primera página de un pdf en Automator para poder convertir por lotes una gran cantidad de ellos a la vez. ¿Es eso posible? Si es así, ¿qué acciones debo configurar?
Dado que no hay forma de extraer una sola página de un PDF en Automator, puede probar con este script de Python. Extraerá la primera página de cada pdf pasado en un archivo pdf temporal:
#! /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 + "_page1" + extension)
writeContext = CGPDFContextCreateWithURL(CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, output_path, len(output_path), False), 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:])
Puede ponerlo como un Run Shell Script
paso en un flujo de trabajo de Automator, similar a lo que sugirió @Graham Miln:
Asegúrese de establecer Pass Input
en as arguments
, no to stdin
en el Run Shell Script
paso.
El siguiente flujo de trabajo de Automator crea miniaturas para cada página:
Con las miniaturas creadas, puede eliminar todas las imágenes excepto las de la primera página. También puede automatizar este paso; considere agregar una Acción de elementos del buscador de filtros antes de Mover elementos del buscador .
Osu