Need help with iOS-PDF-Reader?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

473 Stars 139 Forks MIT License 223 Commits 34 Opened issues


PDF Reader for iOS written in Swift

Services available


Need anything else?

Contributors list

Deprecated in favor of PDFKIT for iOS 11+ apps


Version License Platform Carthage compatible

PDF Reader for iOS written in Swift * Fast and lightweight * Thumbnail bar on the bottom to navigate to a specific page * Print button on the top right


  • iOS 8.0+
  • Swift 5.0



To install it, simply add the following line to your Podfile:

pod 'PDFReader'

You will also need to make sure you're opting into using frameworks:


Then run

pod install
with CocoaPods 1.0 or newer.


To install it, simply add the following line to your Cartfile:

github "Alua-Kinzhebayeva/iOS-PDF-Reader"


carthage update
to build the framework and drag the built
into your Xcode project.


Import Framework

import PDFReader

Create a PDFDocument

From a file URL
let documentFileURL = Bundle.main.url(forResource: "Cupcakes", withExtension: "pdf")!
let document = PDFDocument(url: documentFileURL)!
From a remote URL
let remotePDFDocumentURLPath = ""
let remotePDFDocumentURL = URL(string: remotePDFDocumentURLPath)!
let document = PDFDocument(url: remotePDFDocumentURL)!
From Data
let document = PDFDocument(fileData: fileData, fileName: "Sample PDF")!

Display a PDFDocument

let readerController = PDFViewController.createNew(with: document)
navigationController?.pushViewController(readerController, animated: true)


Controller Title

PDFViewController.createNew(with: document, title: "Favorite Cupcakes")

Background Color

controller.backgroundColor = .white

Action Button Image and Action

Available Action Styles
/// Action button style
public enum ActionStyle {
    /// Brings up a print modal allowing user to print current PDF
    case print

/// Brings up an activity sheet to share or open PDF in another app
case activitySheet

/// Performs a custom action
case customAction((Void) -> ())


let actionButtonImage = UIImage(named: "cupcakeActionButtonImage")
PDFViewController.createNew(with: document, title: "Favorite Cupcakes", actionButtonImage: actionButtonImage, actionStyle: .activitySheet)

Override the default backbutton

/// Create a button to override the default behavior of the backbutton.  In the below example we create a cancel button which will call our myCancelFunc method on tap.
let myBackButton = UIBarButtonItem(title: "Cancel", style: .done, target: self, action:  #selector(self.myCancelFunc(_:)))
/// Provide your button to createNew using the backButton parameter.  The PDFViewController will then use your button instead of the default backbutton.
PDFViewController.createNew(with: document, title: "Favorite Cupcakes", backButton: myBackButton)

Do not load the thumbnails in the controller

let controller = PDFViewController.createNew(with: document, isThumbnailsEnabled: false)

Change scroll direction of the pages from left to right to top to bottom

controller.scrollDirection = .vertical


Inspired by PDF Reader and Apple's example on TiledScrollView

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.