Foxit pdf SDK for IOS
Integrate PDF technology easily within your iOS app with our iOS PDF SDK. Foxit’s technology comes with a UI Extension component which is a simple built in PDF viewer. This cuts down development time, making PDF libraries simple and easy to understand, even for those with limited knowledge of PDF technology. Choosing Foxit PDF SDK for your next project means working with a professional, easy to use software development kit that suits all your needs.
Developing with Foxit’s
iOS PDF SDK
Have all the PDF technology you need for your iOS app in one place. Build a first class product, complete with full RMS capabilities and touch screen using Xcode in Swift, Objective-C, or in binding libraries like Cordova, Xamarin or React Native with Foxit. Our libraries, along with our SDK UI Extension can ensure that your application has all the PDF features and functionality it needs to satisfy your users.
FEATURES
PDF Viewing
Our core API provides for high-fidelity rendering of PDF documents with optimized performance for desktop and mobile platforms.
Digital SignatureS
Use ink signatures to let customers sign documents in their digital devices. No need to print a file to sign again!
PDF Forms
Give users the ability to fill out digital forms on the go with their device of choice. Apps have never been more productive!
Rights Management
Our PDF SDK can generate secure PDFs with native encryption/decryption or integrate with customized DRM or IRM security systems. Our technology integrates with Microsoft RMS.
PDF Annotations
Our PDF SDK provides full support for annotating and marking up content with an extensive range of functions for creating, editing or importing/exporting annotations.
Full-Text Search
Fast full-text search for any PDF document, language, or encoding type. The SQLite-based full-text search delivers near-instant results, even for repositories on any digital device.
INTRODUCING FOXIT PDF SDK 7.6
Foxit’s first release of 2021 comes with lots of new features and upgrades to our web-based JavaScript web viewer, desktop SDK and mobile SDK.
On the Web SDK side of things, we’ve added a collaboration feature meaning you can now connect multiple clients through a server, webservice or network to the same PDF. Add annotations to a shared file and collaborate in real time with your team for even more efficient document workflows. We’ve also added PDF portfolio support for viewing and downloading PDFs, lots of new form field options as well as major performance enhancements for files with large quantities of annotations.
For our desktop SDK, we’ve added some new APIs to set a DPI limit for image compression, added portfolio support as per the Web SDK above, extended our HTML to PDF conversion to include Linux, along with .TXT to PDF support.
When it comes to mobile, we’ve enhanced the performance of documents containing static XFA forms as well as made improvements to annotation counting, zoom rendering and much more!

Advanced Technology

XFA FORMS
XFA Forms are XML-based forms wrapped inside a PDF. Securely capture, present, move, process, output, update & print information associated with static & dynamic XFA forms. Simplify your data sharing, transportation & availability with XFA.

RIGHTS MANAGEMENT
Keep PDF documents secure by connecting your application & files to Microsoft's Rights Management Services platform natively. Foxit PDF SDK also integrates with your IRM & DRM solution.
XFA FORMS
XFA Forms are XML-based forms wrapped inside a PDF. Securely capture, present, move, process, output, update and print information associated with static and dynamic XFA forms. Simplify your data sharing, transportation and availability with XFA.
Rights Management
Keep your PDF documents secure by connecting your application and files to Microsoft’s Rights Management Services platform natively. Foxit PDF SDK also integrates with your IRM and DRM solution.
REDACTION
Programmatically search and sensor sensitive information in your documents for legal or security purposes to keep your customer and employee information safe. Click here to see how you can achieve full GDPR-compliance.
Try our Technology
Our iOS PDF Reader is built with our PDF SDK for iOS and free to download from the app store. Try our technology today.
Benefits
Native UI
Our iOS PDF SDK is built with development in mind. We provide a built in PDF viewer which will half your development while allowing you to customize your viewer accordingly.
Easy to Integrate
We developed our iOS PDF Library with platform considerations a priority. This means that we follow IOS specific naming conventions to make our product native to it.
NATURAL PDFKIT UPGRADE
If you use PDFKit in your iOS or Mac application, it may be time for an upgrade. Foxit PDF SDK offers better rendering quality, as well as an extensive feature list including annotations, forms, signatures and more.
Powered by Foxit's Technology
The core technology of Foxit PDF SDK has been around for years and is trusted by a large number of well-known companies, Foxit’s powerful engine makes document viewing fast and consistent in all environments.
SYSTEM REQUIREMENTS
- iOS 9.0 or higher
- Xcode 9.0 or newer for Objective-C
- Xcode 9.0 or newer for Swift
Sample Code in Xcode
/** @brief Edit bookmark appearances and titles, and save these changes to a PDF file. */ func modifyBookmarkOfDoc(_ doc: FSPDFDoc, saveAsNewDocAtPath path: String) -> Bool { if path == "" { return false } let rootBMark = doc.getRootBookmark() guard let child = rootBMark?.getFirstChild() else { return false } if !(self.setPropertiesOfBookmarks(child)) { return false } doc.save(as: path, save_flags: 0) return true } class func parsePage(_ page: FSPDFPage, reparse: Bool) -> Bool { let progressive = page.startParse(0, pause: nil, is_reparse: reparse) if progressive == nil { return true } while true { let state = progressive!.resume() switch state { case .finished: return true case .toBeContinued: continue case .error: return false default: fatalError() } } } func setPropertiesOfBookmarks(_ bookmark: FSBookmark?) -> Bool { if bookmark == nil { return false } var bk: FSBookmark! bk = bookmark! while !bk.isEmpty() { let title = bk.title! bk.title = "\(String(describing: title))_renamed" as NSString bk.color = 0x0000ffff bk.style = UInt32(FSBookmarkStyle.bold.rawValue) let child = bk.getFirstChild()! if !child.isEmpty() { self.setPropertiesOfBookmarks(child) } bk = bk!.getNextSibling() } return true }
/** @brief Render a specified page to Bitmap, and save it to a PNG image. */ func renderPage(_ page: FSPDFPage, atPath path: String) -> Bool { if path == "" { return false } if !page.isParsed() { if !PlatformAPIDemo.parsePage(page, reparse: true) { return false } } //create bitmap let pageWidth: Int = Int(page.getWidth()) let pageHeight: Int = Int(page.getHeight()) let bmp = FSBitmap(width: Int32(pageWidth), height: Int32(pageHeight), format: .dibRgb32, buffer: nil, pitch: 0)! bmp.fillRect(0xffffffff, rect: nil) //init renderer let render = FSRenderer.init(bitmap: bmp, is_rgb_order: true) if render == nil { return false } //set different kinds of properties render!.setRenderContentFlags(1) render!.setTransformAnnotIcon(true) render!.setColorMode(FSRendererColorMode.normal) render!.setMappingModeColors(0xffffffff, foreground_color: 0x0000ffff) render!.setForceHalftone(true) let mat = page.getDisplayMatrix(0, top: 0, width: Int32(pageWidth), height: Int32(pageHeight), rotate: .rotation0) let progressive = render!.startRender(page, matrix: mat, pause: nil) if progressive != nil { while true { let state = progressive!.resume() if state == .error { return false } else if state != .toBeContinued { break; } } } if !self.save2PNGWithBitmap(bmp, transform: nil, Path: path as NSString) { return false } return true } func save2PNGWithBitmap(_ fsBitmap: FSBitmap, transform: CGAffineTransform?, Path path: NSString) -> Bool { if path == "" { return false } let pageWidth: Int = Int(fsBitmap.getWidth()) let pageHeight: Int = Int(fsBitmap.getHeight()) if pageWidth <= 0 || pageHeight <= 0 { return false } let provider = CGDataProvider.init(data: fsBitmap.getBuffer() as CFData) let image = CGImage(width: pageWidth, height: pageHeight, bitsPerComponent: 8, bitsPerPixel: 32, bytesPerRow: Int(fsBitmap.getPitch()), space: CGColorSpaceCreateDeviceRGB(), bitmapInfo: .byteOrder32Big, provider: provider!, decode: nil, shouldInterpolate: true, intent: .defaultIntent)! let uiImage = UIImage(cgImage: image) let fileURL = URL(fileURLWithPath: path as String) do { try UIImagePNGRepresentation(uiImage)!.write(to: fileURL) } catch { print(error) return false } return true }