Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create Table using Apache PDFBox

Tags:

java

pdf

pdfbox

We are planning to migrate our pdf generation utilities from iText to PDFBox (Due to licensing issues in iText). With some effort, I was able to write and position text, draw lines etc. But creating Tables with text embedded in Table cells is a challenge, I went through the documentation, examples, Google, Stackoverflow couldn't find a thing. Was wondering if PDFBox provides native support for creating Tables with embedded text. My last resort would be to use this link https://github.com/eduardohl/Paginated-PDFBox-Table-Sample

like image 479
Anil Avatar asked Jan 21 '15 04:01

Anil


People also ask

How do I create a dynamic table in PDFBox?

Please change the code so that it is complete, i.e. simulate your database input with some array for the drawTable() call. Also mention what PDFBox version you are using. javadoc of newLineAtOffset: "Move to the start of the next line, offset from the start of the current line by (tx, ty).".

Which is better iText or PDFBox?

One major difference is that PDFBox always processes text glyph by glyph while iText normally processes it chunk (i.e. single string parameter of text drawing operation) by chunk; that reduces the required resources in iText quite a lot.

What is PDFBox used for?

Apache PDFBox is an open source Java library that can be used to create, render, print, split, merge, alter, verify and extract text and meta-data of PDF files.


2 Answers

Since I also needed table drawing functionality for a side project, I implemented a small "table drawer" library myself, which I uploaded to github.

In order to produce such a table – for instance – ... enter image description here

... you would need this code. In the same file you find the code for that table as well:

enter image description here

The current "feature list" includes:

  • set font and font size on table level as well as on cell level
  • define single cells with bottom-, top-, left- and right-border width separately
  • define the background color on row or cell level
  • define padding (top, bottom, left, right) on cell level
  • define border color (on table, row or cell level)
  • specify text alignment (vertical and horizontal)
  • cell spanning and row spanning
  • text wrapping and line spacing

Also it should not be too hard to add missing stuff like having different border colors for borders on top, bottom, left and right-borders, if needed.

like image 194
philonous Avatar answered Sep 28 '22 20:09

philonous


Thanks to the links provided by Tilman. Using the boxable API (https://github.com/dhorions/boxable) I was able to create the table I wanted to. Just an FYI I wanted to create the table with variable number of cells. For example row 1 would have 2 cells, row 2 could have 5 cells and row 3 could have just 3 cells. I was able to do with ease. I followed Example1.java in the link mentioned above.

like image 32
Anil Avatar answered Sep 28 '22 21:09

Anil