2017-02-21 2 views
0

J'ai récemment mis à niveau mon projet iText7 de 7.0.1 à 7.0.2. Après cela, j'ai essayé de reconstruire mon projet et j'ai fait le test unitaire. Le test unitaire m'a donné une erreur, puis j'ai essayé de déboguer le test unitaire. Le résultat est qu'il ya une exception bizarre que je ne trouvais jamais auparavant ... Le code est le même, mais il fonctionne en douceur sur v7.0.1, mais au-dessous exception a été pris sur v7.0.2:Le document n'a pas réussi à ajouter un objet Table sur iText 7.0.2

Message d'exception:

"L'objet nullable doit avoir une valeur."

Exception StackTrace:

à System.ThrowHelper.ThrowInvalidOperationException (ExceptionResource ressources) à iText.Layout.Renderer.TableRenderer.Layout (LayoutContext layoutContext) à iText.Layout.Renderer.RootRenderer.AddChild (IRenderer rendu) à iText.Layout.RootElement`1.Add (élément IBlockElement) à iText.Layout.Document.Add (élément IBlockElement) à KMK_Core.Core._Core_PrintKMK() dans C: \ Users \ Jeffry Angtoni \ Source \ Repos \ kmk-noyau-ng \ KMK NG \ KMK Core \ Core.cs: ligne 332

est Ci-dessous ma table code générateur:

Table tblStudentIdentity = new Table(new float[] { 3.5f, .2f, 5f }); 
tblStudentIdentity.SetWidthPercent(80f); 

_Core_SetIdentityTableValue(ref tblStudentIdentity, "NAMA", "Name", "LEONARDO DICAPRIO"); 
_Core_SetIdentityTableValue(ref tblStudentIdentity, "NIM", "Student Number", "1301566255"); 
_Core_SetIdentityTableValue(ref tblStudentIdentity, "FAKULTAS/SEKOLAH", "Faculty/School", "", "School of Computer Science"); 

tblStudentIdentity.SetRelativePosition(115f, 20f, 0f, 0f); 
_doc.Add(tblStudentIdentity); 

ci-dessous est ma fonction _Core_SetIdentityTableValue:

private int _Core_SetIdentityTableValue(ref Table tableObject, string LeftLabelID = "", string LeftLabelEN = "", string RightValueID = "", string RightValueEN = "") 
{ 
    int Result = 0; 
    Text txtOpenInfo = new Text("(").AddStyle(StyleHelper.lblIDStyle); 
    Text txtCloseInfo = new Text(")").AddStyle(StyleHelper.lblIDStyle); 
    Text txtColonInfo = new Text(":").AddStyle(StyleHelper.lblIDStyle); 

    Paragraph lblLeftPrgrh = new Paragraph(); 
    if (LeftLabelEN != "" && LeftLabelID != "") 
    { 
     Text lblID = new Text(LeftLabelID + " ").AddStyle(StyleHelper.lblIDStyle); 
     Text lblEN = new Text(LeftLabelEN).AddStyle(StyleHelper.lblENStyle); 
     lblLeftPrgrh.Add(lblID).Add(txtOpenInfo).Add(lblEN).Add(txtCloseInfo); 
    }else if (LeftLabelEN == "" && LeftLabelID != "") 
    { 
     Text lblID = new Text(LeftLabelID).AddStyle(StyleHelper.lblIDStyle); 
     lblLeftPrgrh.Add(lblID); 
    }else if (LeftLabelEN != "" && LeftLabelID == "") 
    { 
     Text lblEN = new Text(LeftLabelEN).AddStyle(StyleHelper.lblENStyle); 
     lblLeftPrgrh.Add(lblEN); 
    }else 
    { 
     Text lblErrorLeft = new Text("Error-NoValue"); 
     lblLeftPrgrh.Add(lblErrorLeft); 
     Result = 1; 
    } 

    Paragraph lblRightPrgrh = new Paragraph(); 
    if (RightValueEN != "" && RightValueID != "") 
    { 
     Text lblValID = new Text(RightValueID + " ").AddStyle(StyleHelper.lblIDStyle); 
     Text lblValEN = new Text(RightValueEN).AddStyle(StyleHelper.lblENStyle); 
     lblRightPrgrh.Add(lblValID).Add(txtOpenInfo).Add(lblValEN).Add(txtCloseInfo); 
    }else if (RightValueEN == "" && RightValueID != "") 
    { 
     Text lblValID = new Text(RightValueID).AddStyle(StyleHelper.lblIDStyle); 
     lblRightPrgrh.Add(lblValID); 
    }else if (RightValueEN != "" && RightValueID == "") 
    { 
     Text lblValEN = new Text(RightValueEN).AddStyle(StyleHelper.lblENStyle); 
     lblRightPrgrh.Add(lblValEN); 
    }else 
    { 
     Text lblValError = new Text("Error-NoValue"); 
     lblRightPrgrh.Add(lblValError); 
     Result = 1; 
    } 

    Paragraph lblCenterPrgrh = new Paragraph(txtColonInfo); 

    Cell cellLeft = new Cell(); 
    cellLeft.Add(lblLeftPrgrh) 
     .SetBorder(Border.NO_BORDER) 
     .SetVerticalAlignment(VerticalAlignment.TOP); 
    Cell cellMiddle = new Cell(); 
    cellMiddle.Add(lblCenterPrgrh) 
     .SetBorder(Border.NO_BORDER) 
     .SetVerticalAlignment(VerticalAlignment.TOP); 
    Cell cellRight = new Cell(); 
    cellRight.Add(lblRightPrgrh) 
     .SetBorder(Border.NO_BORDER) 
     .SetVerticalAlignment(VerticalAlignment.TOP); 
    tableObject.AddCell(cellLeft).AddCell(cellMiddle).AddCell(cellRight); 
    return Result; 
} 

Est-ce un bug de v7.0.2 depuis v7.0.1 est en cours d'exécution avec succès le code ci-dessus ...? J'ai également vérifié que l'objet Table n'est pas null, mais l'exception indique que l'objet peut être null ... Toute idée ou solution pour ce correctif ...?

Répondre

1

Malheureusement, il s'agit effectivement d'un bogue dans 7.0.2 qui est lié au traitement incorrect du positionnement relatif des tables et est présent dans Java et C#. Il a déjà été corrigé, mais le correctif ne sera disponible que dans la version 7.0.3. Cependant, vous pouvez toujours télécharger la version instantanée (également connue sous le nom 7.0.2.1 en C#) du Artifactory.

+0

Ok ... Je vais attendre la prochaine version ... Pour l'instant, je reviendrai à v7.0.1 puisque le code fonctionne avec succès .... – user3658777