2017-01-13 2 views
1

Как выделено в границах изображения, которые накладываются друг на друга, выглядят толще, чем другие границы ячеек. код я использовал для нанесения на границу каждой ячейки:Что такое пограничное поведение, если границы перекрываются? (Таблица-ячейка, ячейка ячейки)

cell.setUseVariableBorders(true); 
cell.setBorderWidthLeft(1); 
cell.setBorderWidthBottom(1); 
cell.setBorderWidthRight(1); 
cell.setBorderWidthTop(1); 

enter image description here

+1

Граница имеет двойную ширину, потому что 2 клетки касаются там, так что у вас есть две границы, касающиеся друг друга. Ваша проблема заключается в том, что они не перекрываются, а отталкиваются друг от друга. Если вы можете установить, какие ячейки касаются, вы можете удалить границу для нижней или правой части ячеек. Итак, Cell 2 касается Cell1, а затем не добавляет границы для левой ячейки Cell 2. Но Cell 2 не находится ниже любой ячейки, поэтому держите верхнюю границу. – gabeio

+0

Они не перекрываются, они становятся «смежными» с другими, что указывает на толщину «границы», чем другие. –

+0

Да, абсолютно @jackjay. У вас есть какое-то решение для этого, которое работает с itext5. –

ответ

0

Есть две вещи, которые вызывают эффект, который вы описали.

  1. Вы используете cell.setUseVariableBorders(true);, что означает, что вы хотите, чтобы ширина границы быть внутри клетка. Если две соседние ячейки имеют границу рядом друг с другом, у вас будет две границы с шириной 1 пользовательской единицы рядом друг с другом, в результате чего будет выглядеть граница с шириной в 2 пользовательских единицы.
  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);, и если этого недостаточно, удалите одну из перекрывающихся границ ,

+0

Даже после удаления cell.setUseVariableBorders (true); line, он показывает то же поведение с itext 5. –

+0

Это может быть вызвано зрителем (как я объяснил). Возможные решения, которые я предложил, остаются: удалить одну границу одной из соседних ячеек или обновить до iText 7 –

+0

Он отлично работает с itext7, но эта версия несовместима с itext5. –

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