¿Cómo representar solo la primera página en PDF como imagen y luego cambiar el tamaño?

2

Realmente me he estancado 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 carga de ellos a la vez. ¿Es eso posible? Si es así, ¿qué acciones debo configurar?

    
pregunta Osu 23.10.2012 - 11:59

2 respuestas

3

Ya que no hay forma de extraer una sola página de un PDF en Automator, puedes probar con esta secuencia de comandos 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:])

Puedes ponerlo como un paso Run Shell Script en un flujo de trabajo de Automator, similar a lo que sugirió @Graham Miln:

Asegúrate de establecer Pass Input en as arguments , no en to stdin en el paso Run Shell Script .

    
respondido por el Riccardo Marotti 27.10.2012 - 08:34
2

El siguiente flujo de trabajo de Automator crea miniaturas para cada página:

  1. Obtener elementos del buscador especificados
  2. Renderizar páginas PDF como imágenes
  3. Imágenes a escala
  4. Mover elementos del buscador

Con las miniaturas creadas, puede eliminar todas las imágenes de la primera página, excepto la anterior. También puedes automatizar este paso; considere la posibilidad de agregar una acción Filtrar elementos del buscador antes de Mover elementos del buscador .

    
respondido por el Graham Miln 23.10.2012 - 12:50

Lea otras preguntas en las etiquetas