В моем приложении пользователи будут вводить информацию на одном экране, который помещается в базу данных. На другом экране я хочу отобразить PDF-файл с их информацией, используемой для заполнения текстовых полей редактирования (аннотации). В приведенном ниже примере пользователь может нажать «Джон Смит» и ввести новое имя.
Использование ios PDFKit Я могу отобразить PDF и позволяют пользователю редактировать. Я не могу обновить текст в текстовых полях или изменить статус флажков. Похоже, у меня есть права на чтение / запись для pdf.
С моим текущим кодом я смог получить количество страниц моего pdf и распечатать имена аннотаций каждой аннотации, чтобы я мог получить имена полей, для которых я хочу установить значения, но функция setvalue не работает, и проверка содержимого заполненного текстового поля показывает ноль.
override func viewDidLoad() {
super.viewDidLoad()
displayPDF()
updatePDFText()
}
func displayPDF() {
let pdfView = PDFView()
pdfView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(pdfView)
pdfView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
pdfView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
pdfView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
pdfView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
guard let path = Bundle.main.url(forResource: MY_PDF, withExtension: "pdf") else { return }
if let document = PDFDocument(url: path) {
pdfView.document = document
}
}
func updatePDFText() {
guard let path = Bundle.main.url(forResource: MY_PDF, withExtension: "pdf") else { return }
if let document = PDFDocument(url: path) {
for index in 0..<document.pageCount {
if let page = document.page(at: index) {
let annotations = page.annotations
for annotation in annotations {
//print("Annotation Name :: \(annotation.fieldName ?? "")")
if annotation.fieldName == "SSN1" {
annotation.setValue("TEST", forAnnotationKey: .widgetValue)
page.removeAnnotation(annotation)
page.addAnnotation(annotation)
} else if annotation.fieldName == "District" {
annotation.buttonWidgetState = .onState
page.removeAnnotation(annotation)
page.addAnnotation(annotation)
}
}
}
}
}
}
Есть ли проблема с моей реализацией или есть другой метод программного обновления pdf-аннотаций?