There is a FAQ entry on this that appears to advocate putting the entire contents of the file into a String and adding that to the document in a single Paragraph.
http://www.lowagie.com/iText/faq.html#preformattedtext -Matt --- " Alex, Ian" <[EMAIL PROTECTED]> wrote: > 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=line+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 __________________________________ Do you Yahoo!? Yahoo! Calendar - Free online calendar with sync to Outlook(TM). http://calendar.yahoo.com ------------------------------------------------------- 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