我们有一个使用Supergoo的ABCPDF版本6.1.1.2的VB.NET程序。我们的程序采用标准XML字符串,并将值放在模板PDF上的相应PDF表单字段中。
问题:
我们有超过3000个PDF文件,这些文件都被标记为"与表单字段。模板PDF上最多可以有50个表单字段,总共可能使用大约150,000个表单字段。我们注意到其中一些表单字段的表单字段公共属性设置为隐藏错误。 (见截图)
问题是添加了字符串值后返回的PDF没有显示出来。对吧?修复表单字段属性并将其调用完成。但是,没有办法知道其他150,000个表单字段中有多少其他字段被标记为不正确。
有谁知道我是否可以调整PDF生成程序来强制忽略该表单字段的公共属性?以下是我希望略微改变的vb.net代码示例...
Dim theDoc As Doc = New Doc
theDoc.Form.Fields("SampleFieldName").?????? 'can we set something here to ignore the hidden property?
答案 0 :(得分:0)
根据文件 http://www.websupergoo.com/helppdfnet/source/6-abcpdf.objects/field/2-properties/page.htm
Field对象的.Page属性将告诉您该字段所在的页面。由于Page是一个类,如果结果是“什么都没有”。然后你知道该字段不可见,因为它不会出现在PDF文档的任何页面上。
请注意,使用未隐藏但在渲染时实际不可见的字段时会有一些注意事项(太小,分布在两页等)。如果您需要处理,您可能会对http://www.websupergoo.com/helppdfnet/source/6-abcpdf.objects/field/2-properties/rect.htm感兴趣,具体取决于您的用例。
答案 1 :(得分:0)
对于ABCPDF v6软件,我通过Mihai的建议发现它是可能的。我已经编写了这个C#的例子,希望它可以帮助有人在路上......
static void SetFillableFieldsToWriteableExample(string origFileLocation, string newFileLocation)
{
Doc theDoc = new Doc();
theDoc.Read(origFileLocation);
var theFields = theDoc.Form.GetFieldNames();
foreach (string theField in theFields)
{
Field theFieldInstance = theDoc.Form[theField];
theDoc.SetInfo(theFieldInstance.ID, "/F", "4");
}
theDoc.Save(newFileLocation);
}
我已对此进行了测试,当所有字段都是PDF上的文本字段时,它都有效。不确定其他字段类型。
此代码不应在此处编写的生产环境中使用。无法保证origFileLocation或newFileLocation引用PDF并且不会在其他问题中处理错误。这仅用于演示目的。