2015-05-29 5 views
0

Я использую iText для создания PDF-файла из данных таблицы. Фактически я могу сгенерировать PDF-файл с помощью отдельной таблицы. Но я не знаю, как создать вторую таблицу в том же файле PDF. Когда я попытался это сделать, вторая таблица появится как часть первой таблицы.Несколько таблиц в PDF-отчет на Java с помощью iText

String date = DateUtils.getTimestamp().toString(); 
date = date.replace(" ", "_"); 
date = date.replace(":", "_"); 
date = "d:/CompareDeal_" + date + ".pdf" ; 

Document my_pdf_report = new Document(); 
PdfWriter.getInstance(my_pdf_report, new FileOutputStream(date)); 
my_pdf_report.open(); 

PdfPTable my_report_table = new PdfPTable(5); // CREATING TABLE rt 
PdfPCell table_cell; 
String blank_column = ""; 
table_cell=new PdfPCell(new Phrase(blank_column)); 
my_report_table.addCell(table_cell); // rt row 1 column 1 

String deal1_plan="Deal1:Plan"; 
table_cell=new PdfPCell(new Phrase(deal1_plan)); 
my_report_table.addCell(table_cell); // rt row 1 column 2 

String deal1_actual="Deal1:Actual"; 
table_cell=new PdfPCell(new Phrase(deal1_actual)); 
my_report_table.addCell(table_cell); // rt row 1 column 3 

String deal2_plan="Deal2:Plan"; 
table_cell=new PdfPCell(new Phrase(deal2_plan)); 
my_report_table.addCell(table_cell); // rt row 1 column 4 

String deal2_actual="Deal2:Actual"; 
table_cell=new PdfPCell(new Phrase(deal2_actual)); 
my_report_table.addCell(table_cell); // rt row 1 column 5 

table_cell=new PdfPCell(new Phrase("Revenue(M$)")); 
my_report_table.addCell(table_cell); // rt row 2 column 1 

String planRevenue1 = StringUtils.convertToString(StringUtils.formatForNull(model.getPlanRevenue1(), "-", "")); 
table_cell=new PdfPCell(new Phrase(planRevenue1)); 
my_report_table.addCell(table_cell); // rt row 2 column 2 

String actualRevenue1 = StringUtils.convertToString(StringUtils.formatForNull(model.getActualRevenue1(), "-", "")); 
table_cell=new PdfPCell(new Phrase(actualRevenue1)); 
my_report_table.addCell(table_cell); // rt row 2 column 3 

String planRevenue2 = StringUtils.convertToString(StringUtils.formatForNull(model.getPlanRevenue2(), "-", "")); 
table_cell=new PdfPCell(new Phrase(planRevenue2)); 
my_report_table.addCell(table_cell); // rt row 2 column 4 

String actualRevenue2 = StringUtils.convertToString(StringUtils.formatForNull(model.getActualRevenue2(), "-", "")); 
table_cell=new PdfPCell(new Phrase(actualRevenue2)); 
my_report_table.addCell(table_cell); // rt row 2 column 5 

table_cell=new PdfPCell(new Phrase("PPM")); 
my_report_table.addCell(table_cell); // rt row 3 column 1 

String planPpm1 = StringUtils.convertToString(StringUtils.convertToUSFormat(model.getPlanPpm1(),StringUtils.DEFAULT_EMPTY_STRING),StringUtils.DEFAULT_EMPTY_STRING); 
table_cell=new PdfPCell(new Phrase(planPpm1)); 
my_report_table.addCell(table_cell); // rt row 3 column 2 

String actualPpm1 = StringUtils.convertToString(StringUtils.convertToUSFormat(model.getActualPpm1(),StringUtils.DEFAULT_EMPTY_STRING),StringUtils.DEFAULT_EMPTY_STRING); 
table_cell=new PdfPCell(new Phrase(actualPpm1)); 
my_report_table.addCell(table_cell); // rt row 3 column 3 

String planPpm2 = StringUtils.convertToString(StringUtils.convertToUSFormat(model.getPlanPpm2(),StringUtils.DEFAULT_EMPTY_STRING),StringUtils.DEFAULT_EMPTY_STRING); 
table_cell=new PdfPCell(new Phrase(planPpm2)); 
my_report_table.addCell(table_cell); // rt row 3 column 4 

String actualPpm2 = StringUtils.convertToString(StringUtils.convertToUSFormat(model.getActualPpm2(),StringUtils.DEFAULT_EMPTY_STRING),StringUtils.DEFAULT_EMPTY_STRING); 
table_cell=new PdfPCell(new Phrase(actualPpm2)); 
my_report_table.addCell(table_cell);// rt row 3 column 5 

table_cell=new PdfPCell(new Phrase("Rev per FTE($)")); 
my_report_table.addCell(table_cell); // rt row 4 column 1 
String planFte1 = StringUtils.convertToString(StringUtils.formatForNull(model.getPlanFte1(), "-", "")); 
table_cell=new PdfPCell(new Phrase(planFte1)); 
my_report_table.addCell(table_cell); // rt row 4 column 2 

String actualFte1 = StringUtils.convertToString(StringUtils.formatForNull(model.getActualFte1(), "-", "")); 
table_cell=new PdfPCell(new Phrase(actualFte1)); 
my_report_table.addCell(table_cell); // rt row 4 column 3 

String planFte2 = StringUtils.convertToString(StringUtils.formatForNull(model.getPlanFte2(), "-", "")); 
table_cell=new PdfPCell(new Phrase(planFte2)); 
my_report_table.addCell(table_cell); // rt row 4 column 4 

String actualFte2 = StringUtils.convertToString(StringUtils.formatForNull(model.getActualFte2(), "-", "")); 
table_cell=new PdfPCell(new Phrase(actualFte2)); 
my_report_table.addCell(table_cell); // rt row 4 column 5 

my_pdf_report.add(my_report_table); // ADDING TABLE rt 
PdfPTable my_report_table1 = new PdfPTable(5); // CREATING TABLE t1 
PdfPCell table_cell1; 
String blank_column1 = ""; 
table_cell1=new PdfPCell(new Phrase(blank_column1)); 
my_report_table1.addCell(table_cell1); // t2 row 1 column 1 

String deal1_plan1="Deal1:Plan"; 
table_cell1=new PdfPCell(new Phrase(deal1_plan1)); 
my_report_table1.addCell(table_cell1); // t2 row 1 column 2 

String deal1_actual1="Deal1:Actual"; 
table_cell1=new PdfPCell(new Phrase(deal1_actual1)); 
my_report_table1.addCell(table_cell1); // t2 row 1 column 3 

String deal2_plan1="Deal2:Plan"; 
table_cell1=new PdfPCell(new Phrase(deal2_plan1)); 
my_report_table1.addCell(table_cell1); // t2 row 1 column 4 

String deal2_actual1="Deal2:Actual"; 
table_cell1=new PdfPCell(new Phrase(deal2_actual1)); 
my_report_table1.addCell(table_cell1); // t2 row 1 column 5 

my_pdf_report.add(my_report_table1); // ADDING TABLE r1 
my_pdf_report.close(); 

До сих пор это то, что я сделал.

Можно ли добавлять стили в таблицу, сгенерированную как размер шрифта и цвет шрифта?

+0

Работает ли код? Согласно исходному коду вы добавляете две таблицы. – reporter

+0

Да. Работает. –

ответ

0

Сначала я не понял ваш вопрос. Я обновил ваш код с некоторыми комментариями, чтобы я мог лучше понять, где вы создаете, заполняете и добавляете таблицу. Я мог ясно видеть, что вы добавляете две разные таблицы, и я не понимал, почему вы утверждаете, что вторая таблица идет как часть первой таблицы. Вы добавляете две разные таблицы.

Однако, возможно, ваши глаза обманывают вас. Возможно, вы видите только один стол, потому что между таблицей, помеченной как , нет лишнего места, а таблица I отмечена как t1. Это можно легко исправить, как это:

PdfPTable my_report_table = new PdfPTable(5); 
my_report_table.setSpacingAfter(10); 

Это добавит некоторое дополнительное пространство после того, как за столом я обозначенному rt, более конкретно, то расстояние между rt и t1 будет 10 пользовательских единиц (что по умолчанию около 10 пт).

Другой вариант заключается в добавлении некоторые дополнительные интервалы перед второй таблицы:

PdfPTable my_report_table1 = new PdfPTable(5); 
my_report_table1.setSpacingBefore(10); 

Это добавляет 10 пользовательских единиц пространства перед второй таблицы.

Что касается других сомнений: у меня также есть сомнения. Я сомневаюсь, что вы проконсультировались с бесплатной электронной книгой The Best iText Questions on StackOverflow. В этой книге вы найдете главу «Таблицы» и другую главу «События таблицы». В этих главах вы найдете ответы на такие вопросы, как:

Ваш второй вопрос слишком широк для StackOverflow. Пожалуйста, проконсультируйтесь с документацией и вы не найдете ответа там, напишите более конкретный вопрос.

+0

Спасибо, Бруно. Пространство сделало для меня работу. В любом случае я могу добавить абзац между этими двумя таблицами? –

+0

Конечно, вы можете добавить абзац между этими двумя столами! Почему бы вам не попробовать это, прежде чем задавать вопрос. Также: прочитайте [документацию] (http://pages.itextpdf.com/ebook-stackoverflow-questions.html). Я потратил * много часов * написание ответов в этой книге.Было бы обидно, если бы вы сказали * Мне не интересно узнать больше об инструменте, который я использую. * –

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