Come rendere solo la prima pagina in PDF come immagine e poi ridimensionarla?

2

Mi sono davvero concentrato su come farlo, ho pensato che sarebbe stato facile, ma forse no!

Voglio creare una piccola immagine di anteprima dalla prima pagina di un pdf in automator in modo da poter convertire in gruppo un carico di essi in una sola volta. È possibile? In tal caso, quali azioni devo impostare?

    
posta Osu 23.10.2012 - 11:59
fonte

2 risposte

3

Poiché non c'è modo di estrarre una singola pagina da un PDF in Automator, puoi provare con questo script Python. Estrae la prima pagina di ogni pdf passato in un file PDF temporaneo:

#! /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:])

Puoi inserirlo come un passo Run Shell Script in un flusso di lavoro di Automator, simile a quanto suggerito da @Graham Miln:

Assicurati di impostare Pass Input su as arguments , non su to stdin nel passo Run Shell Script .

    
risposta data 27.10.2012 - 08:34
fonte
2

Il seguente flusso di lavoro di Automator crea miniature per ogni pagina:

  1. Trova elementi del Finder specificati
  2. Renderizza pagine PDF come immagini
  3. Scala immagini
  4. Sposta elementi del Finder

Con le miniature create, puoi eliminare tutte tranne le prime immagini della pagina. Potresti essere in grado di automatizzare anche questo passaggio; prendi in considerazione l'aggiunta di un'azione Ricerca elementi filtro prima di Sposta elementi del Finder .

    
risposta data 23.10.2012 - 12:50
fonte

Leggi altre domande sui tag