# Probleme beim Umstellen von iText 1.4.4 auf Version 2.1.2



## dirty-mg (25. Jun 2008)

Hallo liebes Forum,

bis neulich benutzte ich die iText Version 1.4.4. Nun wollte ich mein Projekt umstellen auf iText 2.1.2.
Dabei trat folgendes Problem auf:
Ich erzeuge mit iText eine Rtf-Datei mit Tabellen usw. Bei Version 1.4.4 ist alles normal. Bei iText 2.1.2 gibt es die Klasse "RtfWriter" nicht mehr (die war in 1.4.4 schon als "deprecated" markiert). Wenn ich die neue Klasse "RtfWriter2" verwende, aber ansonsten nix am Code verändere, lässt sich das Projekt ohne Probleme kompilieren und läuft auch. Allerdings ist der Zeilenabstand nun größer geworden. Ich habe Texte in Tabellen, die mit "\n" umgebrochen sind. 
Nun zeigt mit Word unter "Absatz" folgenden Zeilenabstand an:

iTest 1.4.4 (Zeilenabstand: Einfach)






iText 2.1.2 (Zeilenabstand: Mindestens 16pt)





Hier noch ein wenig Code:

```
Table table = new Table(1);
    table.setBorder(Rectangle.NO_BORDER);
    table.setTableFitsPage(true);
    table.setWidths(new int[] {52, 12, 12, 12, 12});

    Cell cell = new Cell(new Phrase("Hier steht der Text der ersten Zeile\nund hier der Text der zweiten Zeile",
                                       FontFactory.getFont(Tools.get_bold_font(),
                                                           Tools.STANDARD_FONTSIZE, com.lowagie.text.Font.BOLD)));
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    cell.setBorder(Rectangle.NO_BORDER);
    table.addCell(cell);
```

Hat jemand schon Erfahrungen damit gemacht oder Lösungsansätze?

Vielen Dank
Marcus


----------



## dirty-mg (25. Jun 2008)

Oder kennt jemand ein entsprechendes iText Forum? Am besten ein deutsches?


----------



## Atze (25. Jun 2008)

mit setLeading() kannst du den zeilenabstand doch selbst setzen
standard ist 1.5 x schriftgröße


----------



## dirty-mg (26. Jun 2008)

Hallo,

leider hilft setLeading(float leading) nicht wirklich.
Hier ist mal ein Beispiel:


```
com.lowagie.text.Document document = new com.lowagie.text.Document();
String doc1 = "RtfWriter.rtf";
String doc2 = "RtfWriter2.rtf";
com.lowagie.text.rtf.RtfWriter.getInstance(document, new FileOutputStream(doc1));
com.lowagie.text.rtf.RtfWriter2.getInstance(document, new FileOutputStream(doc2));
document.open();
                        
com.lowagie.text.Table table = new com.lowagie.text.Table(1);
table.setBorder(com.lowagie.text.Rectangle.NO_BORDER);
table.setWidth(90);
table.setTableFitsPage(true);
                       
String text = "Das ist die erste Zeile\ndas ist die zweite Zeile";
                        
com.lowagie.text.Cell cell = new com.lowagie.text.Cell(new com.lowagie.text.Phrase(text,
                                com.lowagie.text.FontFactory.getFont("Arial", 11, com.lowagie.text.Font.NORMAL)));
cell.setHorizontalAlignment(com.lowagie.text.Element.ALIGN_CENTER);
cell.setBorder(com.lowagie.text.Rectangle.NO_BORDER);
cell.setLeading(1.5f * 11);
table.addCell(cell);
                        
document.add(table);
                       
document.close();
                        
Runtime.getRuntime().exec("RUNDLL32 url.dll,FileProtocolHandler " + doc1);
Runtime.getRuntime().exec("RUNDLL32 url.dll,FileProtocolHandler " + doc2);
```

Es werden 2 Dokumente erzeugt. Einfach mal den Text markieren und unter "Absatz" nachsehen. Da steht dann für das 2. Dokument "Zeilenabstand mindestens 16pt" drin und für das 1. Dokument "Zeilenabstand einfach".

mfg
Marcus


----------



## dirty-mg (27. Jun 2008)

Das Problem lässt sich folgendermaßen lösen: 
Anstatt der Phrase verwendet man in den Zellen Paragraph und setzt kein "Leading". Dann gings ;-)


----------



## Atze (27. Jun 2008)

du setzt ja leading auch praktisch auf 16, oder nicht? 

1.5 + 11 = 16,5

probiers doch mal mit setLeading(11.0f)


----------

