How to render only first page in PDF as image and then resize? I've really stuck on how to do this, I thought it would be easy, but maybe not!

I want to create a small thumbnail image from the first page of a pdf in automator so I can batch convert a load of them at once. Is that possible? If so, what actions do I need to set up?
Since there is no way to extract a single page from a PDF in Automator, you can try with this Python script. It will extract the first page of each passed pdf in a temporary pdf file:

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


You can put it as a Run Shell Script step in an Automator workflow, similar to what @Graham Miln suggested:



Be sure to set Pass Input to as arguments, not to to stdin in the Run Shell Script step.