/** * Constructs a RtfHeaderFooter based on a HeaderFooter with a certain type and displayAt * location. For internal use only. * * @param doc The RtfDocument this RtfHeaderFooter belongs to * @param headerFooter The HeaderFooter to base this RtfHeaderFooter on * @param type The type of RtfHeaderFooter * @param displayAt The display location of this RtfHeaderFooter */ protected RtfHeaderFooter(RtfDocument doc, HeaderFooter headerFooter, int type, int displayAt) { super(new Phrase(""), false); this.document = doc; this.type = type; this.displayAt = displayAt; Paragraph par = new Paragraph(); par.setAlignment(headerFooter.alignment()); if (headerFooter.getBefore() != null) { par.add(headerFooter.getBefore()); } if (headerFooter.isNumbered()) { par.add(new RtfPageNumber(this.document)); } if (headerFooter.getAfter() != null) { par.add(headerFooter.getAfter()); } try { this.content = new Object[1]; if(this.document != null) { this.content[0] = this.document.getMapper().mapElement(par)[0]; ((RtfBasicElement) this.content[0]).setInHeader(true); } else { this.content[0] = par; } } catch(DocumentException de) { de.printStackTrace(); } }
/** * Constructs a RtfHeaderFooter for a HeaderFooter. * * @param doc The RtfDocument this RtfHeaderFooter belongs to * @param headerFooter The HeaderFooter to base this RtfHeaderFooter on */ protected RtfHeaderFooter(RtfDocument doc, HeaderFooter headerFooter) { super(new Phrase(""), false); this.document = doc; Paragraph par = new Paragraph(); par.setAlignment(headerFooter.alignment()); if (headerFooter.getBefore() != null) { par.add(headerFooter.getBefore()); } if (headerFooter.isNumbered()) { par.add(new RtfPageNumber(this.document)); } if (headerFooter.getAfter() != null) { par.add(headerFooter.getAfter()); } try { this.content = new Object[1]; this.content[0] = doc.getMapper().mapElement(par)[0]; ((RtfBasicElement) this.content[0]).setInHeader(true); } catch(DocumentException de) { de.printStackTrace(); } }
/** * Demonstrates creating a footer with the current page number * * */ @Test public void main() throws Exception { Document document = new Document(); RtfWriter2.getInstance(document, PdfTestBase.getOutputStream("PageNumber.rtf")); // Create a new Paragraph for the footer Paragraph par = new Paragraph("Page "); par.setAlignment(Element.ALIGN_RIGHT); // Add the RtfPageNumber to the Paragraph par.add(new RtfPageNumber()); // Create an RtfHeaderFooter with the Paragraph and set it // as a footer for the document RtfHeaderFooter footer = new RtfHeaderFooter(par); document.setFooter(footer); document.open(); for (int i = 1; i <= 300; i++) { document.add(new Paragraph("Line " + i + ".")); } document.close(); }
/** * Demonstrates creating a header with page number and total number of pages * * */ @Test public void main() throws Exception { Document document = new Document(); RtfWriter2.getInstance(document, PdfTestBase.getOutputStream("TotalPageNumber.rtf")); // Create a new Paragraph for the footer Paragraph par = new Paragraph("Page "); // Add the RtfPageNumber to the Paragraph par.add(new RtfPageNumber()); // Add the RtfTotalPageNumber to the Paragraph par.add(" of "); par.add(new RtfTotalPageNumber()); // Create an RtfHeaderFooter with the Paragraph and set it // as a header for the document RtfHeaderFooter header = new RtfHeaderFooter(par); document.setHeader(header); document.open(); for (int i = 1; i <= 300; i++) { document.add(new Paragraph("Line " + i + ".")); } document.close(); }
/** * Extended headers / footers example * * */ @Test public void main() throws Exception { Document document = new Document(); RtfWriter2.getInstance(document, PdfTestBase.getOutputStream("ExtendedHeaderFooter.rtf")); // Create the Paragraphs that will be used in the header. Paragraph date = new Paragraph("01.01.2010"); date.setAlignment(Paragraph.ALIGN_RIGHT); Paragraph address = new Paragraph("TheFirm\nTheRoad 24, TheCity\n" + "+00 99 11 22 33 44"); // Create the RtfHeaderFooter with an array containing the Paragraphs to // add RtfHeaderFooter header = new RtfHeaderFooter(new Element[] { date, address }); // Set the header document.setHeader(header); // Create the table that will be used as the footer Table footer = new Table(2); footer.setBorder(0); footer.getDefaultCell().setBorder(0); footer.setWidth(100); footer.addCell(new Cell("(c) Mark Hall")); Paragraph pageNumber = new Paragraph("Page "); // The RtfPageNumber is an RTF specific element that adds a page number // field pageNumber.add(new RtfPageNumber()); pageNumber.setAlignment(Paragraph.ALIGN_RIGHT); footer.addCell(new Cell(pageNumber)); // Create the RtfHeaderFooter and set it as the footer to use document.setFooter(new RtfHeaderFooter(footer)); document.open(); document.add(new Paragraph("This document has headers and footers created" + " using the RtfHeaderFooter class.")); document.close(); }
/** * This message creates the footer element for the exported document. * * @param queryInstance * The query instance to extract needed data from. * @param user * The user. * @param resourcesManager * The resources manager to retreive resources from. * @return An object to be used as a header. * @throws MalformedURLException * {@link MalformedURLException}. * @throws BadElementException * {@link BadElementException}. */ private Element getFooter(NoteQueryParameters queryInstance, User user, ResourceBundleManager resourcesManager) throws MalformedURLException, BadElementException { Table table = new Table(2); table.setWidths(new float[] { 60, 40 }); table.setWidth(100); table.setPadding(5); table.setBorder(Table.TOP); Cell serviceCell = new Cell(); serviceCell.setBorder(Cell.TOP); serviceCell.add(RtfElementFactory.createChunk( resourcesManager.getText("export.post.footer.service", user.getLanguageLocale()) + " ", null)); serviceCell.add(RtfElementFactory.createChunk(resourcesManager.getText( "export.post.footer.service.provider", user.getLanguageLocale()))); Cell pageNumberCell = new Cell(); pageNumberCell.setHorizontalAlignment(Cell.ALIGN_RIGHT); pageNumberCell.setBorder(Cell.TOP); pageNumberCell.add(RtfElementFactory.createChunk(resourcesManager.getText( "export.post.footer.page", user.getLanguageLocale()) + " ")); pageNumberCell.add(new RtfPageNumber()); pageNumberCell .add(RtfElementFactory.createChunk(" " + resourcesManager.getText("export.post.footer.of", user.getLanguageLocale()) + " ")); pageNumberCell.add(new RtfTotalPageNumber()); table.addCell(serviceCell); table.addCell(pageNumberCell); return table; }
/** * We create a writer that listens to the document and directs a RTF-stream to out * * @param table * MBasicTable * @param document * Document * @param out * OutputStream * @return DocWriter */ @Override protected DocWriter createWriter(final MBasicTable table, final Document document, final OutputStream out) { final RtfWriter2 writer = RtfWriter2.getInstance(document, out); // title final String title = buildTitle(table); if (title != null) { final HeaderFooter header = new RtfHeaderFooter(new Paragraph(title)); header.setAlignment(Element.ALIGN_LEFT); header.setBorder(Rectangle.NO_BORDER); document.setHeader(header); document.addTitle(title); } // advanced page numbers : x/y final Paragraph footerParagraph = new Paragraph(); final Font font = FontFactory.getFont(FontFactory.TIMES_ROMAN, 12, Font.NORMAL); footerParagraph.add(new RtfPageNumber(font)); footerParagraph.add(new Phrase(" / ", font)); footerParagraph.add(new RtfTotalPageNumber(font)); footerParagraph.setAlignment(Element.ALIGN_CENTER); final HeaderFooter footer = new RtfHeaderFooter(footerParagraph); footer.setBorder(Rectangle.TOP); document.setFooter(footer); return writer; }
/** * Extended font example. * * */ @Test public void main() throws Exception { Document document = new Document(); RtfWriter2.getInstance(document, PdfTestBase.getOutputStream("MultipleHeaderFooter.rtf")); // Create the Paragraph that will be used in the header. Paragraph date = new Paragraph("01.01.2010"); date.setAlignment(Element.ALIGN_CENTER); // Create the RtfHeaderFooterGroup for the header. // To display the same header on both pages, but not the // title page set them to left and right pages explicitly. RtfHeaderFooterGroup header = new RtfHeaderFooterGroup(); header.setHeaderFooter(new RtfHeaderFooter(date), RtfHeaderFooter.DISPLAY_LEFT_PAGES); header.setHeaderFooter(new RtfHeaderFooter(date), RtfHeaderFooter.DISPLAY_RIGHT_PAGES); // Set the header document.setHeader(header); // Create the paragraphs that will be used as footers Paragraph titleFooter = new Paragraph("Multiple headers / footers example"); titleFooter.setAlignment(Element.ALIGN_CENTER); Paragraph leftFooter = new Paragraph("Page "); leftFooter.add(new RtfPageNumber()); Paragraph rightFooter = new Paragraph("Page "); rightFooter.add(new RtfPageNumber()); rightFooter.setAlignment(Element.ALIGN_RIGHT); // Create the RtfHeaderGroup for the footer and set the footers // at the desired positions RtfHeaderFooterGroup footer = new RtfHeaderFooterGroup(); footer.setHeaderFooter(new RtfHeaderFooter(titleFooter), RtfHeaderFooter.DISPLAY_FIRST_PAGE); footer.setHeaderFooter(new RtfHeaderFooter(leftFooter), RtfHeaderFooter.DISPLAY_LEFT_PAGES); footer.setHeaderFooter(new RtfHeaderFooter(rightFooter), RtfHeaderFooter.DISPLAY_RIGHT_PAGES); // Set the document footer document.setFooter(footer); document.open(); document.add(new Paragraph("This document has headers and footers created" + " using the RtfHeaderFooterGroup class.\n\n")); // Add some content, so that the different headers / footers show up. for (int i = 0; i < 300; i++) { document.add(new Paragraph("Just a bit of content so that the headers become visible.")); } document.close(); }