package ilarkesto.pdf.itext; import ilarkesto.pdf.AImage; import ilarkesto.pdf.AParagraph; import ilarkesto.pdf.APdfBuilder; import ilarkesto.pdf.ATable; import java.awt.Color; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.Collection; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.pdf.PdfWriter; public class PdfBuilder extends APdfBuilder { public static void main(String[] args) throws Throwable { PdfBuilder pdf = new PdfBuilder(); pdf.paragraph().setHeight(72).text("first"); pdf.paragraph().setHeight(10).text("second"); pdf.paragraph().setHeight(1); pdf.paragraph().text("--------------------------"); ATable table = pdf.table(50, 50); table.cell().paragraph().text("1 ABC"); table.cell().setBorder(Color.RED, 0.5f).paragraph().text("2 ABC\u00DC\u00DC\nABCDEF"); table.cell().paragraph().text("3 ABC"); table.cell().paragraph().text("4 ABC"); pdf.write(new FileOutputStream("c:/tmp/test.pdf")); } private Collection<ItextElement> elements = new ArrayList<ItextElement>(); public void write(File file) { file.getParentFile().mkdirs(); try { BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file)); write(out); out.close(); } catch (IOException ex) { throw new RuntimeException(ex); } } public void write(OutputStream out) { Document document = new Document(); try { PdfWriter.getInstance(document, out); } catch (DocumentException ex) { throw new RuntimeException(ex); } document.setMargins(mmToPoints(marginLeft), mmToPoints(marginRight), mmToPoints(marginTop), mmToPoints(marginBottom)); document.open(); for (ItextElement element : elements) { try { document.add(element.getITextElement()); } catch (DocumentException ex) { throw new RuntimeException(ex); } } document.close(); } @Override public AParagraph paragraph() { Paragraph p = new Paragraph(this); p.setDefaultFontStyle(defaultFontStyle); elements.add(p); return p; } @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; } @Override public AImage image(File file) { Image i = new Image(this, file); elements.add(i); return i; } }