wintersan
wintersan

Reputation: 339

Xcode save a PDF as Image?

I have a question, is it possible to save a PDF to Camera Roll? I mean, I know how to save a Picture, but can you save a PDF as well?

Upvotes: 3

Views: 10854

Answers (4)

Obliquely
Obliquely

Reputation: 7072

As @jshin47 - the following fragment will get you going:

This converts a pdf called test.pdf sitting in the local documents directory to a png called test.png. I've used A4 dimensions for the PDF, but if you're not in UK / Europe you might need to US letter sizes.

NSString* localDocuments = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];
NSString* pdfPath = [localDocuments stringByAppendingPathComponent:@"test.pdf"];

// create a sample PDF (just for illustration)
UIGraphicsBeginPDFContextToFile(pdfPath, CGRectZero, nil);
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 612, 792), nil);
[@"Test string" drawInRect:CGRectMake(50, 50, 300, 200) withFont: [UIFont systemFontOfSize: 48.0]];
UIGraphicsEndPDFContext();

NSURL* url = [NSURL fileURLWithPath: pdfPath];

CGPDFDocumentRef document = CGPDFDocumentCreateWithURL ((CFURLRef) url);

UIGraphicsBeginImageContext(CGSizeMake(596,842));
CGContextRef currentContext = UIGraphicsGetCurrentContext();

CGContextTranslateCTM(currentContext, 0, 842);
CGContextScaleCTM(currentContext, 1.0, -1.0); // make sure the page is the right way up

CGPDFPageRef page = CGPDFDocumentGetPage (document, 1); // first page of PDF is page 1 (not zero)
CGContextDrawPDFPage (currentContext, page);  // draws the page in the graphics context

UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

NSString* imagePath = [localDocuments stringByAppendingPathComponent: @"test.png"];
[UIImagePNGRepresentation(image) writeToFile: imagePath atomically:YES];

UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); // do error checking in production code

Upvotes: 1

If you try to do it indirectly, and some one has tried it, you can't view it. https://discussions.apple.com/thread/2479252

Camera Roll is for Photos. iBooks is for PDFs.

Upvotes: 0

tacos_tacos_tacos
tacos_tacos_tacos

Reputation: 10585

You could convert the PDF into a set of images, and import those into the roll. You cannot add the actual PDF to the roll.

Upvotes: 0

atrljoe
atrljoe

Reputation: 8151

No, that is not possible. Apple only allows Photos and Videos to be stored in the Photo Library. PDF formatted files can be stored in iBooks, or other programs that can handle PDF's but the Photo Library cannot accept PDF's

Upvotes: 0

Related Questions