Using setFirstLineIndent() and adding a tabulator Chunk to create a hanging
indent causes the first line to wrap to early. I think the bug is caused by
a missing line in PdfLine.setExtraIndent(float extra).
This is how I think it should be.

    void setExtraIndent(float extra) {
       left += extra;
       width -= extra;
       // Add this line
       originalWidth -= extra;
    }

The following Java program will demonstrate the problem:

import java.io.*;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
import com.itextpdf.text.pdf.draw.*;

public class Bug
{
   public static void main ( String[] args )
   {
      try
      {
         Document document = new Document(PageSize.A4, 72.0f, 72.0f, 72.0f,
72.0f);
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         PdfWriter pdfWriter = PdfWriter.getInstance(document, baos);
         document.open();

         // Hanging indent, line wraps to early
         Paragraph currentParagraph = new Paragraph();
         currentParagraph.setIndentationLeft(120.0f);
         currentParagraph.setFirstLineIndent(-120.0f);
         String text = "The quick fox jumped over the lazy dog. ";
         currentParagraph.add(new Chunk("First text"));
         Chunk newTab = new Chunk(new VerticalPositionMark(), 120.0f);
         currentParagraph.add(newTab);
         currentParagraph.add(new Chunk(text));
         currentParagraph.add(new Chunk(text));
         currentParagraph.add(new Chunk(text));
         currentParagraph.add(new Chunk(text));
         currentParagraph.add(new Chunk(text));
         document.add(currentParagraph);

         currentParagraph = new Paragraph();
         currentParagraph.add(new Chunk(" "));
         document.add(currentParagraph);

         // Indented with TAB, line wraps to late
         currentParagraph = new Paragraph();
         currentParagraph.setIndentationLeft(0.0f);
         currentParagraph.setFirstLineIndent(120.0f);
         currentParagraph.add(new Chunk("First text"));
         Chunk nextTab = new Chunk(new VerticalPositionMark(), 220.0f);
         currentParagraph.add(nextTab);
         currentParagraph.add(new Chunk(text));
         currentParagraph.add(new Chunk(text));
         currentParagraph.add(new Chunk(text));
         currentParagraph.add(new Chunk(text));
         currentParagraph.add(new Chunk(text));
         document.add(currentParagraph);

         document.close();
         byte[] bytes = baos.toByteArray();
         File file = new File("hanging.pdf");
         OutputStream os = new BufferedOutputStream(new
FileOutputStream(file));
         os.write(bytes);
         os.flush();
         os.close();
      }
      catch (DocumentException e)
      {
         e.printStackTrace();
      }
      catch (FileNotFoundException e)
      {
         e.printStackTrace();
      }
      catch (IOException e)
      {
         e.printStackTrace();
      }
   }

}


--
View this message in context: 
http://itext-general.2136553.n4.nabble.com/Hanging-indents-bug-report-tp3873928p3873928.html
Sent from the iText - General mailing list archive at Nabble.com.

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
_______________________________________________
iText-questions mailing list
iText-questions@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/itext-questions

iText(R) is a registered trademark of 1T3XT BVBA.
Many questions posted to this list can (and will) be answered with a reference 
to the iText book: http://www.itextpdf.com/book/
Please check the keywords list before you ask for examples: 
http://itextpdf.com/themes/keywords.php

Reply via email to