/// <summary>
        /// Genera un codigo de barras a partir de la data especificada y lo guarda como imagen en formato .png
        /// </summary>
        /// <param name="data">Los datos que se van a codificar.</param>
        /// <param name="fullPathDirectory">El directorio de salida de la imagen.</param>
        /// <returns>Devuelve un número entero positivo o negativo.</returns>
        public int GenerateBarCodeAsPNG(string data, string fullPathDirectory, bool rotate)
        {
            try
            {
                var directory = fullPathDirectory.Substring(fullPathDirectory.Length - 1, 1) != "\\" ? fullPathDirectory = fullPathDirectory + "\\" : fullPathDirectory;

                string fileName = $"{directory}barCode.png";
                var    barCode  = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128);
                var    result   = barCode.SaveAsPng(fileName);

                if (rotate)
                {
                    DocumentProcessor.RotateImage(result.ToBitmap(), fileName);
                }

                return((int)TypesEvent.SuccessProccess);
            }
            catch (IronBarCodeEncodingException encex)
            {
                var message = encex.Message;

                if (message.Contains("Bad character in input"))
                {
                    return((int)TypesEvent.BadCharacter);
                }
                else if (message.Contains("Contents length should be between 1 and 80 characters"))
                {
                    return((int)TypesEvent.ContentLength);
                }
                else
                {
                    return((int)TypesEvent.ErrorGeneric);
                }
            }
            catch (Exception)
            {
                return((int)TypesEvent.ErrorGeneric);
            }
        }
        /// <summary>
        /// Agregar o inserta la imagen de la firma en el documento especificado.
        /// </summary>
        /// <param name="documentConfig">Es la configuración del documento.</param>
        /// <param name="signatureConfig">Es la configuración de la firma.</param>
        /// <returns>Devuelve un entero positivo o negativo que indica si el proceso se completo o no.</returns>
        public int AddSignatureInDocument(DocumentConfig documentConfig, SignatureConfig signatureConfig)
        {
            int output = 0;

            try
            {
                if (!documentConfig.FullPathTemplate.FileExist())
                {
                    output = (int)TypesEvent.FileNotFound;
                    return(output);
                }

                Document document = new Document(documentConfig.FullPathTemplate);

                var fieldSignatures = DocumentProcessor.FindFieldByKeyWord(document, signatureConfig.FieldSignatureName);

                if (fieldSignatures == null)
                {
                    output = (int)TypesEvent.FieldNotFound;
                    return(output);
                }

                string fieldSignature = DocumentProcessor.GetFieldNameInMergedField(fieldSignatures.DisplayResult);
                document.InsertImageInDocument(signatureConfig.FullPathImage, fieldSignature, signatureConfig.Width, signatureConfig.Height);

                if (!string.IsNullOrEmpty(signatureConfig.FieldFooterName))
                {
                    var footerField = DocumentProcessor.FindFormFieldByKeyWord(document, signatureConfig.FieldFooterName);

                    if (footerField == null)
                    {
                        output = (int)TypesEvent.FieldNotFound;
                        return(output);
                    }

                    footerField.Result = signatureConfig.FieldFooterValue;
                }

                return(document.SaveDocument(documentConfig.FullPathDirectory, documentConfig.FileName, ".docx"));
            }
            catch (UnsupportedFileFormatException)
            {
                output = (int)TypesEvent.UnsupportedFileFormat;
            }
            catch (FileCorruptedException)
            {
                output = (int)TypesEvent.FileCorrupted;
            }
            catch (IOException ioex)
            {
                var message = ioex.Message.ToLower();

                if (message.Contains("porque está siendo utilizado en otro proceso"))
                {
                    output = (int)TypesEvent.DocumentInOtherProccess;
                }
                else
                {
                    output = (int)TypesEvent.ErrorGeneric;
                }
            }
            catch (Exception ex)
            {
                output = (int)TypesEvent.ErrorGeneric;
            }

            return(output);
        }