#region PDFsharp - A .NET library for processing PDF // // Authors: // Stefan Lange // // Copyright (c) 2005-2017 empira Software GmbH, Cologne Area (Germany) // // http://www.pdfsharp.com // http://sourceforge.net/projects/pdfsharp // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. #endregion namespace PdfSharp.Pdf.AcroForms { /// /// Represents an interactive form (or AcroForm), a collection of fields for /// gathering information interactively from the user. /// public sealed class PdfAcroForm : PdfDictionary { /// /// Initializes a new instance of AcroForm. /// internal PdfAcroForm(PdfDocument document) : base(document) { _document = document; } internal PdfAcroForm(PdfDictionary dictionary) : base(dictionary) { } /// /// Gets the fields collection of this form. /// public PdfAcroField.PdfAcroFieldCollection Fields { get { if (_fields == null) { object o = Elements.GetValue(Keys.Fields, VCF.CreateIndirect); _fields = (PdfAcroField.PdfAcroFieldCollection)o; } return _fields; } } PdfAcroField.PdfAcroFieldCollection _fields; /// /// Predefined keys of this dictionary. /// The description comes from PDF 1.4 Reference. /// public sealed class Keys : KeysBase { // ReSharper disable InconsistentNaming /// /// (Required) An array of references to the document’s root fields (those with /// no ancestors in the field hierarchy). /// [KeyInfo(KeyType.Array | KeyType.Required, typeof(PdfAcroField.PdfAcroFieldCollection))] public const string Fields = "/Fields"; /// /// (Optional) A flag specifying whether to construct appearance streams and /// appearance dictionaries for all widget annotations in the document. /// Default value: false. /// [KeyInfo(KeyType.Boolean | KeyType.Optional)] public const string NeedAppearances = "/NeedAppearances"; /// /// (Optional; PDF 1.3) A set of flags specifying various document-level characteristics /// related to signature fields. /// Default value: 0. /// [KeyInfo("1.3", KeyType.Integer | KeyType.Optional)] public const string SigFlags = "/SigFlags"; /// /// (Required if any fields in the document have additional-actions dictionaries /// containing a C entry; PDF 1.3) An array of indirect references to field dictionaries /// with calculation actions, defining the calculation order in which their values will /// be recalculated when the value of any field changes. /// [KeyInfo(KeyType.Array)] public const string CO = "/CO"; /// /// (Optional) A document-wide default value for the DR attribute of variable text fields. /// [KeyInfo(KeyType.Dictionary | KeyType.Optional)] public const string DR = "/DR"; /// /// (Optional) A document-wide default value for the DA attribute of variable text fields. /// [KeyInfo(KeyType.String | KeyType.Optional)] public const string DA = "/DA"; /// /// (Optional) A document-wide default value for the Q attribute of variable text fields. /// [KeyInfo(KeyType.Integer | KeyType.Optional)] public const string Q = "/Q"; /// /// Gets the KeysMeta for these keys. /// internal static DictionaryMeta Meta { get { if (s_meta == null) s_meta = CreateMeta(typeof(Keys)); return s_meta; } } static DictionaryMeta s_meta; // ReSharper restore InconsistentNaming } /// /// Gets the KeysMeta of this dictionary type. /// internal override DictionaryMeta Meta { get { return Keys.Meta; } } } }