8000 GitHub - dhorions/boxable: Boxable is a library that can be used to easily create tables in pdf documents.
[go: up one dir, main page]

Skip to content

Boxable is a library that can be used to easily create tables in pdf documents.

License

Notifications You must be signed in to change notification settings

dhorions/boxable

Repository files navigation

Boxable - A java library to build tables in PDF documents.

Java CI with Maven Donate

Boxable is a library that can be used to easily create tables in pdf documents. It uses the PDFBox PDF library under the hood.

Features

  • Build tables in pdf documents
  • Convert csv data into tables in pdf documents
  • Convert Lists into tables in pdf documents

Boxable supports next tables features

  • HTML tags in cell content (not all! <p>,<i>,<b>,<br>,<ul>,<ol>,<li>,<u>,<s>,<h1>-<h6>)
  • 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
  • Inner tables using html <table>

Maven

<dependency>
    <groupId>com.github.dhorions</groupId>
    <artifactId>boxable</artifactId>
    <version>1.8.1</version>
</dependency>

For other build systems, check the Maven Central Repository.

Tutorial

A tutorial is being created and will be accessible at https://github.com/dhorions/boxable/wiki. If you want to help, please let us know here.

Usage examples

Create a pdf from a csv file

String data = readData("https://s3.amazonaws.com/misc.quodlibet.be/Boxable/Eurostat_Immigration_Applications.csv");
BaseTable pdfTable = new BaseTable(yStart, yStartNewPage, bottomMargin, tableWidth, margin, doc, page, true,true);
DataTable t = new DataTable(pdfTable, page);
t.addCsvToTable(data, DataTable.HASHEADER, ';');
pdfTable.draw();

Output : CSVExamplePortrait.pdf

Create a pdf from a List

List<List> data = new ArrayList();
data.add(new ArrayList<>(
               Arrays.asList("Column One", "Column Two", "Column Three", "Column Four", "Column Five")));
for (int i = 1; i <= 100; i++) {
  data.add(new ArrayList<>(
      Arrays.asList("Row " + i + " Col One", "Row " + i + " Col Two", "Row " + i + " Col Three", "Row " + i + " Col Four", "Row " + i + " Col Five")));
}
BaseTable dataTable = new BaseTable(yStart, yStartNewPage, bottomMargin, tableWidth, margin, doc, page, true, true);
DataTable t = new DataTable(dataTable, page);
t.addListToTable(data, DataTable.HASHEADER);
dataTable.draw();

Output : ListExampleLandscape.pdf

Build tables in pdf documents

BaseTable table = new BaseTable(yStart, yStartNewPage, bottomMargin, tableWidth, margin, doc, page, true,
				drawContent);
//Create Header row
Row<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 (int i = 1; i < fact.length; i++) {
			   cell = row.createCell((100 / 9f), fact[i]);
			}
}
table.draw();

Fixed height rows (auto-fit text)

BaseTable table = new BaseTable(yStart, yStartNewPage, bottomMargin, tableWidth, margin, doc, page, true, true);

// Fixed-height header row (text shrinks to fit)
Row<PDPage> headerRow = table.createRow(12f);
headerRow.setFixedHeight(true);
Cell<PDPage> headerCell = headerRow.createCell(100, "Fixed header with longer text");
headerCell.setFontSize(14f);
table.addHeaderRow(headerRow);

// Fixed-height data row (text shrinks to fit)
Row<PDPage> fixedRow = table.createRow(12f);
fixedRow.setFixedHeight(true);
fixedRow.createCell(30, "Fixed row");
fixedRow.createCell(70, "Some value that should be reduced to fit in 12pt height");

// Flexible row (height grows to fit)
Row<PDPage> flexibleRow = table.createRow(12f);
flexibleRow.createCell(30, "Flexible row");
flexibleRow.createCell(70, "Some value that should keep its font size and expand the row height");

table.draw();

Special Thanks to these awesome contributers :

=======

Copyright 2026

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.

About

Boxable is a library that can be used to easily create tables in pdf documents.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 25

Languages

0