PDFKit и PDFDocument Аннотации не видны в Adobe Acrobat - PullRequest
0 голосов
/ 09 января 2020

После удаления / добавления аннотаций я сохраняю файл на диск (это даже необходимо для правильного сохранения аннотаций?). Затем у меня есть документ в UIActivityViewController внутри UIActivityItemProvider.

Аннотации можно просмотреть в предварительном просмотре, PDF Expert, Firefox, браузер Gmail, Preview и др. c. - только не Acrobat (и экспорт в .do c)

Использование Acrobat Reader Build 19.21.20061.361316; используя Xcode 11.3

PDF-файл, который я редактирую или здесь

Пример аннотации:

// Open PDF etc
if annotation.fieldName == "form1[0].Page1[0].WE_FACTR[0]" {
     annotation.setValue("30.0", forAnnotationKey: .widgetValue)
     page.removeAnnotation(annotation)
     page.addAnnotation(annotation)
}
// save PDF to file
// PDF File is in the UIACtivityViewController

Мне было интересно, у кого-то был обходной путь для пропущенных аннотаций в PDFKit для Adobe Reader.

Когда я спросил @steipete из PSPDFKit , он сказал мне, что именно поэтому люди используют его фреймворк. Есть предложенный им замещающий вызов PDFXKit .

Он также не работает с PSPDFKit! XFA формы не поддерживаются.

1 Ответ

1 голос
/ 27 января 2020

Ваш PDF имеет определение гибридной формы XFA / AcroForm . Это означает, что форма определяется дважды в PDF, один раз с использованием объектов AcroForm, «родного» формата форм PDF и один раз с использованием потока XFA XML, в то время как устаревшая альтернативная техника форм позволяет использовать больше динамических c форм.

Если ваш PDF-файл открыт в процессоре PDF, поддерживающем XFA (что в первую очередь означает средства просмотра Adobe плюс очень мало других процессоров), определение формы XFA обрабатывается (например, отображается), а все нормальное содержимое PDF игнорируется, просто значения в определении формы AcroForm обновляются в соответствии со значениями формы XFA.

Если ваш PDF-файл открыт в процессоре PDF не , поддерживающем XFA (т. е. практически все, кроме продуктов Adobe), обычный PDF обрабатывается содержимое, включая определение формы Acroform.

Это объясняет ваши наблюдения

Аннотации можно просмотреть в режиме предварительного просмотра, PDF Expert, Firefox, браузер Gmail, Preview и т. д. c. - только не Acrobat (и экспорт в .do c)

(как я только сейчас вижу, вы сами узнали о XFA и отредактировали замечание, указывающее там на свой вопрос.)

Обычное решение в этой ситуации - удалить определение формы XFA. После удаления все процессоры (в том числе и программы просмотра Adobe) будут обрабатывать только обычное содержимое PDF, включая определение формы AcroForm.

Для этого достаточно просто удалить запись XFA в AcroForm словарь PDF.

Если в документе есть подпись прав использования (как у вас), это удаление сделает ее недействительной. В таком случае вам также следует удалить запись Perms в каталоге .

К сожалению, я не знаю ваших библиотек, поэтому не могу показать код для реализации этого с ними.

...