Я использую библиотеку iText для генерации pdf-файлов на Java. Я пишу данные в pdfptable, как я могу сделать границы таблицы невидимыми?Невидимая граница pdfptable
ответ
Пограничные элементы PdfPTable определяются PdfPCell, которые добавляются к таблице. Каждая ячейка будет иметь свой собственный стиль/форматирование. Вот API: http://api.itextpdf.com/
Пример
PdfPTable table = new PdfPTable(2);
PdfPCell cellOne = new PdfPCell(new Phrase("Hello"));
PdfPCell cellTwo = new PdfPCell(new Phrase("World"));
cellOne.setBorder(Rectangle.NO_BORDER);
cellOne.setBackgroundColor(new Color(255,255,45));
cellTwo.setBorder(Rectangle.BOX);
table.addCell(cellOne);
table.addCell(cellTwo);
Если вы хотите более подробно о значениях/Прямоугольник границ, посмотрите на постоянные значения раздела IText для прямоугольника, здесь: http://api.itextpdf.com/constant-values.html
PdfPTable nestedTable = new PdfPTable();
nestedTable.DefaultCell.Border = 0;
nestedTable.AddCell(new Phrase("First");
nestedTable.AddCell(new Phrase("Second");
nestedTable.AddCell(new Phrase("2515");
PdfPCell nestCell= new PdfPCell(nestedTable);
'nestedTable.DefaultCell.Border = 0;' - это просто не выглядит правильным. После тестирования я также обнаружил, что это не сработает. Если свойства DefaultCell и Border не являются общедоступными, это никогда не сможет работать. – wmdvanzyl
Он может работать, но только в C# (видя случай вызовов свойств и методов), в то время как OP задал вопрос о решении Java. Кроме того, в строках 4-6 отсутствуют скобки. – mareckmareck
В моем приложении работает следующим образом:
PdfPTable table = new PdfPTable(2);
table.getDefaultCell().setBorder(0);
...
Это не сработало для меня. – wmdvanzyl
'Rectangle.NO_BORDER' - это то же самое, что и' 0'. Я бы предпочел использовать имя константы, более удобное для чтения и всегда совместимое при обновлении версии. – chillworld
Этот метод не работает в версии 5.5.6. Ответ Шона верен: cellOne.setBorder (Rectangle.NO_BORDER); –
Ниже работает для меня.
table.getDefaultCell().setBorderWidth(0f);
Нет, он не работает –
комплект ячейка цвет белый. cellOne.setBorderColor (BaseColor.WHITE);
Спасибо, это то, что я хотел. – yogsma
Я пробовал как самостоятельно, так и оба, кажется, делают границу невидимой. В чем же разница между 'cellOne.setBorder (Rectangle.NO_BORDER);' и 'cellTwo.setBorder (Rectangle.BOX);'? – Qohelet
спасибо, работа хорошо !! –