You need to set the Paragraph leading.

while ((line = reader.readLine()) != null) {
   Paragraph p = new Paragraph(line,font);
   p.setLeading(10);
   document.add(p);
}

Best Regards,
Paulo Soares

----- Original Message ----- 
From: " Alex, Ian" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, May 29, 2003 18:58
Subject: [iText-questions] Question about line height for paging


> I am having a problem with writing a Unix-created document to PDF using
> iText.   Unix output files don't use any fonts and there is minimal
> spacing
> between lines (using the lpr output).   My algorithm was to read each
> line
> in from the original file and then write it to PDF landscape document
> with
> the appropriate font (Courier) to preserve the alignment, just using
> code
> like this:
> 
> String line;
> PdfWriter.getInstance(document, new FileOutputStream(PDFname));
> BaseFont bf1 = BaseFont.createFont("Courier", BaseFont.WINANSI,
> BaseFont.EMBEDDED);
> bf1.setDirectTextToByte(true);
> Font font = new Font(bf1, (float)10, Font.NORMAL);
> Document document = new Document(PageSize.A4.rotate(), 0, 0, 0, 0);
> document.open();
> document.setLinesRequired(56);
> BufferedReader reader = new BufferedReader(new FileReader(inFile));
> while ((line = reader.readLine()) != null) { 
>    document.add(new Paragraph(line,font));
> }
> 
> This didn't work since  each *line* occupied a large height (twice the
> size
> as the text height regardless of font).  I wanted to adjust this but
> couldn't.   I saw a class in the API called com.lowagie.text.pdf.PdfLine
> that has a height() method but no "get" methods to adjust the height.
> Furthermore, there is no binding between PdfLine objects and the
> Document
> class.
> 
> Next I tried mapping each page to a table so that all the cells would
> "fit".
> The number of lines in each page of the unix file was 56.    My code for
> this looked something like:
> 
> String line;
> cnt=1;
> Document document = new Document(PageSize.A4.rotate(), 0, 0, 0, 0);
> document.open();
> BufferedReader reader = new BufferedReader(new FileReader(inFile));
> Table datatable;
> datatable = new Table(1);
> datatable.setWidth(160);
> datatable.setDefaultCellBorderWidth(0);
> atatable.setDefaultHorizontalAlignment(0);
> datatable.setDefaultRowspan(1);
> datatable.setSpaceBetweenCells(0);
> datatable.setBorderWidth(0);
> datatable.setCellsFitPage(true);
> while ((line = reader.readLine()) != null) { 
>     BaseFont bf1 = BaseFont.createFont("Courier", BaseFont.WINANSI,
> BaseFont.EMBEDDED);
>     bf1.setDirectTextToByte(true);
>     cell = new Cell(new Phrase(padStringWidth(line, 132), new Font(bf1,
> 10,
> Font.COURIER)));
>     cell.setHorizontalAlignment(Element.ALIGN_CENTER);
>     cell.setVerticalAlignment(Element.ALIGN_TOP);
>     cell.setColspan(1);
>     cell.setRowspan(1);
>     cell.setNoWrap(true);
>    // cell.setBorder(Rectangle.NO_BORDER);
>     cell.setBorderColor(java.awt.Color.gray);
>     datatable.addCell(cell);
>     if (cnt == 56) {
>        document.add(datatable);
>        document.newPage();
>        datatable = new Table(1);
>        datatable.setWidth(160);
>        datatable.setDefaultCellBorderWidth(0);
>        datatable.setDefaultHorizontalAlignment(0);
>        datatable.setDefaultRowspan(1);
>        datatable.setBorderWidth(0);
>        datatable.setSpaceBetweenCells(0);
>        datatable.setCellsFitPage(true);
>        cnt=0;
>      }
>      cnt++;
> }
> 
> Please note that I used cell.setBorderColor(java.awt.Color.gray) in
> order to
> display the cell boundaries.   In experimenting with different font
> sizes, I
> noted that just as was the case with just lines, the text height only
> occupied half the cell (the cell size increased proportionally along
> with
> the font - just as with lines).  I used various suggestions I saw
> previously
> such as calling datatable.setBorderWidth(0),
> datatable.setSpaceBetweenCells(0)  datatable.setCellsFitPage(true) and
> none
> of these worked. 
> 
> The most promising suggestion I saw was from
> http://article.gmane.org/gmane.comp.java.lib.itext.general/1225/match=li
> ne+h
> eight which suggested using the height method of the Cell class
> (inherited
> from Rectangle).   height() is a "get" method so I instead thought of
> working with the setBottom() & setTop() methods (inherited by Cell from
> Rectangle).  It compiled OK, but I got the run-time error: 
> 
> java.lang.UnsupportedOperationException: Dimensions of a Cell are
> attributed
> aut
> omagically. See the FAQ.
>         at com.lowagie.text.Cell.setBottom(Unknown Source)
>         at TestPDF.putPDF(TestPDF.java:158)
>         at TestPDF.run(TestPDF.java:28)
>         at TestPDF.main(TestPDF.java:17)
> 
> Could you give me some suggestions as to how to adjust my application so
> that I can reduce the height of a line (or cell) holding text.
> 
> Thanks for your attention.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> -------------------------------------------------------
> This SF.net email is sponsored by: eBay
> Get office equipment for less on eBay!
> http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5
> _______________________________________________
> iText-questions mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/itext-questions
> 



-------------------------------------------------------
This SF.net email is sponsored by: eBay
Get office equipment for less on eBay!
http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5
_______________________________________________
iText-questions mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/itext-questions

Reply via email to