Hi,
I have seen this example from the book. I am not sure sure what I missed.
In this example we dont have any PdfPTableEvent as well as PdfpCellEvent
both of which sets the background canvas.
I noticed that cell events get called before table events. So is it a
possibility, that the table background is "overlapping" the cell background
settings.

Thanks you for your patience.

Subhro.


2009/3/18 1T3XT info <[email protected]>

> Subhrajyoti Moitra wrote:
>
>> Hi,
>> I have a table with a custom image background. I am using PdfpTableEvent
>> to set this background.
>> The header cells of this table uses some other color, different from the
>> table background.
>> To set this background color, I am using PdfPCellEvent.
>>
>> PdfPCellEvent docHistTableHeaderCellEvent=new PdfPCellEvent(){
>>                public void cellLayout(PdfPCell cell, Rectangle
>> rect,PdfContentByte[] canvases) {
>>                    PdfContentByte
>> backCb=canvases[PdfPTable.BACKGROUNDCANVAS];
>>                    backCb.setRGBColorFill(0xFF, 0x00, 0x00);
>>                    backCb.rectangle(rect.getLeft(), rect.getBottom(),20,
>> 10);
>>                    backCb.fill();
>>                    backCb.resetRGBColorFill();
>>                }
>>            };
>>
>> This seems to be setting the red color rectangles, in a fixed location
>> (top of the table) and not adapting to the table headers positions.
>> Please advice. Any pointers to similar issues will be highly appreciated.
>> Thanks a lot in advance!
>>
>
> Attached is an example with cell events in the header.
> I don't see any problem, do you?
> --
> This answer is provided by 1T3XT BVBA
> http://www.1t3xt.com/ - http://www.1t3xt.info
>
> import java.awt.Color;
> import java.io.FileOutputStream;
> import java.io.IOException;
>
> import com.lowagie.text.Document;
> import com.lowagie.text.DocumentException;
> import com.lowagie.text.Element;
> import com.lowagie.text.Font;
> import com.lowagie.text.FontFactory;
> import com.lowagie.text.PageSize;
> import com.lowagie.text.Phrase;
> import com.lowagie.text.Rectangle;
> import com.lowagie.text.pdf.PdfContentByte;
> import com.lowagie.text.pdf.PdfPCell;
> import com.lowagie.text.pdf.PdfPCellEvent;
> import com.lowagie.text.pdf.PdfPTable;
> import com.lowagie.text.pdf.PdfWriter;
>
>
> public class HeaderCellEvents {
>
>        class Ellipse implements PdfPCellEvent {
>                /**
>                 * @see
> com.lowagie.text.pdf.PdfPCellEvent#cellLayout(com.lowagie.text.pdf.PdfPCell,
>                 *      com.lowagie.text.Rectangle,
>                 *      com.lowagie.text.pdf.PdfContentByte[])
>                 */
>                public void cellLayout(PdfPCell cell, Rectangle rect,
>                                PdfContentByte[] canvas) {
>                        PdfContentByte cb =
> canvas[PdfPTable.BACKGROUNDCANVAS];
>                        cb.setRGBColorFill(0xFF, 0x00, 0x00);
>                        cb.ellipse(rect.getLeft(), rect.getBottom(),
> rect.getRight(), rect.getTop());
>                        cb.fill();
>                        cb.resetRGBColorFill();
>                }
>        }
>
>        public static void main(String[] args) {
>                // step 1: creation of a document-object
>                Document document = new Document(PageSize.A4.rotate());
>                try {
>                        // step 2:
>                        // we create a writer
>                        PdfWriter.getInstance(
>                        // that listens to the document
>                                        document,
>                                        // and directs a PDF-stream to a
> file
>                                        new
> FileOutputStream("headercellevents.pdf"));
>                        // step 3: we open the document
>                        document.open();
>                        // step 4: we add a table to the document
>                        PdfPTable datatable = new PdfPTable(10);
>                        int headerwidths[] = { 10, 24, 12, 12, 7, 7, 7, 7,
> 7, 7 };
>                        datatable.setWidths(headerwidths);
>                        datatable.setWidthPercentage(100);
>                        datatable.getDefaultCell().setPadding(5);
>
>                        // The header starts with a cell that spans 10
> columns
>                        PdfPCell cell = new PdfPCell(new Phrase(
>                                        "Administration - System Users
> Report", FontFactory
>
>  .getFont(FontFactory.HELVETICA, 24, Font.BOLD)));
>                        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
>                        cell.setBorderWidth(2);
>                        cell.setColspan(10);
>                        cell.setBackgroundColor(new Color(0xC0, 0xC0,
> 0xC0));
>                        cell.setUseDescender(true);
>                        cell.setCellEvent(new HeaderCellEvents().new
> Ellipse());
>                        datatable.addCell(cell);
>                        // We need 4 cells with rowspan 2
>                        datatable.getDefaultCell().setBorderWidth(2);
>                        datatable.getDefaultCell().setHorizontalAlignment(
>                                        Element.ALIGN_CENTER);
>                        datatable.addCell("User Id");
>                        datatable.addCell("Name\nAddress");
>                        datatable.addCell("Company");
>                        datatable.addCell("Department");
>                        // we use a nested table to fake this
>                        PdfPTable permissions = new PdfPTable(6);
>                        permissions.getDefaultCell().setBorderWidth(2);
>                        permissions.getDefaultCell().setHorizontalAlignment(
>                                        Element.ALIGN_CENTER);
>                        permissions.getDefaultCell().setColspan(6);
>                        permissions.addCell("Permissions");
>                        permissions.getDefaultCell().setColspan(1);
>                        permissions.addCell("Admin");
>                        permissions.addCell("Data");
>                        permissions.addCell("Expl");
>                        permissions.addCell("Prod");
>                        permissions.addCell("Proj");
>                        permissions.addCell("Online");
>                        PdfPCell permission = new PdfPCell(permissions);
>                        permission.setColspan(6);
>                        datatable.addCell(permission);
>                        // this is the end of the table header
>                        // as far as PdfPTable is concerned there are 2 rows
> in the header
>                        datatable.setHeaderRows(2);
>
>                        // we add the data to the table
>                        datatable.getDefaultCell().setBorderWidth(1);
>                        for (int i = 1; i < 30; i++) {
>
>  datatable.getDefaultCell().setHorizontalAlignment(
>                                                Element.ALIGN_LEFT);
>                                datatable.addCell("myUserId");
>                                datatable
>                                                .addCell("Somebody with a
> very, very, very, very, very, very, very, very, very, very, very, very,
> very, very, very, very, very, very, very, very, very, very, very, very,
> very, very, very, very, very, very, very long long name");
>                                datatable.addCell("No Name Company");
>                                datatable.addCell("D" + i);
>
>  datatable.getDefaultCell().setHorizontalAlignment(
>                                                Element.ALIGN_CENTER);
>                                for (int j = 0; j < 6; j++)
>                                        datatable.addCell(Math.random() > .5
> ? "Yes" : "No");
>                        }
>                        datatable.setSplitLate(false);
>                        document.add(datatable);
>                } catch (DocumentException de) {
>                        System.err.println(de.getMessage());
>                } catch (IOException ioe) {
>                        System.err.println(ioe.getMessage());
>                }
>
>                // step 5: we close the document
>                document.close();
>        }
> }
>
>
> ------------------------------------------------------------------------------
> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
> easily build your RIAs with Flex Builder, the Eclipse(TM)based development
> software that enables intelligent coding and step-through debugging.
> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
> _______________________________________________
> iText-questions mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/itext-questions
>
> Buy the iText book: http://www.1t3xt.com/docs/book.php
>
------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions

Buy the iText book: http://www.1t3xt.com/docs/book.php

Reply via email to