ABC PDF版本6.0表单字段只读

时间:2015-09-09 18:45:22

标签: vb.net pdf-generation abcpdf

我们有一个使用Supergoo的ABCPDF版本6.1.1.2的VB.NET程序。我们的程序采用标准XML字符串,并将值放在模板PDF上的相应PDF表单字段中。

问题:

我们有超过3000个PDF文件,这些文件都被标记为"与表单字段。模板PDF上最多可以有50个表单字段,总共可能使用大约150,000个表单字段。我们注意到其中一些表单字段的表单字段公共属性设置为隐藏错误。 (见截图)enter image description here

问题是添加了字符串值后返回的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?

2 个答案:

答案 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并且不会在其他问题中处理错误。这仅用于演示目的。