use of com.lowagie.text.SimpleTable in project itext2 by albfernandez.
the class TablePdfPTableTest method main.
/**
* Example that is used to test the TableAttributes class.
*
* @param args
* no arguments needed
*/
@Test
public void main() throws Exception {
// creation of the document with a certain size and certain margins
Document document = new Document(PageSize.A4.rotate(), 50, 50, 50, 50);
// creation of the different writers
PdfWriter.getInstance(document, PdfTestBase.getOutputStream("tableattributes.pdf"));
RtfWriter2.getInstance(document, PdfTestBase.getOutputStream("tableattributes.rtf"));
// open the document
document.open();
// add content
SimpleTable table = new SimpleTable();
table.setCellpadding(5);
table.setCellspacing(8);
SimpleCell row = new SimpleCell(SimpleCell.ROW);
row.setBackgroundColor(Color.yellow);
SimpleCell cell = new SimpleCell(SimpleCell.CELL);
cell.setWidth(100f);
cell.add(new Paragraph("rownumber"));
row.add(cell);
cell = new SimpleCell(SimpleCell.CELL);
cell.setWidth(50f);
cell.add(new Paragraph("A"));
row.add(cell);
cell = new SimpleCell(SimpleCell.CELL);
cell.setWidth(50f);
cell.add(new Paragraph("B"));
row.add(cell);
cell = new SimpleCell(SimpleCell.CELL);
cell.setWidth(50f);
cell.add(new Paragraph("C"));
row.add(cell);
table.addElement(row);
for (int i = 0; i < 100; i++) {
row = new SimpleCell(SimpleCell.ROW);
switch(i % 3) {
case 0:
row.setBackgroundColor(Color.red);
break;
case 1:
row.setBackgroundColor(Color.green);
break;
case 2:
row.setBackgroundColor(Color.blue);
break;
}
if (i % 2 == 1) {
row.setBorderWidth(3f);
}
cell = new SimpleCell(SimpleCell.CELL);
cell.add(new Paragraph("Row " + (i + 1)));
cell.setSpacing_left(20f);
row.add(cell);
if (i % 5 == 4) {
cell = new SimpleCell(SimpleCell.CELL);
cell.setColspan(3);
cell.setBorderColor(Color.orange);
cell.setBorderWidth(5f);
cell.add(new Paragraph("Hello!"));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
row.add(cell);
} else {
cell = new SimpleCell(SimpleCell.CELL);
cell.add(new Paragraph("A"));
row.add(cell);
cell = new SimpleCell(SimpleCell.CELL);
cell.add(new Paragraph("B"));
cell.setBackgroundColor(Color.gray);
row.add(cell);
cell = new SimpleCell(SimpleCell.CELL);
cell.add(new Paragraph("C"));
row.add(cell);
}
table.addElement(row);
}
document.add(table);
// we close the document
document.close();
}
use of com.lowagie.text.SimpleTable in project OpenPDF by LibrePDF.
the class PdfDocument method add.
/**
* Signals that an <CODE>Element</CODE> was added to the <CODE>Document</CODE>.
*
* @param element the element to add
* @return <CODE>true</CODE> if the element was added, <CODE>false</CODE> if not.
* @throws DocumentException when a document isn't open yet, or has been closed
*/
public boolean add(Element element) throws DocumentException {
if (writer != null && writer.isPaused()) {
return false;
}
try {
switch(element.type()) {
// Information (headers)
case Element.HEADER:
info.addkey(((Meta) element).getName(), ((Meta) element).getContent());
break;
case Element.TITLE:
info.addTitle(((Meta) element).getContent());
break;
case Element.SUBJECT:
info.addSubject(((Meta) element).getContent());
break;
case Element.KEYWORDS:
info.addKeywords(((Meta) element).getContent());
break;
case Element.AUTHOR:
info.addAuthor(((Meta) element).getContent());
break;
case Element.CREATOR:
info.addCreator(((Meta) element).getContent());
break;
case Element.PRODUCER:
info.addProducer(((Meta) element).getContent());
break;
case Element.CREATIONDATE:
// you can not set the creation date, only reset it
info.addCreationDate();
break;
// content (text)
case Element.CHUNK:
{
// if there isn't a current line available, we make one
if (line == null) {
carriageReturn();
}
// we cast the element to a chunk
PdfChunk chunk = new PdfChunk((Chunk) element, anchorAction);
// we try to add the chunk to the line, until we succeed
{
PdfChunk overflow;
while ((overflow = line.add(chunk)) != null) {
carriageReturn();
chunk = overflow;
chunk.trimFirstSpace();
}
}
pageEmpty = false;
if (chunk.isAttribute(Chunk.NEWPAGE)) {
newPage();
}
break;
}
case Element.ANCHOR:
{
leadingCount++;
Anchor anchor = (Anchor) element;
String url = anchor.getReference();
leading = anchor.getLeading();
if (url != null) {
anchorAction = new PdfAction(url);
}
// we process the element
element.process(this);
anchorAction = null;
leadingCount--;
break;
}
case Element.ANNOTATION:
{
if (line == null) {
carriageReturn();
}
Annotation annot = (Annotation) element;
Rectangle rect = new Rectangle(0, 0);
if (line != null)
rect = new Rectangle(annot.llx(indentRight() - line.widthLeft()), annot.ury(indentTop() - currentHeight - 20), annot.urx(indentRight() - line.widthLeft() + 20), annot.lly(indentTop() - currentHeight));
PdfAnnotation an = PdfAnnotationsImp.convertAnnotation(writer, annot, rect);
annotationsImp.addPlainAnnotation(an);
pageEmpty = false;
break;
}
case Element.PHRASE:
{
leadingCount++;
// we cast the element to a phrase and set the leading of the document
leading = ((Phrase) element).getLeading();
// we process the element
element.process(this);
leadingCount--;
break;
}
case Element.PARAGRAPH:
{
leadingCount++;
// we cast the element to a paragraph
Paragraph paragraph = (Paragraph) element;
addSpacing(paragraph.getSpacingBefore(), leading, paragraph.getFont());
// we adjust the parameters of the document
alignment = paragraph.getAlignment();
leading = paragraph.getTotalLeading();
carriageReturn();
// we don't want to make orphans/widows
if (currentHeight + line.height() + leading > indentTop() - indentBottom()) {
newPage();
}
indentation.indentLeft += paragraph.getIndentationLeft();
indentation.indentRight += paragraph.getIndentationRight();
carriageReturn();
PdfPageEvent pageEvent = writer.getPageEvent();
if (pageEvent != null && !isSectionTitle)
pageEvent.onParagraph(writer, this, indentTop() - currentHeight);
// if a paragraph has to be kept together, we wrap it in a table object
if (paragraph.getKeepTogether()) {
carriageReturn();
// fixes bug with nested tables not shown
// Paragraph#getChunks() doesn't contain the nested table element
PdfPTable table = createInOneCell(paragraph);
indentation.indentLeft -= paragraph.getIndentationLeft();
indentation.indentRight -= paragraph.getIndentationRight();
this.add(table);
indentation.indentLeft += paragraph.getIndentationLeft();
indentation.indentRight += paragraph.getIndentationRight();
} else {
line.setExtraIndent(paragraph.getFirstLineIndent());
element.process(this);
carriageReturn();
addSpacing(paragraph.getSpacingAfter(), paragraph.getTotalLeading(), paragraph.getFont());
}
if (pageEvent != null && !isSectionTitle)
pageEvent.onParagraphEnd(writer, this, indentTop() - currentHeight);
alignment = Element.ALIGN_LEFT;
indentation.indentLeft -= paragraph.getIndentationLeft();
indentation.indentRight -= paragraph.getIndentationRight();
carriageReturn();
leadingCount--;
break;
}
case Element.SECTION:
case Element.CHAPTER:
{
// Chapters and Sections only differ in their constructor
// so we cast both to a Section
Section section = (Section) element;
PdfPageEvent pageEvent = writer.getPageEvent();
boolean hasTitle = section.isNotAddedYet() && section.getTitle() != null;
// if the section is a chapter, we begin a new page
if (section.isTriggerNewPage()) {
newPage();
}
if (hasTitle) {
float fith = indentTop() - currentHeight;
int rotation = pageSize.getRotation();
if (rotation == 90 || rotation == 180)
fith = pageSize.getHeight() - fith;
PdfDestination destination = new PdfDestination(PdfDestination.FITH, fith);
while (currentOutline.level() >= section.getDepth()) {
currentOutline = currentOutline.parent();
}
PdfOutline outline = new PdfOutline(currentOutline, destination, section.getBookmarkTitle(), section.isBookmarkOpen());
currentOutline = outline;
}
// some values are set
carriageReturn();
indentation.sectionIndentLeft += section.getIndentationLeft();
indentation.sectionIndentRight += section.getIndentationRight();
if (section.isNotAddedYet() && pageEvent != null)
if (element.type() == Element.CHAPTER)
pageEvent.onChapter(writer, this, indentTop() - currentHeight, section.getTitle());
else
pageEvent.onSection(writer, this, indentTop() - currentHeight, section.getDepth(), section.getTitle());
// the title of the section (if any has to be printed)
if (hasTitle) {
isSectionTitle = true;
add(section.getTitle());
isSectionTitle = false;
}
indentation.sectionIndentLeft += section.getIndentation();
// we process the section
element.process(this);
flushLines();
// some parameters are set back to normal again
indentation.sectionIndentLeft -= (section.getIndentationLeft() + section.getIndentation());
indentation.sectionIndentRight -= section.getIndentationRight();
if (section.isComplete() && pageEvent != null)
if (element.type() == Element.CHAPTER)
pageEvent.onChapterEnd(writer, this, indentTop() - currentHeight);
else
pageEvent.onSectionEnd(writer, this, indentTop() - currentHeight);
break;
}
case Element.LIST:
{
// we cast the element to a List
List list = (List) element;
if (list.isAlignindent()) {
list.normalizeIndentation();
}
// we adjust the document
indentation.listIndentLeft += list.getIndentationLeft();
indentation.indentRight += list.getIndentationRight();
// we process the items in the list
element.process(this);
// some parameters are set back to normal again
indentation.listIndentLeft -= list.getIndentationLeft();
indentation.indentRight -= list.getIndentationRight();
carriageReturn();
break;
}
case Element.LISTITEM:
{
leadingCount++;
// we cast the element to a ListItem
ListItem listItem = (ListItem) element;
addSpacing(listItem.getSpacingBefore(), leading, listItem.getFont());
// we adjust the document
alignment = listItem.getAlignment();
indentation.listIndentLeft += listItem.getIndentationLeft();
indentation.indentRight += listItem.getIndentationRight();
leading = listItem.getTotalLeading();
carriageReturn();
// we prepare the current line to be able to show us the listsymbol
line.setListItem(listItem);
// we process the item
element.process(this);
addSpacing(listItem.getSpacingAfter(), listItem.getTotalLeading(), listItem.getFont());
// if the last line is justified, it should be aligned to the left
if (line.hasToBeJustified()) {
line.resetAlignment();
}
// some parameters are set back to normal again
carriageReturn();
indentation.listIndentLeft -= listItem.getIndentationLeft();
indentation.indentRight -= listItem.getIndentationRight();
leadingCount--;
break;
}
case Element.RECTANGLE:
{
Rectangle rectangle = (Rectangle) element;
graphics.rectangle(rectangle);
pageEmpty = false;
break;
}
case Element.PTABLE:
{
PdfPTable ptable = (PdfPTable) element;
if (ptable.size() <= ptable.getHeaderRows())
// nothing to do
break;
// before every table, we add a new line and flush all lines
ensureNewLine();
flushLines();
addPTable(ptable);
pageEmpty = false;
newLine();
break;
}
case Element.MULTI_COLUMN_TEXT:
{
ensureNewLine();
flushLines();
MultiColumnText multiText = (MultiColumnText) element;
float height = multiText.write(writer.getDirectContent(), this, indentTop() - currentHeight);
currentHeight += height;
text.moveText(0, -1f * height);
pageEmpty = false;
break;
}
case Element.TABLE:
{
if (element instanceof SimpleTable) {
PdfPTable ptable = ((SimpleTable) element).createPdfPTable();
if (ptable.size() <= ptable.getHeaderRows())
// nothing to do
break;
// before every table, we add a new line and flush all lines
ensureNewLine();
flushLines();
addPTable(ptable);
pageEmpty = false;
break;
} else if (element instanceof Table) {
try {
PdfPTable ptable = ((Table) element).createPdfPTable();
if (ptable.size() <= ptable.getHeaderRows())
// nothing to do
break;
// before every table, we add a new line and flush all lines
ensureNewLine();
flushLines();
addPTable(ptable);
pageEmpty = false;
break;
} catch (BadElementException bee) {
// constructing the PdfTable
// Before the table, add a blank line using offset or default leading
float offset = ((Table) element).getOffset();
if (Float.isNaN(offset))
offset = leading;
carriageReturn();
lines.add(new PdfLine(indentLeft(), indentRight(), alignment, offset));
currentHeight += offset;
addPdfTable((Table) element);
}
} else {
return false;
}
break;
}
case Element.JPEG:
case Element.JPEG2000:
case Element.JBIG2:
case Element.IMGRAW:
case Element.IMGTEMPLATE:
{
// carriageReturn(); suggestion by Marc Campforts
add((Image) element);
break;
}
case Element.YMARK:
{
DrawInterface zh = (DrawInterface) element;
zh.draw(graphics, indentLeft(), indentBottom(), indentRight(), indentTop(), indentTop() - currentHeight - (leadingCount > 0 ? leading : 0));
pageEmpty = false;
break;
}
case Element.MARKED:
{
MarkedObject mo;
if (element instanceof MarkedSection) {
mo = ((MarkedSection) element).getTitle();
if (mo != null) {
mo.process(this);
}
}
mo = (MarkedObject) element;
mo.process(this);
break;
}
default:
return false;
}
lastElementType = element.type();
return true;
} catch (Exception e) {
throw new DocumentException(e);
}
}
use of com.lowagie.text.SimpleTable in project OpenPDF by LibrePDF.
the class ColumnText method addElement.
/**
* Adds an element. Elements supported are <CODE>Paragraph</CODE>,
* <CODE>List</CODE>, <CODE>PdfPTable</CODE>, <CODE>Image</CODE> and
* <CODE>Graphic</CODE>.
* <p>
* It removes all the text placed with <CODE>addText()</CODE>.
*
* @param element the <CODE>Element</CODE>
*/
public void addElement(Element element) {
if (element == null)
return;
if (element instanceof Image) {
Image img = (Image) element;
PdfPTable t = new PdfPTable(1);
float w = img.getWidthPercentage();
if (w == 0) {
t.setTotalWidth(img.getScaledWidth());
t.setLockedWidth(true);
} else
t.setWidthPercentage(w);
t.setSpacingAfter(img.getSpacingAfter());
t.setSpacingBefore(img.getSpacingBefore());
switch(img.getAlignment()) {
case Image.LEFT:
t.setHorizontalAlignment(Element.ALIGN_LEFT);
break;
case Image.RIGHT:
t.setHorizontalAlignment(Element.ALIGN_RIGHT);
break;
default:
t.setHorizontalAlignment(Element.ALIGN_CENTER);
break;
}
PdfPCell c = new PdfPCell(img, true);
c.setPadding(0);
c.setBorder(img.getBorder());
c.setBorderColor(img.getBorderColor());
c.setBorderWidth(img.getBorderWidth());
c.setBackgroundColor(img.getBackgroundColor());
t.addCell(c);
element = t;
}
if (element.type() == Element.CHUNK) {
element = new Paragraph((Chunk) element);
} else if (element.type() == Element.PHRASE) {
element = new Paragraph((Phrase) element);
}
if (element instanceof SimpleTable) {
try {
element = ((SimpleTable) element).createPdfPTable();
} catch (DocumentException e) {
throw new IllegalArgumentException(MessageLocalization.getComposedMessage("element.not.allowed"));
}
} else if (element.type() != Element.PARAGRAPH && element.type() != Element.LIST && element.type() != Element.PTABLE && element.type() != Element.YMARK)
throw new IllegalArgumentException(MessageLocalization.getComposedMessage("element.not.allowed"));
if (!composite) {
composite = true;
compositeElements = new LinkedList<>();
bidiLine = null;
waitPhrase = null;
}
compositeElements.add(element);
}
use of com.lowagie.text.SimpleTable in project OpenPDF by LibrePDF.
the class TablePdfPTable method main.
/**
* Example that is used to test the TableAttributes class.
* @param args no arguments needed
*/
public static void main(String[] args) {
System.out.println("TableAttributes");
// creation of the document with a certain size and certain margins
Document document = new Document(PageSize.A4.rotate(), 50, 50, 50, 50);
try {
// creation of the different writers
PdfWriter.getInstance(document, new FileOutputStream("tableattributes.pdf"));
// open the document
document.open();
// add content
SimpleTable table = new SimpleTable();
table.setCellpadding(5);
table.setCellspacing(8);
SimpleCell row = new SimpleCell(SimpleCell.ROW);
row.setBackgroundColor(Color.yellow);
SimpleCell cell = new SimpleCell(SimpleCell.CELL);
cell.setWidth(100f);
cell.add(new Paragraph("rownumber"));
row.add(cell);
cell = new SimpleCell(SimpleCell.CELL);
cell.setWidth(50f);
cell.add(new Paragraph("A"));
row.add(cell);
cell = new SimpleCell(SimpleCell.CELL);
cell.setWidth(50f);
cell.add(new Paragraph("B"));
row.add(cell);
cell = new SimpleCell(SimpleCell.CELL);
cell.setWidth(50f);
cell.add(new Paragraph("C"));
row.add(cell);
table.addElement(row);
for (int i = 0; i < 100; i++) {
row = new SimpleCell(SimpleCell.ROW);
switch(i % 3) {
case 0:
row.setBackgroundColor(Color.red);
break;
case 1:
row.setBackgroundColor(Color.green);
break;
case 2:
row.setBackgroundColor(Color.blue);
break;
}
if (i % 2 == 1) {
row.setBorderWidth(3f);
}
cell = new SimpleCell(SimpleCell.CELL);
cell.add(new Paragraph("Row " + (i + 1)));
cell.setSpacing_left(20f);
row.add(cell);
if (i % 5 == 4) {
cell = new SimpleCell(SimpleCell.CELL);
cell.setColspan(3);
cell.setBorderColor(Color.orange);
cell.setBorderWidth(5f);
cell.add(new Paragraph("Hello!"));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
row.add(cell);
} else {
cell = new SimpleCell(SimpleCell.CELL);
cell.add(new Paragraph("A"));
row.add(cell);
cell = new SimpleCell(SimpleCell.CELL);
cell.add(new Paragraph("B"));
cell.setBackgroundColor(Color.gray);
row.add(cell);
cell = new SimpleCell(SimpleCell.CELL);
cell.add(new Paragraph("C"));
row.add(cell);
}
table.addElement(row);
}
document.add(table);
} catch (Exception e) {
e.printStackTrace();
}
// we close the document
document.close();
}
use of com.lowagie.text.SimpleTable in project itext2 by albfernandez.
the class ColumnText method addElement.
/**
* Adds an element. Elements supported are <CODE>Paragraph</CODE>,
* <CODE>List</CODE>, <CODE>PdfPTable</CODE>, <CODE>Image</CODE> and
* <CODE>Graphic</CODE>.
* <p>
* It removes all the text placed with <CODE>addText()</CODE>.
*
* @param element the <CODE>Element</CODE>
*/
public void addElement(Element element) {
if (element == null)
return;
if (element instanceof Image) {
Image img = (Image) element;
PdfPTable t = new PdfPTable(1);
float w = img.getWidthPercentage();
if (w == 0) {
t.setTotalWidth(img.getScaledWidth());
t.setLockedWidth(true);
} else
t.setWidthPercentage(w);
t.setSpacingAfter(img.getSpacingAfter());
t.setSpacingBefore(img.getSpacingBefore());
switch(img.getAlignment()) {
case Image.LEFT:
t.setHorizontalAlignment(Element.ALIGN_LEFT);
break;
case Image.RIGHT:
t.setHorizontalAlignment(Element.ALIGN_RIGHT);
break;
default:
t.setHorizontalAlignment(Element.ALIGN_CENTER);
break;
}
PdfPCell c = new PdfPCell(img, true);
c.setPadding(0);
c.setBorder(img.getBorder());
c.setBorderColor(img.getBorderColor());
c.setBorderWidth(img.getBorderWidth());
c.setBackgroundColor(img.getBackgroundColor());
t.addCell(c);
element = t;
}
if (element.type() == Element.CHUNK) {
element = new Paragraph((Chunk) element);
} else if (element.type() == Element.PHRASE) {
element = new Paragraph((Phrase) element);
}
if (element instanceof SimpleTable) {
try {
element = ((SimpleTable) element).createPdfPTable();
} catch (DocumentException e) {
throw new IllegalArgumentException("Element not allowed." + element.type(), e);
}
} else if (element.type() != Element.PARAGRAPH && element.type() != Element.LIST && element.type() != Element.PTABLE && element.type() != Element.YMARK)
throw new IllegalArgumentException("Element not allowed." + element.type());
if (!composite) {
composite = true;
compositeElements = new LinkedList();
bidiLine = null;
waitPhrase = null;
}
compositeElements.add(element);
}
Aggregations