Released 3 years ago , Last update 2 months ago

A fast and customizable Objective-C framework for reading and rendering PDF files in iPhone and iPad apps. Build PDF reader apps or use it as a PDF viewer in your existing apps.

Powerful Objective-C PDF Rendering for iPhone and iPad apps

Getting PDF rendering right on the iOS platform is difficult and time consuming. Memory constraints and slow CPU conditions make it very hard to achieve fast PDF rendering. The PDF Touch SDK is the result of months of development time and years of optimization, providing you with a mature and performant solution for adding PDF capabilities to your iPhone or iPad app.

PDFTouch SDK provides a robust framework that is easy to use and customize to your needs. With just a couple of lines of code you can create a PDF view controller and display it in your app. The user interface is very similar to the iBooks app and also features a grid display for page thumbnails. For more details please refer to the Features section below.

Newsstand solution for magazine publishers

Check out the iPad Book / Newsstand PDF starter Kit if you need a complete newsstand solution that works with PDFTouch SDK out of the box.

Download the FREE Trial now and see for yourself how simple it is to add PDF rendering functionality to your app.

  • 5 17
  • 4 6
  • 3 1
  • 2 1
  • 1 2
27 Reviews Read Reviews


14 day 14-day money-back guarantee


Single App Binary

  • Perpetual license

  • 1 application

  • Can distribute binary products only

  • Commercial use

  • 1 month support



  • Perpetual license

  • Unlimited projects

  • Can distribute code and binary products

  • Commercial use

  • 12 months support


Enterprise - unlocked

  • Perpetual license

  • Unlimited projects

  • Can distribute code and binary products

  • Commercial use

  • 12 months support

Need custom services for this product? Get a quote

Features & Package


  • Fast multithreaded PDF rendering using Grand Central Dispatch.
  • Highly optimized caching algorithm.
  • Offline pre-rendering of pdf pages at different sizes integrated with the caching system.
  • Thumbnail grid display.
  • Pinch to zoom.
  • Double tap to zoom in and out.
  • Text search with highlighting.
  • Outline view (TOC).
  • Bookmarks.
  • Double page mode with left or right lead.
  • Page curl animations.
  • Retina Display ready.
  • Optimized for both the iPhone and iPad.
  • Includes a demo Xcode project demonstrating the common usage of the SDK's features.

Annotations Support

  • Page links
  • Web links
  • Mail links
  • Video
  • Audio
  • Maps
  • Web pages
  • Custom overlays


  • Complete source code of PDFTouch SDK.
  • Demo Xcode project.
  • Documentation with integration instructions.
  • Technical appledoc style documentation.


Code Documentation

All public classes of PDFTouch SDK are documented using appledoc. See the documentation for further information.


The source code of PDFTouch SDK is developed on Xcode 6.1 with iOS Base SDK 8.1. PDFTouch SDK works on a deployment target of iOS 7 or greater on armv7, armv7s, arm64 and can be used in ARC and non-ARC projects.


PDFTouch SDK can be integrated in two ways into your app.

1. Add the binary PDFTouch.framework

  • Drag PDFTouch.framework into the "Frameworks" group of your Xcode project.
  • Add the required libraries as shown in the screenshot below.
  • Add PDFTouch.bundle to your projects resources as shown in the screenshot below.
  • Open the Build Settings tab and apply the following changes:
    • Other Linker Flags -> -all_load -ObjC
  • Add the following import statement everywhere you want to use PDFTouch SDK: #import <PDFTouch/PDFTouch.h> Binary

2. Add PDFTouch.xcodeproj as a dependency

  • Copy the whole PDFTouch folder into your project's root folder.
  • Drag PDFTouch.xcodeproj into the "Frameworks" group of your Xcode project.
  • Add PDFTouch as a target dependency.
  • Add the required libraries as shown in the screenshot below.
  • Add PDFTouch.bundle to your projects resources as shown in the screenshot below.
  • Open the Build Settings tab and apply the following changes:
    • Other Linker Flags -> -all_load -ObjC
    • Add the following paths to "Header Search Paths":
      • "PDFTouch/**"
  • Add the following import statement everywhere you want to use PDFTouch SDK: #import "PDFTouch.h" Source

Sample Usage

1. Set your license key in the app delegate. You can request your license key on this page: http://yakamozlabs.com/license-key.

[[YLPDFTouch sharedInstance] setLicenseKey:@"your-license-key"];

2. Create a YLDocument instance for the PDF file you want to display.

NSString *path = [[NSBundle mainBundle] PathForResource:@"Developers" withExtension:@"pdf"];
YLDocument *document = [[[YLDocument alloc] initWithFilePath:url] autorelease];

3. Create a YLPDFViewController instance and present it as a modal or child view controller.

YLPDFViewController *v = [[YLPDFViewController alloc] initWithDocument:document];
[v setDocumentMode:YLDocumentModeDouble];
[v setDocumentLead:YLDocumentLeadRight];
[v setPageCurlEnabled:YES];
[v setModalPresentationStyle:UIModalPresentationFullScreen];
[v setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self.navigationController presentModalViewController:v animated:YES];
[v release];


I am developing an application for a customer. Which license should I use? The single app license cannot be used for building applications for your customer since the license cannot be sub-licensed nor transferred to your customer. In that case you will either have to purchase a developer license or have your customer purchase a single app license which you can then use to develop the application. However purchasing the Developer license will be a valuable investment which will pay off if you'll use it in more than one client project.

What's the difference between the Developer and Enterprise license? Both the Developer and Enterprise license allow usage in unlimited number of apps. The only difference is that the Enterprise license doesn't require license key activation for each individual app. This is especially useful if you offer a product that generates custom iOS apps on demand.

Is it possible to upgrade between different licenses? An upgrade is possible. Contact us for more information or browse to the "My Purchases" section to upgrade your license.

My license is expired. What does this mean? Each of our licenses include 1 year free updates. If you want to keep receiving new updates and support you can do so by paying a renewal fee which is about 25% of the current license price. If you don't renew your license you can still keep using the version you have on hand. It will keep working without any restrictions.

4 licenses, starting from From » $999.99 View Licenses

Get A Quote

What do you need?
  • Custom development
  • Integration
  • Customization / Reskinning
  • Consultation
When do you need it?
  • Soon
  • Next week
  • Next month
  • Anytime

Thanks for getting in touch!

Your quote details have been received and we'll get back to you soon.

or Get a quote

for customization or integration services

Or enter your name and Email
  • CK Chaitanya Kulkarni 2 days ago
    Hi Team, I've downloaded a sample for PDFTouch SDK iOS , but could not find the functionality to add/view annotations. Could you please let me know if adding/viewing custom annotations and custom views will be possible by using this framework? Regards, Chaitanya
    • Kemal Taskin Publisher 2 days ago
      Hi Chaitanya, PDFTouch SDK does not support interactive annotation editing. Only embedded custom link annotations are supported to display audio, video, web pages and maps. Please have a look at the "pdftouch.pdf" file for a sample. You can also implement the YLPDFViewControllerDataSource protocol to supply custom UIViews to be displayed on a particular PDF page.
  • AJ Aman Singh Jaspal License holderSingle App License
    1 month support
    Purchased on Nov 22, 2013
    5 days ago
    Hi Kemal, Hi, Can we add UIButton on PDF pages? So that when user taps on it, it will redirect to URL. We don't want to use embedded PDF links, thats why we want to use UIButton on PDF pages. To add this button, we need to know: How can I calculate the width and height of PDF page? In which files, I need to add the UIButton so that it display on the PDF page? Your help will be appreciated!
    • Kemal Taskin Publisher 5 days ago
      Hi Aman, Please have a look at the "pdfViewController:annotationViewsForPage:viewRect:" method defined in YLPDFViewControllerDataSource. This method allows you to add custom UIView objects on top of PDF pages. For more information: http://yakamozlabs.com/static/pdftouch/Protocols/YLPDFViewControllerDataSource.html
    • AJ Aman Singh Jaspal 5 days ago
      Thanks Kemal for prompt response!
    • AJ Aman Singh Jaspal 3 days ago
      Hi Kemal, I have checked this document , but not able to get that how can I call this function pdfViewController:(YLPDFViewController *)controller annotationViewsForPage:(NSUInteger)page viewRect:(CGRect)viewRect. I see the demo app, but there is no use of this function in it. I have tried to use this function like: _document = [[YLDocument alloc] initWithFilePath:dataPath]; _pdfViewController = [[YLPDFViewController alloc] init]; [_pdfViewController.datasource pdfViewController:_pdfViewController annotationViewsForPage:1 viewRect:CGRectMake(100, 100, 150, 20)]; But still not see any UIView over the PDF page, could you tell me how should I implement this function?
    • Kemal Taskin Publisher 3 days ago
      Hi Aman, This is a protocol method and works just like UITableViewDataSource methods. Your UIViewController class that's responsible for presenting YLPDFViewController should implement the YLPDFViewControllerDataSource protocol like this: @interface YourController : UIViewController<YLPDFViewControllerDataSource> YLPDFViewController will call this method on your class.
    • AJ Aman Singh Jaspal 3 days ago
      Thanks Kemal! It calls the method now.
    • AJ Aman Singh Jaspal 1 day ago
      Hi Kemal, I am able to call the method that way you told me. Now when I try to pass the UIView then it is not display on PDF. I am using this code: - (NSArray *)pdfViewController:(YLPDFViewController *)controller annotationViewsForPage:(NSUInteger)page viewRect:(CGRect)viewRect{ NSArray *array = nil; if(page <= 1) { UIView *uv = [[UIView alloc] init]; uv.backgroundColor = [UIColor redColor]; uv.frame = CGRectMake(100, 200, 150, 20); array = [NSArray arrayWithObjects:uv, nil]; } return array; }
    • Kemal Taskin Publisher 19 hours ago
      Hi Aman, Your UIView object must conform to the YLAnnotationView protocol. Please have a look at the "NextPageButton.h" and "PrevPageButton.h" sample code in the PDFTouch Xcode project.
  • D David 2 weeks ago
    Hello, while initializing an YLPDFViewController I'm getting an error: +[NSBundle myLocalizedStringForKey:]: unrecognized selector sent to class 0x10d4c4870 Code: let doc = YLDocument(filePath: localURL) let controller = YLPDFViewController(document: doc) Thanks
    • Kemal Taskin Publisher 2 weeks ago
      Did you add the "-ObjC" linker flag in your build settings?
    • W WOPATA 1 week ago
      That did the job, big thanks.