imagestopdf   [plain text]


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