9
votes

Obtenez la valeur d'exportation d'une case à cocher utilisant iTEXTSHARP

Je travaille sur le remplissage de manière dynamique dans les champs d'un document PDF à l'aide d'ITEXTSTHARP. J'aimerais pouvoir déterminer la "valeur d'exportation" de la case à cocher CodeBeHind afin de déterminer quelle valeur à envoyer à cette case s'il doit être vérifié. La plupart des documents que j'ai travaillé dans le passé avaient la même valeur d'exportation pour chaque case à cocher, mais celle que je travaille actuellement varie de la case à cocher jusqu'à la case. Je pourrais parcourir toutes les zones de texte et les rendre cohérents, mais cela économiserait beaucoup de temps à l'avenir si je pouvais simplement déterminer la valeur d'exportation de ces cases à cocher à l'exécution et les définir en conséquence.

Merci d'avance !

J'ai essayé de mettre en œuvre la solution ci-dessous dans C # et avez fini par le code suivant: xxx

ceci vient de retourner "/ d" tous les temps . Je ne sais pas si l'approche doit être différente en C # ou si je manque tout simplement quelque chose.


3 commentaires

@Lorenzo - Je pense que vous devez cesser de vous occuper de la manière dont les autres utilisent autant le site


@Lorenzo, je ne suis pas sûr de ce que je devrais lire dans la FAQ?


C'est un extrait de la FAQ lorsqu'il s'agit d'expliquer comment accepter une réponse: [...] Cela permet à d'autres personnes savoir que vous avez reçu une bonne réponse à votre question. Faire cela est utile car il montre d'autres personnes que vous obtenez de la valeur de la communauté. (Si vous ne le faites pas, les gens vous demanderont souvent poliment de revenir en arrière et d'accepter des réponses pour plus de vos questions!) .


4 Réponses :


12
votes

8 commentaires

Mark - J'ai admiré votre expertise IText sur la liste "Itext-Questions" et je suis Gflad que vous partagez une partie de cela ici.


Merci Mark, cela ressemble exactement à ce que je cherchais.


J'ai essayé de mettre en œuvre cela et j'ai fini par le code ci-dessus. Pour une raison quelconque, cette approche ne fonctionne pas pour moi. Des pensées?


Je reçois "/ d" pour la valeur d'exportation à chaque fois. La première caisse dans l'apparition de l'apparition.Keys revient toujours comme! = À pdfname.off et c'est toujours "/ d". Des pensées?


Oups. Manqué un niveau d'imbrication. Je vais réparer la réponse


Le code Marks fonctionne génial, sauf lorsque plusieurs cases à cocher sont liées à un nom de champ. Dans C #, j'utilise acrofields.getappeRancestates (fldname) pour obtenir une gamme de chaînes de valeurs possibles.


Oh! Faites-le le moyen facile ... je vois comment c'est. (Je soupçonne que le code pour getappearcanestates sera remarquablement comme ce que j'ai écrit ci-dessus).


Et si j'ai un groupe de boutons radio et que j'ai envie de le peuplir? Stackoverflow.com/ Questions / 24063439 / ...



5
votes

La meilleure façon que j'ai trouvée pour définir une case à cocher est la suivante: xxx

erreur: La séquence contient plus d'un élément

E.g: xxx


1 commentaires

Qu'en est-il du groupe de boutons radio? Stackoverflow.com/ Questions / 24063439 / ...



0
votes

C'était la méthode finale que j'ai utilisée pour le faire fonctionner en fonction des autres:

    public string GetCheckBoxExportValue(AcroFields fields, string cbFieldName)
    {
        AcroFields.Item item = fields.GetFieldItem(cbFieldName);
        if (item.values.Count > 0)
        {
            PdfDictionary valueDict = item.values[0] as PdfDictionary;
            PdfDictionary appDict = valueDict.GetAsDict(PdfName.AP);

            if (appDict != null)
            {
                PdfDictionary normalApp = appDict.GetAsDict(PdfName.N);

                foreach (PdfName curKey in normalApp.Keys)
                {
                    if (!PdfName.OFF.Equals(curKey))
                    {
                        // string will have a leading '/' character
                        return curKey.ToString(); 
                    }
                }
            }

            PdfName curVal = valueDict.GetAsName(PdfName.AS);
            if (curVal != null)
            {
                return curVal.ToString();
            }

        }

        return null;
    }


0 commentaires

0
votes

Je n'ai pas pu obtenir la marque de réponse à travailler pour moi parce que l'apparition était toujours nulle. Voici une méthode que j'ai écrite qui fonctionne pour la case à cocher et les contrôles de Radiobutton sur les formulaires que je traite. xxx


0 commentaires