List of usage examples for com.lowagie.text.pdf PdfPCell setPaddingTop
public void setPaddingTop(float paddingTop)
From source file:org.mapfish.print.config.layout.CellConfig.java
License:Open Source License
protected void apply(PdfPCell cell, RenderingContext context, PJsonObject params) { if (paddingLeft != null) cell.setPaddingLeft(paddingLeft.floatValue()); if (paddingRight != null) cell.setPaddingRight(paddingRight.floatValue()); if (paddingTop != null) cell.setPaddingTop(paddingTop.floatValue()); if (paddingBottom != null) cell.setPaddingBottom(paddingBottom.floatValue()); if (borderWidthLeft != null) cell.setBorderWidthLeft(borderWidthLeft.floatValue()); if (borderWidthRight != null) cell.setBorderWidthRight(borderWidthRight.floatValue()); if (borderWidthTop != null) cell.setBorderWidthTop(borderWidthTop.floatValue()); if (borderWidthBottom != null) cell.setBorderWidthBottom(borderWidthBottom.floatValue()); if (getBorderColorLeftVal(context, params) != null) cell.setBorderColorLeft(getBorderColorLeftVal(context, params)); if (getBorderColorRightVal(context, params) != null) cell.setBorderColorRight(getBorderColorRightVal(context, params)); if (getBorderColorTopVal(context, params) != null) cell.setBorderColorTop(getBorderColorTopVal(context, params)); if (getBorderColorBottomVal(context, params) != null) cell.setBorderColorBottom(getBorderColorBottomVal(context, params)); if (getBackgroundColorVal(context, params) != null) cell.setBackgroundColor(getBackgroundColorVal(context, params)); if (align != null) cell.setHorizontalAlignment(align.getCode()); if (vertAlign != null) cell.setVerticalAlignment(vertAlign.getCode()); }
From source file:org.mapfish.print.config.layout.LegendsBlock.java
License:Open Source License
public void render(PJsonObject params, PdfElement target, RenderingContext context) throws DocumentException { PdfPTable table = new PdfPTable(1); table.setWidthPercentage(100f);//from w w w. j a v a 2 s. com Font layerPdfFont = getLayerPdfFont(); Font classPdfFont = getClassPdfFont(); PJsonArray legends = context.getGlobalParams().optJSONArray("legends"); if (legends != null && legends.size() > 0) { for (int i = 0; i < legends.size(); ++i) { PJsonObject layer = legends.getJSONObject(i); final PdfPCell cell = createLine(context, 0.0, layer, layerPdfFont, params); if (i > 0) { cell.setPaddingTop((float) layerSpace); } table.addCell(cell); PJsonArray classes = layer.getJSONArray("classes"); for (int j = 0; j < classes.size(); ++j) { PJsonObject clazz = classes.getJSONObject(j); final PdfPCell classCell = createLine(context, classIndentation, clazz, classPdfFont, params); classCell.setPaddingTop((float) classSpace); table.addCell(classCell); } } } table.setSpacingAfter((float) spacingAfter); target.add(table); }
From source file:org.odftoolkit.odfdom.converter.internal.itext.stylable.StylableParagraph.java
License:Open Source License
@SuppressWarnings("unchecked") public Element getElement() { if (!elementPostProcessed) { elementPostProcessed = true;/*from w ww. j a v a 2 s. co m*/ // add space if this paragraph is empty // otherwise it's height will be zero boolean empty = true; ArrayList<Chunk> chunks = getChunks(); for (Chunk chunk : chunks) { if (chunk.getImage() == null && chunk.getContent() != null && chunk.getContent().length() > 0) { empty = false; break; } } if (empty) { super.add(new Chunk("\u00A0")); // non breaking space } // adjust line height and baseline if (font != null && font.getBaseFont() != null) { // iText and open office computes proportional line height differently // [iText] line height = coefficient * font size // [open office] line height = coefficient * (font ascender + font descender + font extra margin) // we have to increase paragraph line height to generate pdf similar to open office document // this algorithm may be inaccurate if fonts with different multipliers are used in this paragraph float size = font.getSize(); float ascender = font.getBaseFont().getFontDescriptor(BaseFont.AWT_ASCENT, size); float descender = -font.getBaseFont().getFontDescriptor(BaseFont.AWT_DESCENT, size); // negative value float margin = font.getBaseFont().getFontDescriptor(BaseFont.AWT_LEADING, size); float multiplier = (ascender + descender + margin) / size; if (multipliedLeading > 0.0f) { setMultipliedLeading(getMultipliedLeading() * multiplier); } // iText seems to output text with baseline lower than open office // we raise all paragraph text by some amount // again this may be inaccurate if fonts with different size are used in this paragraph float itextdescender = -font.getBaseFont().getFontDescriptor(BaseFont.DESCENT, size); // negative float textRise = itextdescender + getTotalLeading() - font.getSize() * multiplier; chunks = getChunks(); for (Chunk chunk : chunks) { Font f = chunk.getFont(); if (f != null) { // have to raise underline and strikethru as well float s = f.getSize(); if (f.isUnderlined()) { f.setStyle(f.getStyle() & ~Font.UNDERLINE); chunk.setUnderline(s * 1 / 17, s * -1 / 7 + textRise); } if (f.isStrikethru()) { f.setStyle(f.getStyle() & ~Font.STRIKETHRU); chunk.setUnderline(s * 1 / 17, s * 1 / 4 + textRise); } } chunk.setTextRise(chunk.getTextRise() + textRise); } } // wrap this paragraph into a table if necessary if (wrapperCell != null) { // background color or borders were set wrapperCell.addElement(this); wrapperTable = createTable(wrapperCell); if (getIndentationLeft() > 0.0f || getIndentationRight() > 0.0f || getSpacingBefore() > 0.0f || getSpacingAfter() > 0.0f) { // margins were set, have to wrap the cell again PdfPCell outerCell = createCell(); outerCell.setPaddingLeft(getIndentationLeft()); setIndentationLeft(0.0f); outerCell.setPaddingRight(getIndentationRight()); setIndentationRight(0.0f); outerCell.setPaddingTop(getSpacingBefore()); setSpacingBefore(0.0f); outerCell.setPaddingBottom(getSpacingAfter()); setSpacingAfter(0.0f); outerCell.addElement(wrapperTable); wrapperTable = createTable(outerCell); } } } return wrapperTable != null ? wrapperTable : this; }
From source file:org.posterita.core.CrossTabReportGenerator.java
License:Open Source License
protected void writeDocument(Document document) throws OperationException { try {//w w w .ja v a 2s. c om int noOfRows = dataSource.size(); String longestText = ""; int columnCount = 0; Object[] obj = null; Object[] header = (Object[]) dataSource.get(0); columnCount = header.length; PdfPTable table = new PdfPTable(columnCount); table.setWidthPercentage(100); table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); table.getDefaultCell().setVerticalAlignment(Element.ALIGN_MIDDLE); table.getDefaultCell().setPaddingBottom(5); table.getDefaultCell().setPaddingTop(5); //adding the headers for (int i = 0; i < columnCount; i++) { if (i == 0) { longestText = header[i].toString(); table.addCell(new Paragraph(header[i].toString())); } else { Image img = getTextAsImage(header[i].toString()); img.setRotationDegrees(90); img.setAlignment(Image.ALIGN_BOTTOM); PdfPCell cell = new PdfPCell(img); cell.setPadding(4); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setVerticalAlignment(Element.ALIGN_BOTTOM); //cell.setBackgroundColor(new Color(0, 0, 255)); table.addCell(cell); } } //adding the data for (int j = 1; j < noOfRows; j++) { obj = (Object[]) dataSource.get(j); for (int k = 0; k < columnCount; k++) { if (k == 0) { String text = obj[0].toString(); if (new Chunk(text, HEADER_FONT).getWidthPoint() > new Chunk(longestText, HEADER_FONT) .getWidthPoint()) { longestText = text; } Chunk txtck = new Chunk(obj[0].toString(), HEADER_FONT); PdfPCell cell = new PdfPCell(new Paragraph(txtck)); if (j == noOfRows - 1) { cell.setBackgroundColor(new Color(170, 170, 170)); } cell.setHorizontalAlignment(Element.ALIGN_LEFT); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); cell.setPaddingBottom(5); cell.setPaddingTop(5); cell.setPaddingLeft(5); table.addCell(cell); } else { Chunk txtck = new Chunk(obj[k].toString(), DATA_FONT); if (k == columnCount - 1) { PdfPCell cell = new PdfPCell(new Paragraph(txtck)); cell.setBackgroundColor(new Color(170, 170, 170)); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); cell.setPaddingBottom(5); cell.setPaddingTop(5); table.addCell(cell); } else { PdfPCell cell = new PdfPCell(new Paragraph(txtck)); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); cell.setPaddingBottom(5); cell.setPaddingTop(5); if (j == noOfRows - 1) { cell.setBackgroundColor(new Color(170, 170, 170)); } table.addCell(cell); } } } } //setting table width Chunk dataChk = new Chunk("9999", DATA_FONT); Chunk headerChk = new Chunk(longestText, HEADER_FONT); float dataChkLength = dataChk.getWidthPoint() + 2 * CELLPADDING; float headerChkLength = headerChk.getWidthPoint() + 2 * CELLPADDING; float tableWidth = headerChkLength + dataChkLength * columnCount; float actualTableWidth = document.getPageSize().getWidth() - 2 * MARGIN; float columnWidth = dataChkLength; if (tableWidth < actualTableWidth) { columnWidth = (actualTableWidth - headerChkLength) / (columnCount - 1); } float[] widths = new float[columnCount]; widths[0] = headerChkLength + 2 * CELLPADDING; for (int i = 1; i < columnCount; i++) { widths[i] = columnWidth; } table.setWidths(widths); //writing the table document.add(table); } catch (DocumentException e) { throw new OperationException(e); } }
From source file:org.revager.export.InvitationPDFExporter.java
License:Open Source License
/** * Write the title page of the PDF document. * // w ww . j a v a 2 s . c om * @throws ExportException * If an error occurs while creating the title page */ private void writeTitlePage() throws ExportException { try { Font plainFontTitle = new Font( BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED), 12); Font boldFontTitle = new Font( BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.EMBEDDED), 12); Font boldItalicFontTitle = new Font( BaseFont.createFont(BaseFont.HELVETICA_BOLDOBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 12); Font plainFont = new Font(BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED), 10); Font boldFont = new Font( BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.EMBEDDED), 10); Font boldItalicFont = new Font( BaseFont.createFont(BaseFont.HELVETICA_BOLDOBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 10); Font italicFont = new Font( BaseFont.createFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 10); Font italicFontSmall = new Font( BaseFont.createFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 9); Phrase phraseStrut = new Phrase(" "); phraseStrut.setLeading(leading); /* * date and time of the meeting */ String meetingDate = sdfDate.format(meeting.getPlannedDate().getTime()); String meetingTime = sdfTime.format(meeting.getPlannedStart().getTime()) + " - " + sdfTime.format(meeting.getPlannedEnd().getTime()) + " [" + meeting.getPlannedEnd().getTimeZone().getDisplayName() + "]"; ; /* * Base table */ PdfPTable table = new PdfPTable(new float[] { 0.04f, 0.96f }); table.setWidthPercentage(100); table.setSplitRows(false); table.getDefaultCell().setBorderWidth(0); table.getDefaultCell().setPadding(0); /* * recipient of the invitation */ PdfPCell cell = new PdfPCell(); cell.setBorder(0); cell.setColspan(2); cell.setPadding(padding); cell.addElement(phraseStrut); PdfPTable tableRecipient = new PdfPTable(2); tableRecipient.setWidthPercentage(100); tableRecipient.setSplitRows(false); tableRecipient.getDefaultCell().setBorderWidth(0); tableRecipient.getDefaultCell().setPadding(0); PdfPCell cellRecipient = new PdfPCell(); cellRecipient.setBorder(0); cellRecipient.setPadding(0); cellRecipient.addElement(new Phrase(translate("To:"), plainFontTitle)); cellRecipient.addElement(new Phrase(attendee.getName(), boldFontTitle)); tableRecipient.addCell(cellRecipient); PdfPCell cellDate = new PdfPCell(new Phrase(sdfDate.format(new Date().getTime()), plainFont)); cellDate.setHorizontalAlignment(Element.ALIGN_RIGHT); cellDate.setBorder(0); cellDate.setPadding(0); cellDate.setPaddingTop(7); tableRecipient.addCell(cellDate); cell.addElement(tableRecipient); cell.addElement(phraseStrut); cell.addElement(phraseStrut); cell.addElement(phraseStrut); /* * subject */ cell.addElement(new Phrase(translate("Invitation for the Meeting on") + " " + meetingDate, boldItalicFontTitle)); cell.addElement(phraseStrut); /* * invitation text */ Phrase phrase = new Phrase( Data.getInstance().getAppData().getSetting(AppSettingKey.PDF_INVITATION_TEXT), plainFont); phrase.setLeading(leading); cell.addElement(phrase); cell.addElement(phraseStrut); table.addCell(cell); /* * meeting date, time and location */ cell = new PdfPCell(new Phrase(meetingDate, boldItalicFont)); cell.setBorder(0); cell.setColspan(2); cell.setPadding(padding); cell.setPaddingBottom(0); cell.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell); cell = new PdfPCell(new Phrase(meetingTime, italicFont)); cell.setBorder(0); cell.setColspan(2); cell.setPadding(padding); cell.setPaddingBottom(0); cell.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell); if (!meeting.getPlannedLocation().equals("")) { cell = new PdfPCell( new Phrase(translate("Location") + ": " + meeting.getPlannedLocation(), italicFont)); cell.setBorder(0); cell.setColspan(2); cell.setPadding(padding); cell.setPaddingBottom(0); cell.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell); } /* * role; review title and description */ cell = new PdfPCell(); cell.setBorder(0); cell.setColspan(2); cell.setPadding(padding); cell.addElement(phraseStrut); cell.addElement(phraseStrut); phrase = new Phrase(); phrase.setLeading(leading); phrase.add(new Chunk(MessageFormat.format(translate("You are invited as {0} to this review ({1})."), translate(attendee.getRole().toString()), getReviewTitle()), boldFont)); cell.addElement(phrase); cell.addElement(phraseStrut); cell.addElement(new Phrase(resiData.getReview().getDescription(), italicFont)); cell.addElement(phraseStrut); /* * Predecessor meeting */ if (meetMgmt.getPredecessorMeeting(meeting) != null) { String preMeetingDate = sdfDate .format(meetMgmt.getPredecessorMeeting(meeting).getProtocol().getDate().getTime()); cell.addElement(new Phrase(MessageFormat .format(translate("This meeting ties up to the review meeting of {0}."), preMeetingDate), plainFont)); cell.addElement(phraseStrut); } /* * If there is a product name defined */ if (!Data.getInstance().getResiData().getReview().getProduct().getName().trim().equals("")) { /* * the product of this review */ cell.addElement(new Phrase(translate("The following product will be reviewed:"), plainFont)); cell.addElement(phraseStrut); table.addCell(cell); /* * Write name and version of the reviewed product */ Phrase phrName = new Phrase(Data.getInstance().getResiData().getReview().getProduct().getName(), boldItalicFont); phrName.setLeading(leading); PdfPCell cellName = new PdfPCell(phrName); cellName.setColspan(2); cellName.setBorderWidth(0); cellName.setPadding(padding); cellName.setPaddingBottom(0); cellName.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cellName); /* * If there is a product version defined */ if (!Data.getInstance().getResiData().getReview().getProduct().getVersion().trim().equals("")) { Phrase phrVersion = new Phrase( translate("Product Version") + ": " + Data.getInstance().getResiData().getReview().getProduct().getVersion(), italicFont); phrVersion.setLeading(leading); PdfPCell cellVersion = new PdfPCell(phrVersion); cellVersion.setColspan(2); cellVersion.setBorderWidth(0); cellVersion.setPadding(padding); cellVersion.setPaddingBottom(0); cellVersion.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cellVersion); } table.addCell(createVerticalStrut(PDFTools.cmToPt(0.7f), 2)); } else { table.addCell(cell); } boolean showBottomStrut = false; /* * List point used for lists */ Phrase phraseListPoint = new Phrase("", boldFont); phraseListPoint.setLeading(leading); PdfPCell cellListPoint = new PdfPCell(); cellListPoint.addElement(phraseListPoint); cellListPoint.setBorderWidth(0); cellListPoint.setPadding(padding); cellListPoint.setPaddingLeft(padding * 2); cellListPoint.setPaddingBottom(0); /* * Textual references */ for (String ref : Application.getInstance().getReviewMgmt().getProductReferences()) { Phrase phraseRef = new Phrase(ref, italicFontSmall); phraseRef.setLeading(leading); PdfPCell cellRef = new PdfPCell(); cellRef.addElement(phraseRef); cellRef.setBorderWidth(0); cellRef.setPadding(padding); cellRef.setPaddingBottom(0); table.addCell(cellListPoint); table.addCell(cellRef); showBottomStrut = true; } /* * External file references */ for (File ref : Application.getInstance().getReviewMgmt().getExtProdReferences()) { Phrase phraseRef = new Phrase(); phraseRef.add(new Chunk(ref.getName(), italicFontSmall)); phraseRef.add(new Chunk(" (" + translate("File Attachment") + ")", italicFontSmall)); phraseRef.setFont(plainFont); phraseRef.setLeading(leading); PdfPCell cellRef = new PdfPCell(); cellRef.addElement(phraseRef); cellRef.setBorderWidth(0); cellRef.setPadding(padding); cellRef.setPaddingBottom(0); table.addCell(cellListPoint); if (attachProdExtRefs) { cellRef.setCellEvent(new PDFCellEventExtRef(pdfWriter, ref)); } table.addCell(cellRef); showBottomStrut = true; } if (showBottomStrut) { table.addCell(createVerticalStrut(PDFTools.cmToPt(0.4f), 2)); } /* * "please prepare" for the reviwers; on questions ask moderators */ cell = new PdfPCell(); cell.setBorder(0); cell.setColspan(2); cell.setPadding(padding); phrase = new Phrase(); phrase.setLeading(leading); if (attendee.getAspects() != null) { phrase.add(new Chunk(translate( "Please prepare for the review meeting by checking the product for the aspects which are associated to you.") + " ", plainFont)); } List<Attendee> moderators = new ArrayList<Attendee>(); for (Attendee a : Application.getInstance().getAttendeeMgmt().getAttendees()) { if (a.getRole() == Role.MODERATOR) { moderators.add(a); } } if (moderators.size() == 1 && attendee.getRole() != Role.MODERATOR) { phrase.add(new Chunk(translate( "Please do not hesitate to contact the review moderator if you have any questions:") + " ", plainFont)); } else if (moderators.size() > 1 && attendee.getRole() != Role.MODERATOR) { phrase.add(new Chunk(translate( "Please do not hesitate to contact one of the review moderators if you have any questions:") + " ", plainFont)); } cell.addElement(phrase); Phrase phraseStrutSmall = new Phrase(" "); phraseStrutSmall.setLeading(leading / 2); if (moderators.size() > 0 && attendee.getRole() != Role.MODERATOR) { for (Attendee mod : moderators) { cell.addElement(phraseStrutSmall); cell.addElement(new Phrase(mod.getName(), boldFont)); cell.addElement(new Phrase(mod.getContact(), italicFont)); } } table.addCell(cell); pdfDoc.add(table); } catch (Exception e) { /* * Not part of unit testing because this exception is only thrown if * an internal error occurs. */ throw new ExportException(translate("Cannot generate front page of the PDF document.")); } }
From source file:org.revager.export.InvitationPDFExporter.java
License:Open Source License
/** * Write the aspects.// w ww .ja va2 s. co m * * @throws ExportException * If an error occurs while writing the aspects */ private void writeAspects() throws ExportException { /* * If the role of the attendee is not reviewer show all aspects */ List<Aspect> aspects = null; if (attendee.getRole() == Role.REVIEWER) { aspects = attMgmt.getAspects(attendee); } else { aspects = aspMgmt.getAspects(); } if (aspects.size() == 0) { return; } try { Font descriptionFont = new Font( BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED), 10); Font directiveFont = new Font( BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.EMBEDDED), 10); Font categoryFont = new Font( BaseFont.createFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 10); Font reviewerFont = new Font( BaseFont.createFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 9); /* * Build base table for all attendees */ PdfPTable tableAspects = new PdfPTable(1); tableAspects.setWidthPercentage(100); tableAspects.setSplitRows(false); tableAspects.getDefaultCell().setBorderWidth(0); tableAspects.getDefaultCell().setPadding(0); boolean grayBackground = true; for (Aspect asp : aspects) { /* * Build table for one aspect */ PdfPTable tableAspect = new PdfPTable(new float[] { 0.70f, 0.30f }); tableAspect.setWidthPercentage(100); tableAspect.getDefaultCell().setBorderWidth(0); tableAspect.getDefaultCell().setPadding(0); PdfPCell cellAspect = new PdfPCell(); cellAspect.setPadding(0); cellAspect.setBorder(0); Phrase phraseStrut = new Phrase(" "); phraseStrut.setLeading(leading * 0.4f); /* * directive and description of the aspect */ PdfPCell cell = new PdfPCell(); cell.setBorderWidth(0); cell.setPadding(padding * 0.4f); cell.setPaddingBottom(padding * 1.5f); cell.addElement(new Phrase(asp.getDirective(), directiveFont)); cell.addElement(phraseStrut); cell.addElement(new Phrase(asp.getDescription(), descriptionFont)); /* * the reviewers of this aspect (moderator only) */ if (attendee.getRole() == Role.MODERATOR) { cell.addElement(phraseStrut); cell.addElement(phraseStrut); String separator = ""; Phrase phraseReviewers = new Phrase(); phraseReviewers.setLeading(leading); phraseReviewers.setFont(reviewerFont); for (Attendee att : attMgmt.getAttendees()) { if (attMgmt.hasAspect(asp, att)) { phraseReviewers.add(new Chunk(separator + att.getName(), reviewerFont)); separator = " "; } } cell.addElement(phraseReviewers); } tableAspect.addCell(cell); /* * category of the aspect */ cell = new PdfPCell(new Phrase(asp.getCategory(), categoryFont)); cell.setBorderWidth(0); cell.setPadding(padding * 0.4f); cell.setPaddingTop(padding * 1.1f); cell.setHorizontalAlignment(Element.ALIGN_RIGHT); tableAspect.addCell(cell); cellAspect.addElement(tableAspect); cellAspect.setPadding(0); cellAspect.setPaddingLeft(padding); cellAspect.setPaddingRight(padding); if (grayBackground == true) { grayBackground = false; cellAspect.setBackgroundColor(cellBackground); } else { grayBackground = true; } /* * Add aspect to the list */ tableAspects.addCell(cellAspect); } PdfPCell cellBottomLine = new PdfPCell(); cellBottomLine.setPadding(0); cellBottomLine.setBorderWidth(0); cellBottomLine.setBorderWidthBottom(1); cellBottomLine.setBorderColor(cellBackground); tableAspects.addCell(cellBottomLine); /* * Add the attendee base table to the document */ pdfDoc.add(tableAspects); } catch (Exception e) { /* * Not part of unit testing because this exception is only thrown if * an internal error occurs. */ throw new ExportException(translate("Cannot put aspects into the PDF document.")); } }
From source file:org.revager.export.PDFPageEventHelper.java
License:Open Source License
@Override public void onEndPage(PdfWriter writer, Document document) { int columnNumber; try {//from ww w. j a va2 s .co m Rectangle page = document.getPageSize(); float pageWidth = page.getWidth() - document.leftMargin() - document.rightMargin(); /* * Write marks */ setMarks(writer, document); /* * Define fonts */ headBaseFont = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED); Font headFont = new Font(headBaseFont, headFontSize); footBaseFont = BaseFont.createFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED); Font footFont = new Font(footBaseFont, footFontSize); /* * Cell fill for space between head/foot and content */ PdfPCell cellFill = new PdfPCell(); cellFill.setMinimumHeight(PDFTools.cmToPt(0.8f)); cellFill.setBorderWidth(0); /* * Write head */ if (headLogoPath != null) { columnNumber = 2; } else { columnNumber = 1; } PdfPTable head = new PdfPTable(columnNumber); Phrase phraseTitle = new Phrase(headTitle, headFont); PdfPCell cellTitle = new PdfPCell(phraseTitle); cellTitle.setHorizontalAlignment(Element.ALIGN_LEFT); cellTitle.setVerticalAlignment(Element.ALIGN_BOTTOM); cellTitle.setPaddingTop(0); cellTitle.setPaddingBottom(PDFTools.cmToPt(0.2f)); cellTitle.setPaddingLeft(0); cellTitle.setPaddingRight(0); cellTitle.setBorderWidthTop(0); cellTitle.setBorderWidthBottom(0.5f); cellTitle.setBorderWidthLeft(0); cellTitle.setBorderWidthRight(0); head.addCell(cellTitle); if (headLogoPath != null) { Image headLogo = Image.getInstance(headLogoPath); headLogo.scaleToFit(PDFTools.cmToPt(5.0f), PDFTools.cmToPt(1.1f)); PdfPCell cellLogo = new PdfPCell(headLogo); cellLogo.setHorizontalAlignment(Element.ALIGN_RIGHT); cellLogo.setVerticalAlignment(Element.ALIGN_BOTTOM); cellLogo.setPaddingTop(0); cellLogo.setPaddingBottom(PDFTools.cmToPt(0.15f)); cellLogo.setPaddingLeft(0); cellLogo.setPaddingRight(0); cellLogo.setBorderWidthTop(0); cellLogo.setBorderWidthBottom(0.5f); cellLogo.setBorderWidthLeft(0); cellLogo.setBorderWidthRight(0); head.addCell(cellLogo); head.addCell(cellFill); } head.addCell(cellFill); head.setTotalWidth(pageWidth); head.writeSelectedRows(0, -1, document.leftMargin(), page.getHeight() - document.topMargin() + head.getTotalHeight(), writer.getDirectContent()); /* * Write foot */ if (footText == null) { footText = " "; } PdfPTable foot = new PdfPTable(1); foot.addCell(cellFill); PdfPCell cellFootText = new PdfPCell(new Phrase(footText, footFont)); cellFootText.setHorizontalAlignment(Element.ALIGN_RIGHT); cellFootText.setVerticalAlignment(Element.ALIGN_TOP); cellFootText.setPaddingTop(PDFTools.cmToPt(0.15f)); cellFootText.setPaddingBottom(0); cellFootText.setPaddingLeft(0); cellFootText.setPaddingRight(0); cellFootText.setBorderWidthTop(0.5f); cellFootText.setBorderWidthBottom(0); cellFootText.setBorderWidthLeft(0); cellFootText.setBorderWidthRight(0); foot.addCell(cellFootText); /* * Print page numbers */ PdfContentByte contentByte = writer.getDirectContent(); contentByte.saveState(); String text = MessageFormat.format(translate("Page {0} of") + " ", writer.getPageNumber()); float textSize = footBaseFont.getWidthPoint(text, footFontSize); float textBase = document.bottom() - PDFTools.cmToPt(1.26f); contentByte.beginText(); contentByte.setFontAndSize(footBaseFont, footFontSize); float adjust; if (footText.trim().equals("")) { adjust = (pageWidth / 2) - (textSize / 2) - footBaseFont.getWidthPoint("0", footFontSize); } else { adjust = 0; } contentByte.setTextMatrix(document.left() + adjust, textBase); contentByte.showText(text); contentByte.endText(); contentByte.addTemplate(template, document.left() + adjust + textSize, textBase); contentByte.stroke(); contentByte.restoreState(); foot.setTotalWidth(pageWidth); foot.writeSelectedRows(0, -1, document.leftMargin(), document.bottomMargin(), writer.getDirectContent()); } catch (Exception e) { /* * Not part of unit testing because this exception is only thrown if * an internal error occurs. */ throw new ExceptionConverter(e); } }
From source file:org.revager.export.ProtocolPDFExporter.java
License:Open Source License
/** * Write the title page of the protocol. * //from w w w. ja v a2s. c o m * @param meetings * the meetings * @param attachProdExtRefs * true, if the external reference of the product should be part * of the protocol * * @throws ExportException * If an error occurs while writing the title page */ protected void writeTitlePage(List<Meeting> meetings, boolean attachProdExtRefs) throws ExportException { try { Font plainFont = new Font(BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED), 10); Font plainFontSmall = new Font( BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED), 8); Font boldFont = new Font( BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.EMBEDDED), 11); Font italicFont = new Font( BaseFont.createFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 10); Font italicFontSmall = new Font( BaseFont.createFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 8); Font boldItalicFont = new Font( BaseFont.createFont(BaseFont.HELVETICA_BOLDOBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 11); Font boldItalicFontSmall = new Font( BaseFont.createFont(BaseFont.HELVETICA_BOLDOBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 8); Font protocolFontTitle = new Font( BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.EMBEDDED), 20); Font reviewFontTitle = new Font( BaseFont.createFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 15); Font meetingFontTitle = new Font( BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED), 13); /* * Title of the protocol */ PdfPTable tableTitlePage = new PdfPTable(new float[] { 0.6f, 0.4f }); tableTitlePage.setWidthPercentage(100); tableTitlePage.setSplitRows(false); tableTitlePage.getDefaultCell().setBorder(0); tableTitlePage.getDefaultCell().setPadding(0); String protocolTitle = translate("Findings List of the Review"); if (meetings.size() == 1) { protocolTitle = translate("Findings List of the Review Meeting"); } PdfPCell cellProtocol = new PdfPCell(new Phrase(protocolTitle, protocolFontTitle)); cellProtocol.setHorizontalAlignment(Element.ALIGN_CENTER); cellProtocol.setColspan(2); cellProtocol.setBorderWidth(0); cellProtocol.setPaddingTop(PDFTools.cmToPt(0.4f)); cellProtocol.setPaddingBottom(PDFTools.cmToPt(0.2f)); tableTitlePage.addCell(cellProtocol); /* * Name of the review */ PdfPCell cellRevName = new PdfPCell( new Phrase(Application.getInstance().getReviewMgmt().getReviewName(), reviewFontTitle)); cellRevName.setHorizontalAlignment(Element.ALIGN_CENTER); cellRevName.setColspan(2); cellRevName.setBorderWidth(0); cellRevName.setPaddingBottom(PDFTools.cmToPt(1.6f)); tableTitlePage.addCell(cellRevName); /* * Review meeting date and location */ if (meetings.size() == 1) { sdfDate.setTimeZone(meetings.get(0).getProtocol().getDate().getTimeZone()); sdfTime.setTimeZone(meetings.get(0).getProtocol().getDate().getTimeZone()); String meetingDate = sdfDate.format(meetings.get(0).getProtocol().getDate().getTime()); String meetingTime = sdfTime.format(meetings.get(0).getProtocol().getStart().getTime()) + " - " + sdfTime.format(meetings.get(0).getProtocol().getEnd().getTime()) + " [" + meetings.get(0).getProtocol().getEnd().getTimeZone().getDisplayName() + "]"; Phrase phraseMeeting = new Phrase(meetingDate + " (" + meetingTime + ")", meetingFontTitle); PdfPCell cellMeeting = new PdfPCell(phraseMeeting); cellMeeting.setColspan(2); cellMeeting.setHorizontalAlignment(Element.ALIGN_CENTER); cellMeeting.setPadding(0); cellMeeting.setBorderWidth(0); tableTitlePage.addCell(cellMeeting); String location = meetings.get(0).getProtocol().getLocation(); if (location.trim().equals("")) { location = "--"; } cellMeeting = new PdfPCell(new Phrase(translate("Location") + ": " + location, meetingFontTitle)); cellMeeting.setColspan(2); cellMeeting.setHorizontalAlignment(Element.ALIGN_CENTER); cellMeeting.setPadding(0); cellMeeting.setBorderWidth(0); cellMeeting.setPaddingTop(PDFTools.cmToPt(0.15f)); cellMeeting.setPaddingBottom(PDFTools.cmToPt(1.9f)); tableTitlePage.addCell(cellMeeting); } /* * Review description and comments */ PdfPCell cellRevDesc = new PdfPCell(new Phrase(translate("Review Description:"), boldItalicFont)); cellRevDesc.setBorderWidth(0); cellRevDesc.setPadding(padding); tableTitlePage.addCell(cellRevDesc); cellRevDesc = new PdfPCell(new Phrase(translate("Review Comments"), boldFont)); cellRevDesc.setBorderWidth(0); cellRevDesc.setPadding(padding); cellRevDesc.setBackgroundColor(cellBackground); tableTitlePage.addCell(cellRevDesc); String revDesc = Application.getInstance().getReviewMgmt().getReviewDescription(); if (revDesc.trim().equals("")) { revDesc = "--"; } Phrase phrDesc = new Phrase(revDesc, plainFont); phrDesc.setLeading(leading); cellRevDesc = new PdfPCell(); cellRevDesc.addElement(phrDesc); cellRevDesc.setBorderWidth(0); cellRevDesc.setPadding(padding); cellRevDesc.setPaddingBottom(padding * 1.8f); tableTitlePage.addCell(cellRevDesc); String revComm = Application.getInstance().getReviewMgmt().getReviewComments(); if (revComm.trim().equals("")) { revComm = "--"; } Phrase phrComm = new Phrase(revComm, italicFont); phrComm.setLeading(leading); cellRevDesc = new PdfPCell(); cellRevDesc.addElement(phrComm); cellRevDesc.setBorderWidth(0); cellRevDesc.setPadding(padding); cellRevDesc.setPaddingBottom(padding * 1.8f); cellRevDesc.setBackgroundColor(cellBackground); tableTitlePage.addCell(cellRevDesc); tableTitlePage.addCell(createVerticalStrut(PDFTools.cmToPt(1.0f), 2)); /* * Product title */ PdfPTable tableProduct = new PdfPTable(new float[] { 0.07f, 0.93f }); tableProduct.setWidthPercentage(100); tableProduct.setSplitRows(false); tableProduct.getDefaultCell().setBorderWidth(0); tableProduct.getDefaultCell().setPadding(0); PdfPCell cellProdTitle = new PdfPCell(new Phrase(translate("Reviewed Product:"), boldItalicFont)); cellProdTitle.setColspan(2); cellProdTitle.setPadding(padding); cellProdTitle.setBorder(0); tableProduct.addCell(cellProdTitle); /* * List point used for lists */ Phrase phraseListPoint = new Phrase("", boldFont); phraseListPoint.setLeading(leading); PdfPCell cellListPoint = new PdfPCell(); cellListPoint.addElement(phraseListPoint); cellListPoint.setBorderWidth(0); cellListPoint.setPadding(padding); cellListPoint.setPaddingLeft(padding * 2); cellListPoint.setPaddingBottom(0); /* * Write name and version of the reviewed product */ String prodName = Data.getInstance().getResiData().getReview().getProduct().getName(); if (prodName.trim().equals("")) { prodName = "--"; } Phrase phrName = new Phrase(translate("Product Name") + ": " + prodName, plainFont); phrName.setLeading(leading); PdfPCell cellName = new PdfPCell(); cellName.addElement(phrName); cellName.setBorderWidth(0); cellName.setPadding(padding); cellName.setPaddingBottom(0); tableProduct.addCell(cellListPoint); tableProduct.addCell(cellName); String prodVersion = Data.getInstance().getResiData().getReview().getProduct().getVersion(); if (prodVersion.trim().equals("")) { prodVersion = "--"; } Phrase phrVersion = new Phrase(translate("Product Version") + ": " + prodVersion, plainFont); phrVersion.setLeading(leading); PdfPCell cellVersion = new PdfPCell(); cellVersion.addElement(phrVersion); cellVersion.setBorderWidth(0); cellVersion.setPadding(padding); cellVersion.setPaddingBottom(0); tableProduct.addCell(cellListPoint); tableProduct.addCell(cellVersion); if (Application.getInstance().getReviewMgmt().getNumberOfProdRefs() > 0) { /* * Table of product references */ PdfPCell cellRefTitle = new PdfPCell(new Phrase(translate("Product References:"), boldItalicFont)); cellRefTitle.setBorderWidth(0); cellRefTitle.setPadding(padding); cellRefTitle.setPaddingTop(padding * 4); cellRefTitle.setColspan(2); tableProduct.addCell(cellRefTitle); /* * Textual references */ for (String ref : Application.getInstance().getReviewMgmt().getProductReferences()) { Phrase phraseRef = new Phrase(ref, plainFont); phraseRef.setLeading(leading); PdfPCell cellRef = new PdfPCell(); cellRef.addElement(phraseRef); cellRef.setBorderWidth(0); cellRef.setPadding(padding); cellRef.setPaddingBottom(0); tableProduct.addCell(cellListPoint); tableProduct.addCell(cellRef); } /* * External file references */ for (File ref : Application.getInstance().getReviewMgmt().getExtProdReferences()) { Phrase phraseRef = new Phrase(); phraseRef.add(new Chunk(ref.getName(), plainFont)); phraseRef.add(new Chunk(" (" + translate("File Attachment") + ")", italicFont)); phraseRef.setFont(plainFont); phraseRef.setLeading(leading); PdfPCell cellRef = new PdfPCell(); cellRef.addElement(phraseRef); cellRef.setBorderWidth(0); cellRef.setPadding(padding); cellRef.setPaddingBottom(0); tableProduct.addCell(cellListPoint); if (attachProdExtRefs) { cellRef.setCellEvent(new PDFCellEventExtRef(pdfWriter, ref)); } tableProduct.addCell(cellRef); } } /* * Add the product table to the base table */ PdfPCell cellProduct = new PdfPCell(tableProduct); cellProduct.setBorder(0); cellProduct.setPadding(0); tableTitlePage.addCell(cellProduct); /* * List the meetings of this review */ PdfPCell cellInfos = new PdfPCell(); cellInfos.setBorder(0); cellInfos.setPadding(0); /* * meeting list title or meeting info title */ PdfPTable tableInfos = new PdfPTable(new float[] { 0.09f, 0.91f }); tableInfos.setWidthPercentage(100); tableInfos.setSplitRows(false); tableInfos.getDefaultCell().setBorderWidth(0); tableInfos.getDefaultCell().setPadding(0); String title = translate("Meeting Information:"); if (meetings.size() > 1) { title = translate("Findings Lists of the Review Meetings:"); } PdfPCell cellInfosTitle = new PdfPCell(new Phrase(title, boldFont)); cellInfosTitle.setColspan(2); cellInfosTitle.setPadding(padding); cellInfosTitle.setBorder(0); tableInfos.addCell(cellInfosTitle); if (meetings.size() > 1) { /* * list the meetings of this review (for review protocols) */ for (Meeting m : meetings) { Protocol protocol = m.getProtocol(); if (protocol != null) { String meetingDate = sdfDate.format(protocol.getDate().getTime()); String meetingTime = sdfTime.format(protocol.getStart().getTime()) + " - " + sdfTime.format(protocol.getEnd().getTime()) + " [" + protocol.getEnd().getTimeZone().getDisplayName() + "]"; String protLoc = protocol.getLocation(); if (protLoc.trim().equals("")) { protLoc = "--"; } Phrase phraseMeet = new Phrase( translate("Date") + ": " + meetingDate + "\n" + translate("Time") + ": " + meetingTime + "\n" + translate("Location") + ": " + protLoc, italicFont); Paragraph paraMeet = new Paragraph(); paraMeet.setLeading(leading); Anchor anchor = new Anchor(phraseMeet); anchor.setReference("#" + Long.toString( protocol.getDate().getTimeInMillis() + protocol.getStart().getTimeInMillis())); paraMeet.add(anchor); PdfPCell cellMeet = new PdfPCell(); cellMeet.addElement(paraMeet); cellMeet.setBorderWidth(0); cellMeet.setPadding(padding); tableInfos.addCell(cellListPoint); tableInfos.addCell(cellMeet); } } } else { Protocol prot = meetings.get(0).getProtocol(); Duration meetDur = DatatypeFactory.newInstance() .newDuration(prot.getEnd().getTimeInMillis() - prot.getStart().getTimeInMillis()); Phrase phraseMeetInfo = new Phrase( translate("Duration of the meeting") + ":\n" + meetDur.getHours() + " " + translate("Hour(s)") + ", " + meetDur.getMinutes() + " " + translate("Minute(s)"), italicFont); phraseMeetInfo.setLeading(leading); PdfPCell cellMeetInfo = new PdfPCell(); cellMeetInfo.addElement(phraseMeetInfo); cellMeetInfo.setBorderWidth(0); cellMeetInfo.setPadding(padding); tableInfos.addCell(cellListPoint); tableInfos.addCell(cellMeetInfo); /* * meeting number of findings */ phraseMeetInfo = new Phrase(translate("Number of findings") + ": " + prot.getFindings().size(), italicFont); phraseMeetInfo.setLeading(leading); cellMeetInfo = new PdfPCell(); cellMeetInfo.addElement(phraseMeetInfo); cellMeetInfo.setBorderWidth(0); cellMeetInfo.setPadding(padding); tableInfos.addCell(cellListPoint); tableInfos.addCell(cellMeetInfo); /* * meeting number of attendees */ phraseMeetInfo = new Phrase( translate("Number of attendees") + ": " + protMgmt.getAttendees(prot).size(), italicFont); phraseMeetInfo.setLeading(leading); cellMeetInfo = new PdfPCell(); cellMeetInfo.addElement(phraseMeetInfo); cellMeetInfo.setBorderWidth(0); cellMeetInfo.setPadding(padding); tableInfos.addCell(cellListPoint); tableInfos.addCell(cellMeetInfo); } cellInfos.addElement(tableInfos); cellInfos.setBackgroundColor(cellBackground); cellInfos.setPaddingBottom(padding); tableTitlePage.addCell(cellInfos); /* * Insert vertical strut */ tableTitlePage.addCell(createVerticalStrut(PDFTools.cmToPt(1.0f), 2)); /* * Write general impression and recommendation */ PdfPTable tableRevInfo = new PdfPTable(new float[] { 0.5f, 0.5f }); tableRevInfo.setWidthPercentage(100); tableRevInfo.setSplitRows(false); tableRevInfo.getDefaultCell().setBorderWidth(0); tableRevInfo.getDefaultCell().setPadding(0); /* * Insert vertical strut */ tableRevInfo.addCell(createVerticalStrut(PDFTools.cmToPt(0.5f), 2)); PdfPCell cellImpr = new PdfPCell( new Phrase(translate("General impressions of the product:"), boldFont)); cellImpr.setBorderWidth(0); cellImpr.setPadding(padding); cellImpr.setBorderColor(verticalBorderColor); cellImpr.setBorderWidthLeft(verticalBorderWidth); tableRevInfo.addCell(cellImpr); PdfPCell cellReco = new PdfPCell( new Phrase(translate("Final recommendation for the product:"), boldFont)); cellReco.setBorderWidth(0); cellReco.setPadding(padding); cellReco.setBorderColor(verticalBorderColor); cellReco.setBorderWidthLeft(verticalBorderWidth); tableRevInfo.addCell(cellReco); String impression = Application.getInstance().getReviewMgmt().getImpression(); if (impression.trim().equals("")) { impression = "--"; } Phrase phrImpr = new Phrase(impression, italicFont); phrImpr.setLeading(leading); cellImpr = new PdfPCell(); cellImpr.addElement(phrImpr); cellImpr.setBorderWidth(0); cellImpr.setPadding(padding); cellImpr.setPaddingBottom(padding * 1.8f); cellImpr.setBorderColor(verticalBorderColor); cellImpr.setBorderWidthLeft(verticalBorderWidth); tableRevInfo.addCell(cellImpr); String recommendation = Application.getInstance().getReviewMgmt().getRecommendation(); if (recommendation.trim().equals("")) { recommendation = "--"; } Phrase phrReco = new Phrase(recommendation, italicFont); phrReco.setLeading(leading); cellReco = new PdfPCell(); cellReco.addElement(phrReco); cellReco.setBorderWidth(0); cellReco.setPadding(padding); cellReco.setPaddingBottom(padding * 1.8f); cellReco.setBorderColor(verticalBorderColor); cellReco.setBorderWidthLeft(verticalBorderWidth); tableRevInfo.addCell(cellReco); /* * Add vertical strut */ tableRevInfo.addCell(createVerticalStrut(PDFTools.cmToPt(0.8f), 2)); /* * Write possible severities for this review */ String severities = ""; String separator = ""; for (String sev : Application.getInstance().getSeverityMgmt().getSeverities()) { severities = severities + separator + sev; separator = "; "; } Phrase phrSeverities = new Phrase(); phrSeverities.add(new Chunk( translate("The severities of the findings in this review (descending order of importance):"), italicFontSmall)); phrSeverities.add(new Chunk(" " + severities, boldItalicFontSmall)); phrSeverities.setLeading(leading); PdfPCell cellSevs = new PdfPCell(); cellSevs.setColspan(2); cellSevs.addElement(phrSeverities); cellSevs.setBorderWidth(0); cellSevs.setPadding(padding); tableRevInfo.addCell(cellSevs); /* * Short review statistics */ if (meetings.size() > 1) { Phrase phrRevStat = new Phrase(MessageFormat.format(translate( "This review consists of {0} attendees, {1} findings, {2} meetings and {3} aspects."), Application.getInstance().getReviewMgmt().getNumberOfAttendees(), Application.getInstance().getReviewMgmt().getNumberOfFindings(), Application.getInstance().getReviewMgmt().getNumberOfMeetings(), Application.getInstance().getReviewMgmt().getNumberOfAspects()), italicFontSmall); phrRevStat.setLeading(leading); PdfPCell cellRevStat = new PdfPCell(); cellRevStat.setColspan(2); cellRevStat.setHorizontalAlignment(Element.ALIGN_CENTER); cellRevStat.addElement(phrRevStat); cellRevStat.setBorderWidth(0); cellRevStat.setPadding(padding); cellRevStat.setPaddingTop(0); tableRevInfo.addCell(cellRevStat); } /* * Write the date of creation */ String creationDate = sdfDate.format(new Date().getTime()); Phrase phrCreationDate = new Phrase( translate("This finding has been created with RevAger on") + " " + creationDate, plainFontSmall); phrCreationDate.setLeading(leading); PdfPCell cellCrDate = new PdfPCell(); cellCrDate.setColspan(2); cellCrDate.setHorizontalAlignment(Element.ALIGN_CENTER); cellCrDate.addElement(phrCreationDate); cellCrDate.setBorderWidth(0); cellCrDate.setPadding(0); cellCrDate.setPaddingLeft(padding); cellCrDate.setPaddingRight(padding); tableRevInfo.addCell(cellCrDate); /* * Add content to the base table */ PdfPCell cellRevInfo = new PdfPCell(); cellRevInfo.setColspan(2); cellRevInfo.setBorder(0); cellRevInfo.setPadding(0); cellRevInfo.addElement(tableRevInfo); tableTitlePage.addCell(cellRevInfo); pdfDoc.add(tableTitlePage); } catch (Exception e) { /* * Not part of unit testing because this exception is only thrown if * an internal error occurs. */ throw new ExportException(translate("Cannot generate front page of the PDF document.")); } }
From source file:org.revager.export.ProtocolPDFExporter.java
License:Open Source License
/** * Writes the given meeting to the protocol. * /*from www . j a v a2 s . c om*/ * @param meeting * the meeting * @param attachExtRefs * true if the external references should be part of the protocol * @param showSignatureFields * true, if the signature fields should be part of the protocol * * @throws ExportException * If an error occurs while writing the meeting */ protected void writeMeeting(Meeting meeting, boolean attachExtRefs, boolean showSignatureFields) throws ExportException { Protocol protocol = meeting.getProtocol(); if (protocol != null) { try { Font plainFont = new Font( BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED), 10); Font boldFont = new Font( BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.EMBEDDED), 10); Font italicFont = new Font( BaseFont.createFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 10); Font boldItalicFont = new Font( BaseFont.createFont(BaseFont.HELVETICA_BOLDOBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 10); Font boldFontTitle = new Font( BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.EMBEDDED), 17); Font italicFontTitle = new Font( BaseFont.createFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 13); /* * Base table for the meeting properties */ PdfPTable tableMeeting = new PdfPTable(2); tableMeeting.setWidthPercentage(100); tableMeeting.setSplitRows(false); tableMeeting.getDefaultCell().setBorderWidth(0); tableMeeting.getDefaultCell().setPadding(0); /* * Write date, time and location of the meeting */ String meetingDate = sdfDate.format(protocol.getDate().getTime()); String meetingTime = sdfTime.format(protocol.getStart().getTime()) + " - " + sdfTime.format(protocol.getEnd().getTime()) + " [" + protocol.getEnd().getTimeZone().getDisplayName() + "]"; Anchor anchorTitle = new Anchor(translate("Review Meeting on") + " " + meetingDate, boldFontTitle); anchorTitle.setName(Long .toString(protocol.getDate().getTimeInMillis() + protocol.getStart().getTimeInMillis())); PdfPCell cellTitle = new PdfPCell(anchorTitle); cellTitle.setColspan(2); cellTitle.setHorizontalAlignment(Element.ALIGN_CENTER); cellTitle.setPadding(0); cellTitle.setBorderWidth(0); cellTitle.setPaddingTop(PDFTools.cmToPt(0.6f)); cellTitle.setPaddingBottom(padding * 2); tableMeeting.addCell(cellTitle); PdfPCell cellTime = new PdfPCell(new Phrase(meetingTime, italicFontTitle)); cellTime.setColspan(2); cellTime.setHorizontalAlignment(Element.ALIGN_CENTER); cellTime.setPadding(0); cellTime.setBorderWidth(0); cellTime.setPaddingBottom(padding * 2); tableMeeting.addCell(cellTime); String location = protocol.getLocation(); if (location.trim().equals("")) { location = "--"; } PdfPCell cellLocation = new PdfPCell( new Phrase(translate("Location") + ": " + location, italicFontTitle)); cellLocation.setColspan(2); cellLocation.setHorizontalAlignment(Element.ALIGN_CENTER); cellLocation.setPadding(0); cellLocation.setBorderWidth(0); cellLocation.setPaddingBottom(PDFTools.cmToPt(1.5f)); tableMeeting.addCell(cellLocation); /* * Compare with planned meeting */ PdfPCell cellPlanned; boolean plannedDateEqualsProtocolDate = meeting.getPlannedDate() .get(Calendar.DAY_OF_MONTH) == protocol.getDate().get(Calendar.DAY_OF_MONTH) && meeting.getPlannedDate().get(Calendar.MONTH) == protocol.getDate().get(Calendar.MONTH) && meeting.getPlannedDate().get(Calendar.YEAR) == protocol.getDate().get(Calendar.YEAR); boolean plannedStartEqualsProtocolStart = meeting.getPlannedStart().get(Calendar.HOUR) == protocol .getStart().get(Calendar.HOUR) && meeting.getPlannedStart().get(Calendar.MINUTE) == protocol.getStart() .get(Calendar.MINUTE) && meeting.getPlannedStart().get(Calendar.AM_PM) == protocol.getStart().get(Calendar.AM_PM); boolean plannedEndEqualsProtocolEnd = meeting.getPlannedEnd().get(Calendar.HOUR) == protocol .getEnd().get(Calendar.HOUR) && meeting.getPlannedEnd().get(Calendar.MINUTE) == protocol.getEnd().get(Calendar.MINUTE) && meeting.getPlannedEnd().get(Calendar.AM_PM) == protocol.getEnd().get(Calendar.AM_PM); boolean plannedLocationEqualsProtocolLocation = meeting.getPlannedLocation() .equals(protocol.getLocation()); if (plannedDateEqualsProtocolDate && plannedStartEqualsProtocolStart && plannedEndEqualsProtocolEnd && plannedLocationEqualsProtocolLocation) { cellPlanned = new PdfPCell( new Phrase(translate("The meeting took place as it has been planned."), plainFont)); } else { cellPlanned = new PdfPCell(); cellPlanned.addElement(new Phrase(translate( "The meeting didn't take place as it has been planned. The meeting was planned:"), plainFont)); /* * Planned date, time and location */ String plannedDate = sdfDate.format(meeting.getPlannedDate().getTime()); String plannedTime = sdfTime.format(meeting.getPlannedStart().getTime()) + " - " + sdfTime.format(meeting.getPlannedEnd().getTime()) + " [" + meeting.getPlannedEnd().getTimeZone().getDisplayName() + "]"; Phrase phrasePlanned = new Phrase(plannedDate + " (" + plannedTime + "); " + translate("Location") + ": " + meeting.getPlannedLocation(), italicFont); cellPlanned.addElement(phrasePlanned); } cellPlanned.setColspan(2); cellPlanned.setBorderWidth(0); cellPlanned.setPadding(padding); cellPlanned.setPaddingBottom(PDFTools.cmToPt(1.5f)); tableMeeting.addCell(cellPlanned); /* * Comments of the meeting and protocol */ Phrase phraseComments = new Phrase(translate("Comments on the Meeting:"), boldFont); PdfPCell cellComments = new PdfPCell(phraseComments); cellComments.setBorderWidth(0); cellComments.setPadding(padding); cellComments.setBorderColor(verticalBorderColor); cellComments.setBorderWidthLeft(verticalBorderWidth); tableMeeting.addCell(cellComments); phraseComments = new Phrase(translate("Comments on the Findings List:"), boldFont); cellComments = new PdfPCell(phraseComments); cellComments.setBorderWidth(0); cellComments.setPadding(padding); cellComments.setBorderColor(verticalBorderColor); cellComments.setBorderWidthLeft(verticalBorderWidth); tableMeeting.addCell(cellComments); String meetingComments = meeting.getComments(); if (meetingComments.trim().equals("")) { meetingComments = "--"; } phraseComments = new Phrase(meetingComments, italicFont); phraseComments.setLeading(leading); cellComments = new PdfPCell(); cellComments.addElement(phraseComments); cellComments.setBorderWidth(0); cellComments.setPadding(padding); cellComments.setPaddingBottom(padding * 1.8f); cellComments.setBorderColor(verticalBorderColor); cellComments.setBorderWidthLeft(verticalBorderWidth); tableMeeting.addCell(cellComments); String protocolComments = protocol.getComments(); if (protocolComments.trim().equals("")) { protocolComments = "--"; } phraseComments = new Phrase(protocolComments, italicFont); phraseComments.setLeading(leading); cellComments = new PdfPCell(); cellComments.addElement(phraseComments); cellComments.setBorderWidth(0); cellComments.setPadding(padding); cellComments.setPaddingBottom(padding * 1.8f); cellComments.setBorderColor(verticalBorderColor); cellComments.setBorderWidthLeft(verticalBorderWidth); tableMeeting.addCell(cellComments); /* * Strut cell */ tableMeeting.addCell(createVerticalStrut(PDFTools.cmToPt(1.3f), 2)); /* * Write attendees */ if (protMgmt.getAttendees(protocol).size() > 0) { PdfPCell cellAtt = new PdfPCell(new Phrase( translate("The following attendees participated") + " (" + protMgmt.getAttendees(protocol).size() + " " + translate("attendees") + "):", boldItalicFont)); cellAtt.setColspan(2); cellAtt.setPadding(0); cellAtt.setBorderWidth(0); cellAtt.setPadding(padding); cellAtt.setPaddingBottom(PDFTools.cmToPt(0.8f)); tableMeeting.addCell(cellAtt); } pdfDoc.add(tableMeeting); if (protMgmt.getAttendees(protocol).size() > 0) { writeAttendees(protocol, true, true, showSignatureFields); } /* * If there isn't any finding, finish the export here. */ if (findMgmt.getNumberOfFindings(protocol) == 0) { return; } else if (findMgmt.getNumberOfFindings(protocol) == 1) { Finding find = findMgmt.getFindings(protocol).get(0); if (find.getDescription().trim().equals("") && find.getExternalReferences().size() == 0 && find.getReferences().size() == 0 && find.getAspects().size() == 0) { return; } } /* * Write findings */ pdfDoc.newPage(); PdfPTable tableFindIntro = new PdfPTable(1); tableFindIntro.setWidthPercentage(100); Phrase phraseFindIntro = new Phrase( translate("The following findings were recorded by the participating reviewers") + " (" + findMgmt.getNumberOfFindings(protocol) + " " + translate("findings") + "): ", boldItalicFont); phraseFindIntro.setLeading(leading); PdfPCell cellFindIntro = new PdfPCell(); cellFindIntro.addElement(phraseFindIntro); cellFindIntro.setBorderWidth(0); cellFindIntro.setPadding(0); cellFindIntro.setPaddingBottom(PDFTools.cmToPt(0.1f)); tableFindIntro.addCell(cellFindIntro); pdfDoc.add(tableFindIntro); writeFindings(protocol, attachExtRefs); } catch (Exception e) { /* * Not part of unit testing because this exception is only * thrown if an internal error occurs. */ throw new ExportException(translate("Cannot put the selected review meeting in the PDF document.")); } } }
From source file:org.revager.export.ProtocolPDFExporter.java
License:Open Source License
/** * Writes the given attendees to the protocol. * //from w w w .j a v a 2s . co m * @param protocol * the protocol * @param showAttendeesAspects * true, if the aspects of the reviewers should be part of the * protocol * @param showAttendeesPrepTime * true, if the preparation time of the reviewers should be part * of the protocol * @param showSignatureFields * ture, if the signature fields should be part of the protocol * * @throws ExportException * If an error occurs while writing the attendees to the * protocol */ protected void writeAttendees(Protocol protocol, boolean showAttendeesAspects, boolean showAttendeesPrepTime, boolean showSignatureFields) throws ExportException { List<Attendee> atts; if (protocol != null) { atts = protMgmt.getAttendees(protocol); } else { atts = Application.getInstance().getAttendeeMgmt().getAttendees(); } /* * Sort the attendees by their role into different lists */ List<Attendee> reviewers = new ArrayList<Attendee>(); List<Attendee> moderators = new ArrayList<Attendee>(); List<Attendee> scribes = new ArrayList<Attendee>(); List<Attendee> authors = new ArrayList<Attendee>(); List<Attendee> customers = new ArrayList<Attendee>(); List<Attendee> others = new ArrayList<Attendee>(); for (Attendee att : atts) { switch (att.getRole()) { case AUTHOR: authors.add(att); break; case CUSTOMER: customers.add(att); break; case MODERATOR: moderators.add(att); break; case REVIEWER: reviewers.add(att); break; case SCRIBE: scribes.add(att); break; default: others.add(att); break; } } List<List<Attendee>> attendees = new ArrayList<List<Attendee>>(); attendees.add(moderators); attendees.add(scribes); attendees.add(authors); attendees.add(customers); attendees.add(reviewers); attendees.add(others); /* * Write attendees */ try { Font contactFont = new Font(BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED), 10); Font nameFont = new Font( BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.EMBEDDED), 10); Font roleFont = new Font( BaseFont.createFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 10); Font aspectsFont = new Font( BaseFont.createFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 8); Font aspectsTitleFont = new Font( BaseFont.createFont(BaseFont.HELVETICA_BOLDOBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 8); /* * Build base table for all attendees */ PdfPTable tableAttendees = new PdfPTable(1); tableAttendees.setWidthPercentage(100); tableAttendees.setSplitRows(false); tableAttendees.getDefaultCell().setBorderWidth(0); tableAttendees.getDefaultCell().setPadding(0); boolean grayBackground = true; for (List<Attendee> attList : attendees) { for (Attendee att : attList) { /* * Build table for one attendee */ PdfPTable tableAttendee = new PdfPTable(new float[] { 0.80f, 0.20f }); tableAttendee.setWidthPercentage(100); tableAttendee.getDefaultCell().setBorderWidth(0); tableAttendee.getDefaultCell().setPadding(0); PdfPCell cellAttendee = new PdfPCell(); cellAttendee.setPadding(0); cellAttendee.setBorder(0); /* * Name of the attendee */ PdfPCell cell = new PdfPCell(); cell.setBorderWidth(0); cell.setPadding(padding * 0.4f); cell.setPaddingBottom(padding * 1.5f); cell.addElement(new Phrase(att.getName(), nameFont)); cell.addElement(new Phrase(att.getContact(), contactFont)); Phrase phraseStrut = new Phrase(" "); phraseStrut.setLeading(leading * 0.6f); /* * Aspects of this attendee */ if (!attMgmt.getAspects(att).isEmpty() && showAttendeesAspects) { String separator = ""; cell.addElement(phraseStrut); cell.addElement(new Phrase(translate("Assigned aspects:") + " ", aspectsTitleFont)); Phrase phraseAspects = new Phrase(); phraseAspects.setLeading(leading); phraseAspects.setFont(aspectsFont); for (Aspect asp : attMgmt.getAspects(att)) { phraseAspects.add(new Chunk( separator + asp.getDirective() + " (" + asp.getCategory() + ")", aspectsFont)); separator = " "; } cell.addElement(phraseAspects); } /* * Preparation time of the attendee */ Duration prepTime; if (protocol != null) { prepTime = protMgmt.getAttendeePrepTime(att, protocol); } else { prepTime = null; } if (prepTime != null && showAttendeesPrepTime) { cell.addElement(phraseStrut); cell.addElement(new Phrase(translate("Preparation time:") + " ", aspectsTitleFont)); Phrase phrasePrepTime = new Phrase(); phrasePrepTime.setLeading(leading); phrasePrepTime.setFont(aspectsFont); String prep = ""; String separator = ""; if (prepTime.getDays() > 0) { prep = prep + prepTime.getDays() + " " + translate("Day(s)"); separator = ", "; } if (prepTime.getHours() > 0) { prep = prep + separator + prepTime.getHours() + " " + translate("Hour(s)"); separator = ", "; } if (prepTime.getMinutes() >= 0) { prep = prep + separator + prepTime.getMinutes() + " " + translate("Minute(s)"); separator = ", "; } phrasePrepTime.add(new Chunk(prep, aspectsFont)); cell.addElement(phrasePrepTime); } /* * Signature field for the attendee */ if (showSignatureFields) { cell.addElement(phraseStrut); cell.addElement(phraseStrut); cell.addElement(phraseStrut); cell.addElement(phraseStrut); cell.addElement(new Phrase("________________________________________", aspectsFont)); cell.addElement( new Phrase(translate("Date, Signature") + " (" + att.getName() + ")", aspectsFont)); } tableAttendee.addCell(cell); /* * role of the attendee */ cell = new PdfPCell(new Phrase(translate(att.getRole().toString()), roleFont)); cell.setBorderWidth(0); cell.setPadding(padding * 0.4f); cell.setPaddingTop(padding * 1.1f); cell.setHorizontalAlignment(Element.ALIGN_RIGHT); tableAttendee.addCell(cell); cellAttendee.addElement(tableAttendee); cellAttendee.setPadding(0); cellAttendee.setPaddingLeft(padding); cellAttendee.setPaddingRight(padding); if (grayBackground == true) { grayBackground = false; cellAttendee.setBackgroundColor(cellBackground); } else { grayBackground = true; } /* * Add attendee to the list */ tableAttendees.addCell(cellAttendee); } } PdfPCell cellBottomLine = new PdfPCell(); cellBottomLine.setPadding(0); cellBottomLine.setBorderWidth(0); cellBottomLine.setBorderWidthBottom(1); cellBottomLine.setBorderColor(cellBackground); tableAttendees.addCell(cellBottomLine); /* * Add the attendee base table to the document */ pdfDoc.add(tableAttendees); } catch (Exception e) { /* * Not part of unit testing because this exception is only thrown if * an internal error occurs. */ throw new ExportException(translate("Cannot put attendees into the PDF document.")); } }