Boxable - A java library to build tables in PDF documents.
Boxable is a library that can be used to easily create tables in pdf documents. It uses the PDFBox PDF library under the hood.
- Build tables in pdf documents
- Convert csv data into tables in pdf documents
- Convert Lists into tables in pdf documents
- HTML tags in cell content (not all!
<p>,<i>,<b>,<br>,<ul>,<ol>,<li>) - Horizontal & Vertical Alignment of the text
- Images inside cells and outside table (image scale is also supported)
- basic set of rendering attributes for lines (borders)
- rotated text (by 90 degrees)
- writing text outside tables
<dependency>
<groupId>com.github.dhorions</groupId>
<artifactId>boxable</artifactId>
<version>1.4</version>
</dependency>For other build systems, check the Maven Central Repository.
A tutorial is being created and will be accessible at http://dhorions.github.io/boxable/. If you want to help, please let us know here.
Stringdata = readData("https://s3.amazonaws.com/misc.quodlibet.be/Boxable/Eurostat_Immigration_Applications.csv");
BaseTablepdfTable = newBaseTable(yStart, yStartNewPage, bottomMargin, tableWidth, margin, doc, page, true,true);
DataTablet = newDataTable(pdfTable, page);
t.addCsvToTable(data, DataTable.HASHEADER, ';');
pdfTable.draw();Output : CSVExamplePortrait.pdf
List<List> data = newArrayList();
data.add(newArrayList<>(
Arrays.asList("Column One", "Column Two", "Column Three", "Column Four", "Column Five")));
for (inti = 1; i <= 100; i++) {
data.add(newArrayList<>(
Arrays.asList("Row " + i + " Col One", "Row " + i + " Col Two", "Row " + i + " Col Three", "Row " + i + " Col Four", "Row " + i + " Col Five")));
BaseTabledataTable = newBaseTable(yStart, yStartNewPage, bottomMargin, tableWidth, margin, doc, page, true, true);
DataTablet = newDataTable(dataTable, page);
t.addListToTable(data, DataTable.HASHEADER);
dataTable.draw();
}Output : ListExampleLandscape.pdf
##Build tables in pdf documents
BaseTabletable = newBaseTable(yStart, yStartNewPage, bottomMargin, tableWidth, margin, doc, page, true,
drawContent);
//Create Header rowRow<PDPage> headerRow = table.createRow(15f);
Cell<PDPage> cell = headerRow.createCell(100, "Awesome Facts About Belgium");
cell.setFont(PDType1Font.HELVETICA_BOLD);
cell.setFillColor(Color.BLACK);
table.addHeaderRow(headerRow);
List<String[]> facts = getFacts();
for (String[] fact : facts) {
Row<PDPage> row = table.createRow(10f);
cell = row.createCell((100 / 3.0f) * 2, fact[0] );
for (inti = 1; i < fact.length; i++) {
cell = row.createCell((100 / 9f), fact[i]);
}
}
table.draw();If table is displayed on multiple pages the current page can be obtained with table.getCurrentPage().
Something like :
[...]
// did we change the page?if (table.getCurrentPage() != page) {
cos.close();
page = table.getCurrentPage();
cos = newPDPageContentStream(document, page, true, true);
}Special Thanks to these awesome contributers :
=======
Copyright 2016
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.