#!/usr/bin/python # # Usage: imagestopdf [image-file ...] pdf-file # # This script creates the specified PDF file. The contents # of each image file are placed into the PDF, one per page. # import sys, os from Quartz.CoreGraphics import * from Quartz.ImageIO import * from LaunchServices import kUTTypePDF if len(sys.argv) > 2 : hasImages = False url = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, sys.argv[-1], kCFURLPOSIXPathStyle, False) if url is None : sys.exit('imagestopdf: ' + sys.argv[-1] + ': Can\'t create url') idr = CGImageDestinationCreateWithURL(url, kUTTypePDF, len(sys.argv)-2, None) if idr is None : sys.exit('imagestopdf: ' + sys.argv[-1] + ': Can\'t create file') for arg in sys.argv[1:-1] : image = None url = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, arg, kCFURLPOSIXPathStyle, False) if url : isr = CGImageSourceCreateWithURL(url, None) if isr : props = CGImageSourceCopyPropertiesAtIndex(isr, 0, None) if props : image = CGImageSourceCreateImageAtIndex(isr, 0, None) if image : CGImageDestinationAddImage(idr, image, props) hasImages = True if image is None : print >> sys.stderr, 'imagestopdf: ' + arg + ': Invalid image file' if hasImages is True : CGImageDestinationFinalize(idr) else : sys.exit('imagestopdf: No images found!') else : print >> sys.stderr, 'Usage: imagestopdf [image-file ...] pdf-file' sys.exit(2)