如何在ios应用程序中显示和编辑现有的PDF文件

我不想创build新的PDF文件,我已经做了,但想通过代码在iOS中显示和编辑现有的PDF文件..

这是否可能,如果可能,我怎么能做到这一点…

更新

假设将会有文本文档pdf,我们想要在该文件中input一些其他的文本,并保存它..所以如何通过编程来做到这一点?

请帮我解决这个问题…

提前致谢…

我知道这个问题为时已晚,但是我想添加我的解决scheme。

我正在使用UIGraphicsBeginPDFContextToFile生成PDF文件。 我从基类UIViewController创build了一个名为PDFCreator类,因为我有两个函数:

 - (void) beginContextWithFile:(NSString *)filename { pageSize = CGSizeMake(1024, 1424); UIGraphicsBeginPDFContextToFile(filename, CGRectZero, nil); UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, pageSize.width, pageSize.height), nil); [self createInitialPart]; } - (void) endContext { UIGraphicsEndPDFContext(); } 

我已经在应用程序委托文件中创build了这个类的一个对象,因为它将保留对象,直到应用程序终止为止(正如我的要求)。

最初,我调用beginContextWithFile:它将在文档目录中创build一个pdf文件以及通过调用createInitialPart方法添加的数据。

稍后,我需要更新该文件,所以我有另一个名为secondPart方法,虽然我调用了一些更多的数据追加到该文件。

一旦我填充完成创build,我需要调用PDFCreator类的endContext ,这将完成pdf的一代,是的,我将有更新的文件。

这是有点棘手,我没有执行任何内存检查,虽然我有要求,我find了解决scheme:)

我能够通过创build原始PDF的副本并在构build过程中对其进行修改来实现这一点。

PS:在我的解决scheme中,我需要编辑新的PDF文档信息,所以我使用主题参数来做到这一点。

Swift 3

 func createPDF(on path: String?, from templateURL: URL?, with subject: String?) { guard let newPDFPath = path, let pdfURL = templateURL else { return } let options = [(kCGPDFContextSubject as String): subject ?? ""] as CFDictionary UIGraphicsBeginPDFContextToFile(newPDFPath, .zero, options as? [AnyHashable : Any]) let templateDocument = CGPDFDocument(pdfURL as CFURL) let pageCount = templateDocument?.numberOfPages ?? 0 for i in 1...pageCount { //get bounds of template page if let templatePage = templateDocument?.page(at: i) { let templatePageBounds = templatePage.getBoxRect(.cropBox) //create empty page with corresponding bounds in new document UIGraphicsBeginPDFPageWithInfo(templatePageBounds, nil) let context = UIGraphicsGetCurrentContext() //flip context due to different origins context?.translateBy(x: 0.0, y: templatePageBounds.height) context?.scaleBy(x: 1.0, y: -1.0) //copy content of template page on the corresponding page in new file context?.drawPDFPage(templatePage) //flip context back context?.translateBy(x: 0.0, y: templatePageBounds.height) context?.scaleBy(x: 1.0, y: -1.0) // -->>>> Do your change here <<<<-- /* Here you can do any drawings */ } } UIGraphicsEndPDFContext() } 

您可以使用Quartz2D来操作PDF,打开它们,进行转换等等。

查看官方文档

更新:

按照文档中的说明创build你的pdf上下文,然后你只需要写文本:

http://developer.apple.com/library/ios/#documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_text/dq_text.html#//apple_ref/doc/uid/TP30001066-CH213-TPXREF101