Michael Caletka wrote:

As far as I can see in the examples of the tutorial, you always have to give the Column a rectangle in absolute positions. I don't have the positions beforehand,

???

so I can't define a rectangle of positions for adding my paragraphs, chunks and tables in.

When you use document.add, you have IMPLICITELY defined such a rectangle.
Document document = new Document();
is shorthand for:
Document document = new Document(PageSize.A4, 36, 36, 36, 36);
PageSize.A4 is a Rectangle object, subtract the margins (36) and you
have the definition of your 'simple column' needed for method setSimpleColumn.

Perhaps, if you still got some patience left you could get me a sample-code for just how to define a ColumnText object right? I want it to fit on a A4-page with margins 60 for left and right, and 50 for top and bottom. I'm sorry, if I give the impression, that I'm just stupid, but somehow I really don't see how it is done.

My publisher will probably shoot me for all the book examples
I am giving away for free, but here it goes. In attachment, you
find a text file with some lines. Each line is read into a Phrase
and added to a ColumnText.
If the Phrase fits the page, the column is written; if not, a new page
is triggered. Some variables were added and sent to the System.out
to show you what happens.

Document document = new Document(PageSize.A4);
try {
 PdfWriter writer = PdfWriter.getInstance(document,
   new FileOutputStream("column_control.pdf"));
   document.open();
   PdfContentByte cb = writer.getDirectContent();
BufferedReader reader = new BufferedReader(new FileReader("caesar.txt"));
   ColumnText ct = new ColumnText(cb);
   float pos;
   String line;
   Phrase p;
   int status = ColumnText.START_COLUMN;
ct.setSimpleColumn(36, 36, PageSize.A4.width() - 36, PageSize.A4.height() - 36, 18, Element.ALIGN_JUSTIFIED);
   while ((line = reader.readLine()) != null) {
     p = new Phrase(line);
     ct.addText(p);
     pos = ct.getYLine();
     status = ct.go(true);
System.err.println("Lines written:" + ct.getLinesWritten() + " Y-position: " + pos + " - " + ct.getYLine());
     if (!ColumnText.hasMoreText(status)) {
       ct.addText(p);
       ct.setYLine(pos);
       ct.go(false);
     }
     else {
       document.newPage();
       ct.setText(p);
       ct.setYLine(PageSize.A4.height() - 36);
       ct.go();
     }
   }
   reader.close();
 } catch (DocumentException de) {
   System.err.println(de.getMessage());
 } catch (IOException ioe) {
   System.err.println(ioe.getMessage());
 }
document.close();
}

In your example, you MUST NOT use setText, but addElement.
This example is a 'text mode' example; you need 'composite mode'.
br,
Bruno

GALLIA est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam 
Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.  Hi 
omnes lingua, institutis, legibus inter se differunt. Gallos ab Aquitanis 
Garumna flumen, a Belgis Matrona et Sequana dividit. Horum omnium fortissimi 
sunt Belgae, propterea quod a cultu atque humanitate provinciae longissime 
absunt, minimeque ad eos mercatores saepe commeant atque ea quae ad 
effeminandos animos pertinent important, proximique sunt Germanis, qui trans 
Rhenum incolunt, quibuscum continenter bellum gerunt.  Qua de causa Helvetii 
quoque reliquos Gallos virtute praecedunt, quod fere cotidianis proeliis cum 
Germanis contendunt, cum aut suis finibus eos prohibent aut ipsi in eorum 
finibus bellum gerunt.
[Eorum una, pars, quam Gallos obtinere dictum est, initium capit a flumine 
Rhodano, continetur Garumna flumine, Oceano, finibus Belgarum, attingit etiam 
ab Sequanis et Helvetiis flumen Rhenum, vergit ad septentriones. Belgae ab 
extremis Galliae finibus oriuntur, pertinent ad inferiorem partem fluminis 
Rheni, spectant in septentrionem et orientem solem. Aquitania a Garumna flumine 
ad Pyrenaeos montes et eam partem Oceani quae est ad Hispaniam pertinet; 
spectat inter occasum solis et septentriones.]
Apud Helvetios longe nobilissimus fuit et ditissimus Orgetorix.  Is M. Messala, 
[et P.] M.  Pisone consulibus regni cupiditate inductus coniurationem 
nobilitatis fecit et civitati persuasit ut de finibus suis cum omnibus copiis 
exirent:  perfacile esse, cum virtute omnibus praestarent, totius Galliae 
imperio potiri.  Id hoc facilius iis persuasit, quod undique loci natura 
Helvetii continentur:  una ex parte flumine Rheno latissimo atque altissimo, 
qui agrum Helvetium a Germanis dividit; altera ex parte monte Iura altissimo, 
qui est inter Sequanos et Helvetios; tertia lacu Lemanno et flumine Rhodano, 
qui provinciam nostram ab Helvetiis dividit.  His rebus fiebat ut et minus late 
vagarentur et minus facile finitimis bellum inferre possent; qua ex parte 
homines bellandi cupidi magno dolore adficiebantur.  Pro multitudine autem 
hominum et pro gloria belli atque fortitudinis angustos se fines habere 
arbitrabantur, qui in longitudinem milia passuum CCXL, in latitudinem CLXXX 
patebant.
His rebus adducti et auctoritate Orgetorigis permoti constituerunt ea quae ad 
proficiscendum pertinerent comparare, iumentorum et carrorum quam maximum 
numerum coemere, sementes quam maximas facere, ut in itinere copia frumenti 
suppeteret, cum proximis civitatibus pacem et amicitiam confirmare.  Ad eas res 
conficiendas biennium sibi satis esse duxerunt; in tertium annum profectionem 
lege confirmant.  Ad eas res conficiendas Orgetorix deligitur.  Is sibi 
legationem ad civitates suscipit.  In eo itinere persuadet Castico, 
Catamantaloedis filio, Sequano, cuius pater regnum in Sequanis multos annos 
obtinuerat et a senatu populi Romani amicus appellatus erat, ut regnum in 
civitate sua occuparet, quod pater ante habuerit; itemque Dumnorigi Haeduo, 
fratri Diviciaci, qui eo tempore principatum in civitate obtinebat ac maxime 
plebi acceptus erat, ut idem conaretur persuadet eique filiam suam in 
matrimonium dat.  Perfacile factu esse illis probat conata perficere, propterea 
quod ipse suae civitatis imperium obtenturus esset:  non esse dubium quin 
totius Galliae plurimum Helvetii possent; se suis copiis suoque exercitu illis 
regna conciliaturum confirmat.  Hac oratione adducti inter se fidem et ius 
iurandum dant et regno occupato per tres potentissimos ac firmissimos populos 
totius Galliae sese potiri posse sperant.
Ea res est Helvetiis per indicium enuntiata.  Moribus suis Orgetoricem ex 
vinculis causam dicere coegerunt; damnatum poenam sequi oportebat, ut igni 
cremaretur.  Die constituta causae dictionis Orgetorix ad iudicium omnem suam 
familiam, ad hominum milia decem, undique coegit, et omnes clientes 
obaeratosque suos, quorum magnum numerum habebat, eodem conduxit; per eos ne 
causam diceret se eripuit.  Cum civitas ob eam rem incitata armis ius suum 
exequi conaretur multitudinemque hominum ex agris magistratus cogerent, 
Orgetorix mortuus est; neque abest suspicio, ut Helvetii arbitrantur, quin ipse 
sibi mortem consciverit.

Reply via email to