package de.knurt.fam.service.pdf.control.bu; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.apache.log4j.Logger; import com.lowagie.text.DocumentException; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.ColumnText; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfReader; import com.lowagie.text.pdf.PdfStamper; import de.knurt.fam.service.pdf.control.FileFactoryUtil; import de.knurt.fam.service.pdf.control.ebc.BoardUnit; import de.knurt.fam.service.pdf.model.PDFOption; import de.knurt.fam.service.pdf.model.TextContent; /** * generate a pdf file from pdf option * * @author Daniel Oltmanns * @since 1.4.0 (05/31/2011) */ public class PDFOption2File implements BoardUnit<PDFOption, File> { @Override public File process(PDFOption datum) { File result = new File(FileFactoryUtil.filename(datum.getCustomId())); if (this.createFile(datum, result)) { return result; } else { return FileFactoryUtil.me().getSorryFile(); } } private boolean createFile(PDFOption datum, File resultFile) { boolean result = false; try { PdfReader pdfReader = new PdfReader(datum.getTemplateurl()); PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream(resultFile.getAbsoluteFile())); for (TextContent po : datum.getTextContents()) { PdfContentByte content = pdfStamper.getOverContent(po.getPageNumber()); BaseFont basefont = new TextContent2BaseFont().process(po); Font font = new TextContent2Font().process(po); int align = po.getAlignment(); int llx = po.getLowerLeftX(); int lly = po.getLowerLeftY(); int urx = po.getUpperRightX(); int ury = po.getUpperRightY(); float leading = po.getLeading(); content.setFontAndSize(basefont, po.getFontSize()); content.beginText(); Paragraph paragraph = new Paragraph(po.getText(), font); paragraph.setAlignment(align); paragraph.setLeading(leading); ColumnText ct = new ColumnText(content); ct.setSimpleColumn(llx, lly, urx, ury, leading, align); ct.addElement(paragraph); ct.go(); content.endText(); } pdfStamper.close(); result = true; } catch (IOException e) { Logger.getRootLogger().info(resultFile.getAbsoluteFile() + " | " + e.getMessage() + " | " + datum.getTemplateurl() + " | 201106071250"); } catch (DocumentException e) { Logger.getRootLogger().info("201106071249"); } return result; } }