package ilarkesto.pdf.itext; import ilarkesto.pdf.ACell; import ilarkesto.pdf.AImage; import ilarkesto.pdf.AParagraph; import ilarkesto.pdf.APdfBuilder; import ilarkesto.pdf.APdfElement; import ilarkesto.pdf.ATable; import java.io.File; import java.util.ArrayList; import java.util.Collection; import com.lowagie.text.Element; import com.lowagie.text.pdf.PdfPCell; public class Cell extends ACell implements ItextElement { private Collection<ItextElement> elements = new ArrayList<ItextElement>(); public Cell(APdfElement parent) { super(parent); } @Override public AParagraph paragraph() { Paragraph p = new Paragraph(this); p.setDefaultFontStyle(getFontStyle()); elements.add(p); return p; } @Override public AImage image(File file) { Image i = new Image(this, file); elements.add(i); return i; } @Override public ATable table(float... cellWidths) { Table t = new Table(this); t.setCellWidths(cellWidths); elements.add(t); return t; } @Override public ATable table(int columnCount) { Table t = new Table(this); t.setColumnCount(columnCount); elements.add(t); return t; } @Override public AImage image(byte[] data) { Image i = new Image(this, data); elements.add(i); return i; } public Element getITextElement() { PdfPCell cell = new PdfPCell(); cell.setBorderColorTop(getBorderTopColor()); cell.setBorderColorBottom(getBorderBottomColor()); cell.setBorderColorLeft(getBorderLeftColor()); cell.setBorderColorRight(getBorderRightColor()); cell.setBorderWidthTop(APdfBuilder.mmToPoints(getBorderTopWidth())); cell.setBorderWidthBottom(APdfBuilder.mmToPoints(getBorderBottomWidth())); cell.setBorderWidthLeft(APdfBuilder.mmToPoints(getBorderLeftWidth())); cell.setBorderWidthRight(APdfBuilder.mmToPoints(getBorderRightWidth())); cell.setPadding(0); cell.setPaddingTop(APdfBuilder.mmToPoints(getPaddingTop())); cell.setPaddingBottom(APdfBuilder.mmToPoints(getPaddingBottom())); cell.setPaddingLeft(APdfBuilder.mmToPoints(getPaddingLeft())); cell.setPaddingRight(APdfBuilder.mmToPoints(getPaddingRight())); cell.setExtraParagraphSpace(0); cell.setIndent(0); cell.setUseBorderPadding(false); cell.setBackgroundColor(getBackgroundColor()); for (ItextElement element : elements) cell.addElement(element.getITextElement()); return cell; } // --- dependencies --- }