Are you sure you know what right and center alignment means?

Best Regards,
Paulo Soares

> -----Original Message-----
> From: Kalpana Sundaram [SMTP:[EMAIL PROTECTED]
> Sent: Friday, November 21, 2003 1:05
> To:   [EMAIL PROTECTED]
> Subject:      [iText-questions] Important question about ColumnText
> 
> Hi,
>  
> I am a Java/J2EE developer in Parsippany, NJ. I have been asked to use
> iText to generate and process PDF files for an upcoming project. One of
> the requirements of this project is to place column text at specified X1
> (lower left X corner), Y1 (lower left Y corner), X2 (upper right X corner)
> and Y2 (upper right Y corner) positions on a PDF file and to align this
> column at a position specified by the client (either left, right or
> center). The parameters for this task (X1, Y1, X2 and Y2 coordinates, type
> of column text to right, type of alignment, etc.) are specified in a
> property file.
>  
> In this case, I am trying to write a column text that starts at X1
> position 44 and Y1 position 45 and ending at X2 position 123 and Y2
> position 67. I find that if the column text is left-aligned, then it
> starts at the correct X1 position. However, if its alignment is changed to
> Right or Centered, then its X1 position gets messed up, i.e., it starts at
> an X1 position that is further to the right from the leftmost side of the
> PDF page (e.g., in this case, it will start at position 74 if it is
> center-aligned and at position 124 if it is right-aligned). Is there any
> way to change the alignment of column text while making it start from the
> correct X1 position at the same time?
>  
> The following is the code I am using to perform the above-mentioned task:
>   public static void addColumnText(Document document, Hashtable htDetail,
> Hashtable htHeader, PdfContentByte cb)
>   throws Exception
>   {
>     Font textFont = pdfUtils.getFont(htDetail, htHeader);
>     String text = (String) htDetail.get("TEXT");
>      int max_chars = 0;
>     if (htDetail.containsKey("MAX_CHARS") && !stringUtils.isNull((String)
> htDetail.get("MAX_CHARS"))) {
>       max_chars = Integer.parseInt((String) htDetail.get("MAX_CHARS"));
>     }
>     if (max_chars > 0 && max_chars < text.length())
>       text = text.substring(0, max_chars);
>     String style = null;
>     if (htDetail.containsKey("STYLE") && !stringUtils.isNull((String)
> htDetail.get("STYLE"))) {
>       style = (String) htDetail.get("STYLE");
>       if (style.equals("B"))
>         textFont.setStyle("bold");
>       else if (style.equals("I"))
>         textFont.setStyle("italic");
>       else if (style.equals("U"))
>         textFont.equals("underline");
>     }
>     if (!stringUtils.isNull(style))
>       text = "<" + style + ">" + text + "</" + style + ">";
>     htDetail.put("TEXT", text);
>     text = pdfUtils.replaceTextWithEquivAsciiChar(text, htDetail);
>     htDetail.put("TEXT", text);
>     float pageHeight = document.getPageSize().height();
>     ArrayList alStrings = new ArrayList();
>     ArrayList alFontStyles = new ArrayList();
>     Paragraph para = new Paragraph();
>     stringUtils.parseHtml(text, alStrings, alFontStyles);
>     for (int i = 0; i < alStrings.size(); i++) {
>       String currStr = (String) alStrings.get(i);
>       String currFontStyle = (String) alFontStyles.get(i);
>       Font textFont2 = new Font(textFont.getBaseFont(), textFont.size());
>       textFont2.setColor(textFont.color());
>       textFont2.setStyle(currFontStyle);
>       Chunk chunk = new Chunk(currStr);
>       chunk.setFont(textFont2);
>       para.add(chunk);
>     }
>     String justify = (String) htDetail.get("JUSTIFY");
>     int justifyVal = 0;
>     if (justify.equals("L"))
>       justifyVal = Element.ALIGN_LEFT;
>     else if (justify.equals("R"))
>       justifyVal = Element.ALIGN_RIGHT;
>     else {
>       justifyVal = Element.ALIGN_CENTER;
>     }
>     float fFromX = Float.parseFloat((String) htDetail.get("X1"));
>     float fToX = Float.parseFloat((String) htDetail.get("X2")) +
> textFont.size();
>     float fFromY = pageHeight -
>                    Float.parseFloat((String) htDetail.get("Y1")) -
> textFont.size() + para.leading();
>     float fToY = pageHeight -
>                    Float.parseFloat((String) htDetail.get("Y2")) -
> textFont.size() + para.leading();
>     ColumnText ct = new ColumnText(cb);
>     float[] right = {fFromX, fFromX};
>     float[] left = {fToX, fToX};
>     //ct.setAlignment(justifyVal);
>     ct.setYLine(fToY);
>     ct.addText(para);
>     int status = 0;
>     int column = 0;
>     while((status & ColumnText.NO_MORE_TEXT) == 0) {
>       ct.setSimpleColumn(right[column], fFromY,
>       left[column], -fToY, para.leading(), justifyVal);
>       status = ct.go();
>       boolean checkForEndOfPage = false;
>       if ((status & ColumnText.NO_MORE_COLUMN) != 0) {
>         checkForEndOfPage = true;
>         if (checkForEndOfPage)
>         {
>           break;
>         }
>       }
>     }
>   }
>  
> --------------------------------------------------------------------------
> -------
>  
> Thanks,
>  
> Kalpana
> 
>   _____  
> 
> Do you Yahoo!?
> Free Pop-Up Blocker - Get it now
> <http://us.rd.yahoo.com/slv/mailtag/*http://companion.yahoo.com/>


-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
_______________________________________________
iText-questions mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/itext-questions

Reply via email to