一个用于在 iOS 中填写 PDF 表单和提取 PDF 数据的简单、体积小巧的工具包,它扩展了 Apple 原生 PDFKit 的 PDFView 和 CoreGraphics PDF C API。
特性
- 使用易于使用的 API 解析和分析 PDF 文件。
- 填写并保存 PDF AcroForms 为平面不可编辑的 PDF。
- 处理文本、按钮和组合字段。
- 使用 PDFDocument、PDFPage、PDFDictionary 和 PDFArray 进行简单的透明度检查。
- 快速解析、提取和分析 PDF 文档的结构、数据和属性。
- 处理签名字段。
- 将 AcroForm 值保存到原始的可编辑 PDF 中。
- 全面单元和集成测试覆盖率
- Swift 文档
安装
Cocoapods
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '11.0'
use_frameworks!
target '<Your Target Name>' do
pod ILPDFKit
end
然后,运行以下命令:pod install
Carthage
要将ILPDFKit集成到您的Xcode项目中使用Carthage,请在您的Cartfile
中指定它。
github "derekblair/ILPDFKit"
运行carthage update
以构建框架并将构建的ILPDFKit.framework
拖放到您的Xcode项目中。
快速开始
开始使用ILPDFKit的最快方式是查看附带的示例应用。例如,要查看名为'test.pdf'的PDF表单资源,您可以这样做:
let document = ILPDFDocument(resource:"myPDF")
// Manually set a form value
document.forms.setValue("Derek", forFormWithName: "Contacts.FirstName")
// Save via a static PDF.
let flatPDF = document.savedStaticPDFData()
PDF支持
ILPDFKit目前只支持有限范围的PDF版本,不适合需要保存1.3到1.7版本通用PDF文件的生产应用。
以下PDF功能可能导致保存问题:
-
线性化的PDF文件(保存后线性化会损坏。文件将可以通过WKWebView,预览和Chrome正确打开,但Adobe阅读器会失败)
-
对象流(此库目前无法保存1.5版本中引入的对象流中存储的字段,使用对象流的文件有时也称为压缩文件,因为对象流可以压缩文件中的PDF对象)。
使用
填写表单
pdfViewController = ILPDFViewController(resource:"test.pdf")
window.rootViewController = pdfViewController
// Have fun filling out the form.
显式获取/设置表单值
for form in pdfViewController.document.forms {
// Get
let formValue = form.value;
let formName = form.name; // Fully qualified field name.
// Set
form.value = "foo";
// If the form is visible on screen it will updated automatically.
// You can access the actual associated widget annotation view as below.
// let widgetView = form.associatedWidget()
}
表单字段的自定义样式
所有字段都可以轻松自定义样式。
捐赠
非常感谢捐赠,这有助于 ILPDFKit 的发展。
- Paypal:http://paypal.me/derekblr
联系
许可证
(MIT许可证)
版权所有 (c) 2020 Derek Blair <[email protected]>
任何人经被许可或得到本软件以及相关文档副本(以下简称“软件”)的拷贝后,可以不受限制地(包括但不仅限于)使用、复制、修改、合并、发布、分发、再许可和/或出售软件拷贝,并允许得到软件的个人这样做,但不包括以下情况:
以上版权声明和许可声明应包括在所有拷贝或实质性部分中。
软件按原样提供,不得保证任何形式,明示或暗示,包括但不限于适销性、适用于特定目的和非侵权性。在任何情况下,作者或版权所有者不对任何要求、损害或其他责任负责,无论这些责任基于合同、侵权或其他法律依据,以及软件本身或其使用或与其他软件一起使用产生的任何后果。