В iOS, как вы можете программно заполнить поле формы pdf?

Мне нужно взять существующий pdf файл и программно заполнить список полей формы текстом, а затем сохранить pdf, не отображая его пользователю.

Например, если файл pdf содержит поля с именем "LastName" и "FirstName", я хотел бы установить значение "FirstName" в "Louis", а затем сохранить файл.

Я долго искал и не могу найти никаких указаний даже с того, где начать, поскольку документация iOS (и большинство вопросов здесь) кажется направленной на отображение или создание PDF-контента вместо его модификации.

EDIT:
Мой главный вопрос: возможно ли открыть поток в формате pdf (я знаю, как это сделать) и скопировать каждый существующий элемент словаря pdf в новый pdf? Я не смог найти способ написать словарные статьи в формате pdf.

Ответ 1

Я сомневаюсь, что какая-то функциональность никогда не будет в рамках iOS. Причина, по которой большая часть связанной информации вы можете найти, "кажется, что [s] ориентирована на отображение или создание PDF-контента вместо того, чтобы его модифицировать", - это то, что большинство случаев использования потребует или нуждается в функциях PDF.

Вам нужно найти стороннюю библиотеку, которая может открыть PDF файлы, заполнить поля AcroForm, а затем отпечатать PDF файл. Я использую iText на Java (есть также iTextSharp для С#), но я ничего не знаю о Objective-C.

Как только вы найдете эту библиотеку, вам нужно будет интегрировать ее в свой проект. Несомненно, есть несколько связанных вопросов/ответов здесь о SO для любой версии SDK, которую вы используете.

Ответ 2

Это было бы проще сделать с HTML-страницей. Если вы хотите использовать HTML-страницу вместо формы .pdf, то как вы это сделаете, вам нужно:

[field1 setText:@"Field 1 Text"];
[field2 setText:@"Field 2 Text"];

NSString *result;
result = [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"$('#field1').val('%@');", field1.text]];
result = [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"$('#pfield2').val('%@');", field2.text]];
result = [webView stringByEvaluatingJavaScriptFromString:@"$('#submitbutton').click();"];

Вам нужно будет создать два UILabels или UITextFields и называть их "field2" и "field2" в вашем .h файле. Затем вы можете найти идентификатор поля, которое необходимо заменить, например. # field1, а затем поместите туда, где я поставил "# field1", и снова для второго поля, где я поставил "# field2". Также должен быть UIWebView с уже загруженной страницей. Этот код следует использовать после, загрузив страницу UIWebView. Возможно, выполните следующие действия:

-(void)webViewDidFinishLoad:(UIWebView *)webView {

// Insert above code here

}

Вероятно, вам нужно полное понимание Javascript, если вы хотите сделать это для всей формы, но это должно вас начать.

Надеюсь, что это поможет.