在iOS中,如何以编程方式填写pdf表单字段?

时间:2011-12-03 18:48:19

标签: objective-c ios pdf core-graphics

我需要获取现有的pdf文件并以编程方式填写带有文本的表单字段列表,然后保存pdf而不将其显示给用户。

例如,如果pdf文件包含名为“LastName”和“FirstName”的字段,我想将“FirstName”的值设置为“Louis”,然后保存文件。

我一直在搜索很长时间,因为iOS文档(以及此处的大部分问题)似乎都是为了显示或创建pdf内容而不是修改它,所以无法找到任何指导。

修改
我的主要问题是:是否可以打开pdf流(我知道如何做)并将每个现有的pdf字典项复制到新的pdf中?我一直无法找到将字典项写入pdf的方法。

2 个答案:

答案 0 :(得分:1)

我怀疑iOS框架中会出现这种功能。您可以找到的大多数相关信息“似乎是为了显示或创建pdf内容而不是修改它”,因为这是绝大多数用例对PDF功能所需要或需要的。

您需要找到可以打开PDF的第三方库,填写AcroForm字段,然后删除PDF。我在Java上使用iText(还有用于C#的iTextSharp)但我不知道Objective-C的任何内容。

找到该库后,您需要将其集成到您的项目中。对于您正在使用的任何版本的SDK,毫无疑问,这里有几个相关的问题/答案。

答案 1 :(得分:0)

使用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();"];

您需要创建两个UILabel或UITextField,并在.h文件中将其命名为“field2”和“field2”。然后,您可以找到需要替换的字段的ID,例如#field1然后把它放在我放“#field1”的地方,然后再放到我放“#field2”的第二个字段。还需要有一个已加载页面的UIWebView。在加载UIWebView页面后,将使用此代码。也许做以下事情:

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

// Insert above code here

}

如果您想对整个表单执行此操作,您可能需要完全了解Javascript,但这应该可以帮助您入门。

希望对你有所帮助。