Generate PDFs Programmatically on iOS

PSPDFKit for iOS offers several different ways to programmatically create PDF files. Check out the following guides for generating a:

Optionally, you can also use Apple’s built-in APIs provided by UIKit to generate a PDF.

Using UIKit

For maximum flexibility, you can write your own UIKit or Core Graphics drawing code to generate PDFs. You need to take care to correctly handle line and page breaks. This is easiest with the UIGraphicsPDFRenderer class introduced in iOS 10. The documentation is detailed and has easy-to-understand examples.

Here’s an example of using UIGraphicsPDFRenderer:

import UIKit

let outputFileURL: URL = ...

let pdfRenderer = UIGraphicsPDFRenderer(bounds: CGRect(x: 0, y: 0, width: 595, height: 842))

do {
    try pdfRenderer.writePDF(to: outputFileURL) { context in
        context.beginPage()

        let attributes: [NSAttributedString.Key: Any] = [
            .font : UIFont.systemFont(ofSize: 36, weight: .semibold)
        ]

        let text = "This PDF was made using\na tutorial from PSPDFKit."

        (text as NSString).draw(at: CGPoint(x: 20, y: 20), withAttributes: attributes)
    }
} catch {
    print("Could not create PDF file: \(error)")
}

If you already have a view that draws into a graphics context using Core Graphics or UIKit drawing calls, you can reuse that drawing code.