2017-02-21 10 views
0

Недавно я обновил проект iText7 с 7.0.1 до 7.0.2. После этого я попытался перестроить свой проект и выполнить модульный тест. Тест модуля дал мне ошибку, затем я попытался отладить модульный тест. В результате возникает странное исключение, которое я никогда не находил раньше ... код такой же, но работать плавно v7.0.1, но ниже исключением был пойман на v7.0.2:Документ не удалось добавить объект таблицы на iText 7.0.2

Exception сообщения:

«Объект, имеющий нулевое значение, должен иметь значение».

Исключение StackTrace:

на System.ThrowHelper.ThrowInvalidOperationException (ExceptionResource ресурсов) в iText.Layout.Renderer.TableRenderer.Layout (LayoutContext layoutContext) в iText.Layout.Renderer.RootRenderer.AddChild (IRenderer рендерер) в iText.Layout.RootElement`1.Add (IBlockElement элемент) в iText.Layout.Document.Add (IBlockElement элемент) в KMK_Core.Core._Core_PrintKMK() в C: \ Users \ Jeffry Angtoni \ Source \ Repos \ kmk-core-ng \ KMK NG \ KMK Core \ Core.cs: строка 332

Ниже мой стол генератор кода:

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); 

Ниже моя _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; 
} 

Является ли это ошибка от v7.0.2, поскольку v7.0.1 успешно работает приведенный выше код ...? Я также проверил, что объект Table не является нулевым, но исключение указывает, что объект может быть пустым ... Любая подсказка или решение для этого исправления ...?

ответ

1

К сожалению, это действительно ошибка в 7.0.2, которая связана с неправильной обработкой относительного позиционирования для таблиц и присутствует как на Java, так и на C#. Он уже исправлен, но исправление будет доступно только в версии 7.0.3. Тем не менее, вы всегда можете скачать версию моментального снимка (также известную как 7.0.2.1 в C#) из Artifactory.

+0

Хорошо ... Я буду ждать следующей версии ... На данный момент я откатываюсь до версии v7.0.1, так как код запускается успешно .... – user3658777

Смежные вопросы