Есть две вещи, которые вызывают эффект, который вы описали.
- Вы используете
cell.setUseVariableBorders(true);
, что означает, что вы хотите, чтобы ширина границы быть внутри клетка. Если две соседние ячейки имеют границу рядом друг с другом, у вас будет две границы с шириной 1 пользовательской единицы рядом друг с другом, в результате чего будет выглядеть граница с шириной в 2 пользовательских единицы.
- Если вы удалите линию
cell.setUseVariableBorders(true);
, то две границы будут нарисованы, но они будут перекрываться. Технически, две перекрывающиеся границы толщиной в 1 пользовательский блок должны привести к тому, что будет выглядеть как единая граница с 1 единиц пользовательского блока, но некоторые зрители в формате PDF делают перекрывающиеся границы немного толще, чем они должны быть.
Как это решить?
Ну, вы, кажется, новичок в iText, так почему бы не переключиться на iText 7? В iText 7 проблема пересекающихся границ решена. Все это объясняется в Chapter 5 of the iText 7 "building blocks" tutorial
Если вы не можете переключиться на iText 7, но вы застряли с iText 5, вам нужно удалить строку cell.setUseVariableBorders(true);
, и если этого недостаточно, удалите одну из перекрывающихся границ ,
Граница имеет двойную ширину, потому что 2 клетки касаются там, так что у вас есть две границы, касающиеся друг друга. Ваша проблема заключается в том, что они не перекрываются, а отталкиваются друг от друга. Если вы можете установить, какие ячейки касаются, вы можете удалить границу для нижней или правой части ячеек. Итак, Cell 2 касается Cell1, а затем не добавляет границы для левой ячейки Cell 2. Но Cell 2 не находится ниже любой ячейки, поэтому держите верхнюю границу. – gabeio
Они не перекрываются, они становятся «смежными» с другими, что указывает на толщину «границы», чем другие. –
Да, абсолютно @jackjay. У вас есть какое-то решение для этого, которое работает с itext5. –