public int Initialize(CharsetEncoding pdfPasswordEncoding, int maxPasswordLength, ref string errorMsg)
        {
            int isValid = Constants.Failure;

            CurrentIndex = 0;

            if (this.Count == 0)
            {
                errorMsg = "Please add a regular expression to the list.";
            }
            else
            {
                int validCount = 0;

                while (validCount < this.Count &&
                       this.ElementAt(validCount).Initialize(ref errorMsg) == Constants.Success)
                {
                    validCount++;
                }
                ;

                if (this.Count == validCount)
                {
                    isValid = Constants.Success;
                }
            }

            return(isValid);
        }
Пример #2
0
        /// <summary>
        /// 转换数据为字符串,将数据解码并按字符集编码后返回字符串。
        /// 注意:如果数据为空或不是文本类型的数据,则会返回空字符串。
        /// </summary>
        /// <returns>字符串数据</returns>
        public string ConversionDataToString()
        {
            if (Data.IsNullOrEmpty())
            {
                return(null);
            }
            var d = DecodeData();

            if (d == null)
            {
                return(null);
            }
            return(IsTextContent ? CharsetEncoding.GetString(d) : null);
        }
Пример #3
0
        public int Initialize(CharsetEncoding pdfPasswordEncoding, int maxPasswordLength, ref string errorMsg)
        {
            CurrentIndex = 0;
            errorMsg     = string.Empty;
            int minAllowedPasswordLength = 1;
            int maxAllowedPasswordLength = maxPasswordLength;

            CharactersToUse.Clear();

            ClearAllErrors();

            if (InitialPasswordLength > maxAllowedPasswordLength ||
                InitialPasswordLength < minAllowedPasswordLength)
            {
                errorMsg = string.Format("Initial password must be equal or between {0} and {1} chars.",
                                         minAllowedPasswordLength, maxAllowedPasswordLength);
                SetErrors("InitialPasswordLength", new List <ValidationResult>()
                {
                    new ValidationResult(false, errorMsg)
                });
            }

            if (errorMsg == string.Empty &&
                IncreasePswLength &&
                (MaxPasswordLength > maxAllowedPasswordLength ||
                 MaxPasswordLength <= InitialPasswordLength))
            {
                if (InitialPasswordLength == maxAllowedPasswordLength)
                {
                    errorMsg = string.Format("Cannot increase password beyond initial password of {0} chars.", InitialPasswordLength);
                }
                else if (MaxPasswordLength > maxAllowedPasswordLength)
                {
                    errorMsg = string.Format("Cannot increase password beyond limit of {0} chars.", maxAllowedPasswordLength);
                }
                else
                {
                    errorMsg = string.Format("Max password must be equal or between {0} and {1} chars.", InitialPasswordLength + 1, maxAllowedPasswordLength);
                }

                SetErrors("MaxPasswordLength", new List <ValidationResult>()
                {
                    new ValidationResult(false, errorMsg)
                });
            }

            if (errorMsg == string.Empty &&
                DecreasePswLength &&
                (MinPasswordLength < minAllowedPasswordLength ||
                 MinPasswordLength >= InitialPasswordLength))
            {
                if (InitialPasswordLength == minAllowedPasswordLength)
                {
                    errorMsg = string.Format("Cannot decrease password beyond initial password of {0} chars.", InitialPasswordLength);
                }
                else if (MinPasswordLength < minAllowedPasswordLength)
                {
                    errorMsg = string.Format("Cannot decrease password beyond limit of {0} chars.", minAllowedPasswordLength);
                }
                else
                {
                    errorMsg = string.Format("Min password must be equal or between {0} and {1} chars.", minAllowedPasswordLength, InitialPasswordLength - 1);
                }

                SetErrors("MinPasswordLength", new List <ValidationResult>()
                {
                    new ValidationResult(false, errorMsg)
                });
            }

            if (errorMsg == string.Empty &&
                PasswordEncoding == CharsetEncoding.Ascii &&
                PasswordCharset == Charset.None)
            {
                errorMsg = string.Format("Please specify the charset to use.");
                SetErrors("PasswordCharset", new List <ValidationResult>()
                {
                    new ValidationResult(false, errorMsg)
                });
            }

            if (errorMsg == string.Empty &&
                PasswordEncoding == CharsetEncoding.Unicode)
            {
                if (string.IsNullOrEmpty(UnicodeCharset))
                {
                    errorMsg = string.Format("Please specify the UnicodeCharset to use.");
                }
                else if (pdfPasswordEncoding == CharsetEncoding.Unicode &&
                         !Regex.IsMatch(UnicodeCharset, unicodeRangePattern, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Compiled))
                {
                    errorMsg = string.Format("Please check the charset format.");
                }
                else if (pdfPasswordEncoding == CharsetEncoding.Ascii &&
                         !Regex.IsMatch(UnicodeCharset, asciiUnicodeRangePattern, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Compiled))
                {
                    errorMsg = string.Format("Pdf version only allows ASCII chars [0000 - 00FF].");
                }

                if (errorMsg != string.Empty)
                {
                    SetErrors("UnicodeCharset", new List <ValidationResult>()
                    {
                        new ValidationResult(false, errorMsg)
                    });
                }
            }

            if (IsValid)
            {
                if (PasswordEncoding == CharsetEncoding.Ascii)
                {
                    InitializeAsciiCharset();
                }
                else if (PasswordEncoding == CharsetEncoding.Unicode)
                {
                    InitializeUnicodeCharset();
                }
                InitializeIterator();
            }

            return(base.IsValid ? Constants.Success : Constants.Failure);
        }