iOS - 如何覆盖单页PDF文件?

时间:2012-08-22 09:57:39

标签: ios pdf

我想覆盖现有的PDF文件,而不是创建新的PDF文件。如果PDF文件中有100页,我不想绘制整个PDF文件,只需绘制一页。

实际上,我想在PDF文件页面上放置一些图像。如果用户点击保存按钮,它将被写入。不可能吗?有没有框架或sdk?

感谢您的回复。

3 个答案:

答案 0 :(得分:3)

支持iPhone中的PDF操作。 Apple的文档如下http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_pdf/dq_pdf.html

-(void)createPDFFileFromSelectedPageNumber:(int)selectedPageNumber:(NSString*)fileName{
NSArray *arrayPaths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [arrayPaths objectAtIndex:0];

NSString *outpath = [[NSString alloc]initWithFormat:@"%@/output.pdf",path];

UIGraphicsBeginPDFContextToFile(outpath, CGRectZero, nil);
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 612, 792), nil);

NSURL *url = [[NSURL alloc] initFileURLWithPath:fileName];

CGPDFDocumentRef originalPDF = CGPDFDocumentCreateWithURL((__bridge CFURLRef)url);

CGPDFPageRef pdfPage = CGPDFDocumentGetPage(originalPDF, selectedPageNumber);

CGSize size = CGSizeMake(612.0, 792.0);
CGRect outRect = CGRectMake(0, 0, 612.0, 792.0);


UIGraphicsBeginImageContext(size);

CGContextRef context = UIGraphicsGetCurrentContext();

CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(pdfPage, kCGPDFMediaBox, outRect, 0, true);
CGContextConcatCTM(context, pdfTransform);

CGContextDrawPDFPage(context, pdfPage);

UIImage *output = UIGraphicsGetImageFromCurrentImageContext();


CGContextSaveGState (context);

UIGraphicsEndImageContext();

[output drawInRect:outRect];

UIGraphicsEndPDFContext();}

将源PDF文件的filePath和pageNumber传递给该函数将为您提供包含单页的新PDF。您可以根据自己的要求进一步改进。希望至少这有帮助。

答案 1 :(得分:2)

到目前为止,iOS还没有提供编辑整个PDF文件的方法。和this issue一样,我认为他也想修改其中一个页面。

第三方lib会更好。

答案 2 :(得分:1)

非常相似:Merge PDF files on iOS

无法重新打开并继续编辑PDF文件。只能再次阅读和重绘整个PDF。